Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Problema admitere!  (Citit de 2083 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
shift97
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 5



Vezi Profilul
« : Aprilie 06, 2015, 14:11:13 »

Subiectul 3
Se citeşte de la tastatură o matrice pătratică A cu n linii și n coloane conținȃnd
numere naturale (3 ≤ n ≤ 50, 1 ≤ ai,j ≤ 20000). Scrieţi un program care
determină și apoi tipărește şirul X, conținȃnd ȋn ordine descrescătoare,
numerele „superprime” distincte, care apar ȋn triunghiul stȃng sau cel drept al
matricei A. Șirul X se va construi direct ordonat, fără a face ordonarea
ulterioară. Ȋn cazul ȋn care șirul X este vid, se va tipări mesajul „Șirul este vid”.
Un număr se numește „superprim” dacă toate prefixele sale sunt numere prime
(de ex. 239 este „superprim” deoarece 2, 23 și 239 sunt prime, dar numărul 241
nu este „superprim” deoarece 24 nu este prim).
Se vor scrie subprograme pentru:
a). citirea unei matrici pătratice
b). tipărirea unui şir
c). verificarea dacă un număr este prim
d). verificarea dacă un număr este „superprim”
e). inserarea unei valori ȋntr-un șir ordonat descrescător
f). construirea șirului X.

Nu imi afiseaza rezultatul, nu imi pot da seama unde se blocheaza.

program testare;
uses crt;
type mat=array[1..50,1..50] of integer;
type vect=array[1..200] of integer;
var a:mat;
    x:vect;
    n,k:integer;

procedure citire(a:mat;n:integer);
var i,j:integer;
  begin
    for i:=1 to n do
        for j:=1 to n do
            begin
                 write('a[',i,',',j,']= '); readln(a[i,j]);

            end;end;

procedure tiparire(x:vect;n:integer);
var i:integer;
begin
    if n=0 then writeln ('Sirul este vid')
           else
             for i:=1 to n do
                 write(x, ',');
             writeln;
end;

function test_nr_prim(n:integer):boolean;
var d:integer;
    e_prim:boolean;
begin
  e_prim:=true;
  if (n=1) then e_prim:=false;
  for d:=2 to n-1  do
      if n mod d=0 then
         e_prim:=false;
  test_nr_prim:=e_prim;

end;

function esuperprim(n:integer):boolean;
var super:boolean;
begin
  super:=true;
  while (n<>0) do  begin
        if (test_nr_prim(n)=false) then super:=false;
    n:=n div 10;
  end;
  esuperprim:=super;
end;

procedure inserare_ordonata(x:vect;n:integer;v:integer);
var i,pozitie:integer;
    begin
      pozitie:=1;
      while (x[pozitie]>v) and (pozitie<=n) do
            pozitie:=pozitie+1;
      for i:=pozitie to n do
          x[i+1]:=x;
      x[pozitie]:=v;
      n:=n+1;
      end;

function apartine(x:vect;n:integer;v:integer):boolean;
var gasit:boolean;
    i:integer;
begin
  gasit:=false;
    while i<=n do
        if x=v then gasit:=true;
    apartine:=gasit;
end;

procedure construire_sir(a:mat;n:integer;x:vect;var k:integer);
var i,j:integer;
    begin
      k:=0;
       for i:=1 to n do
           for j:=1 to n do
               if ((i>j) and (i+j<n+1)) or ((i<j) and (i+j>n+1)) then
                  if ((esuperprim(a[i,j])=true) and apartine(x,k,a[i,j])=false)
                     then begin
                       k:=k+1;
                       inserare_ordonata(x,k,a[i,j]);
                          end;

    end;



begin
  write ('Numarul de linii si coloane = ');readln(n);
  citire(a,n);
  construire_sir(a,n,x,k);
  tiparire(x,k);
  readln;
  end.
           
Memorat
mariusadam
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« Răspunde #1 : Aprilie 22, 2015, 09:02:59 »

Pai odata eu cred ca gresesti cand faci atribuirea x[i+1]:=x,trebuia x(i) in loc de x.Si alta chestie citeste si n in cadrul procedurii citire.Succes la simulare daca mergi !:)
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines