Observatie enunutul problemelor vezi in fisierul word
alege si tu 10 probleme cu vectori si matrici

 {Sa se scrie un program în limbajul Borland Pascal sau Borland C++ care sa descompuna
 un n (natural nenul) dat în suma de cel putin doua numere prime distincte. Daca 
problema nu are solutie, se va afisa un mesaj corespunzator }

  {var a,b,c:array[1..20] of integer;
    n,x,i,j,k:integer;
    begin
    write('n=');readln(n);
  for i:=1 to n do
    begin
    write('a[',i,']=');
    read(a[i]);
    end;
  write('x=');readln(x);
  j:=0;
  k:=0;
  for i:=1 to n do
    if a[i]0 do
      begin
        c:=x mod 10;
        inv:=inv*10+c;
        x:=x div 10;
      end;
     invers:=inv;
     end;

  begin
  for i:=100 to 999 do
      if prim(i) then
              begin
             inv1:=invers(i);
             if prim(inv1) then write(i,' ');
             end;
  end.


  {Se citesc de la tastatura un cuvânt si o litera. Sa se afiseze toate cuvintele care se 
obtin prin înlocuirea unei litere din cuvânt cu litera data. (Ex: pentru c=’TOC’ si l=’P’ se 
vor afisa ‘POC’,’TPC’,’TOP’).}

{var  c,lit:string;
       l:char;
       i:integer;
       begin
          write('c=');
          readln(c);
          write('l=');readln(l);
         for i:=1 to length(c) do
             begin
              lit:=c;
              delete(c,i,1);
              insert(l,c,i);
              writeln(c);
              c:=lit;
             end;
      end.
 }

 {1.	Sa se determine câte elemente prime se afla deasupra diagonalei principale a unei
 matrice cu n x n elemente naturale.  }

{ var a:array[1..10,1..10] of integer;
     n,i,j,k:integer;

   function prim(x:integer):boolean;
     var d:integer;
     begin
   if (x=0) or (x=1) then prim:=false
   else
  begin
        prim:=true;
        for d:=2 to trunc(sqrt(x)) do
         if x mod d=0 then prim:=false;
      end;
   end;
  begin

  write('n=');readln(n);
     for i:=1 to n do
     for j:=1 to n do
      begin
       write('a[',i,',',j,']=');
       read(a[i,j]);
      end;

   for i:=1 to n do
     begin
   for j:=1 to n do
     write(a[i,j],' ');
     writeln;
     end;

   k:=0;
    for i:=1 to n-1 do
     for j:=i+1 to n do
         if prim(a[i,j]) then k:=k+1;
         write('k=',k);
   end. }


  {Sorteaza un vector in modul urmator:afla maximul la stanga il sorteaza crescator la dreapta descrescator dupa aceea 
afiseaza maximul si vectorul astfel sortat}

  {type vector=array[1..20] of integer;
    var a:vector;
       n,max,i,j,k,x:integer;
         begin
         write('n=');readln(n);
         for i:=1 to n do
           begin
            write('a[',i,']=');
            read(a[i]);
           end;
        max:=a[1];
           k:=1;
         for i:=2 to n do
           if a[i]>max then begin
                        max:=a[i];
                       k:=i;
                       end;

       for i:=1 to k-2 do
          for j:=i+1 to k-1 do
          if a[i]>a[j] then
            begin
            x:=a[i];
            a[i]:=a[j];
            a[j]:=x;
            end;
      for i:=k+1 to n-1 do
          for j:=i+1 to n do
            if a[i]max then max:=nr;
 end;
write('cel mai mare nr natural este',max);
end.}

{Se citeste din fisierul bac.in un text pe mai multe linii. Scrieti in fisierul bac.out acelasi text
 dar in care se schimba literele mici cu litere mari si literele mari cu litere mici.
Ex
Bac.in
Tata Este la
PiatA?
Bac.out
TATA eSTE LA
pIATa?
}

{ var s:string;
  f,g:text;
  i:integer;
   begin
   assign(f,'bac.in');
   reset(f);
   assign(g,'bac.out');
   rewrite(g);

   while not eof(f) do
    begin
    readln(f,s);

 for i:=1 to length(s) do
  begin
if (s[i]>='a') and (s[i]<='z') then
        s[i]:=chr(ord(s[i])-32)

        else
        if (s[i]>='A') and (s[i]<='Z') then
       s[i]:=chr(ord(s[i])+32);
   end;
   writeln(g,s);
   end;
   close(f);
   close(g);
   end.

}
{Se citeste de la tastatura pentru n elevi informatii referitoare la nume, prenume, media, varsta. 
Sortati descrescator elevii dupa medie, 
iar daca au aceeasi medie se sorteaza crescator dupa nume.}
{ type elev=record
     nume,prenume:string;
     varsta:integer;
     media:real;
    end;
 var a:array[1..30] of elev;
    n,i,j:integer;
    x:elev;

    begin
    write('n=');readln(n);
    for i:=1 to n do
    with a[i] do
    begin
     write('dati numele: ');readln(nume);
     write('dati prenumele:');readln(prenume);
     write('dati varsta: ');readln(varsta);
     write('dati media: ');readln(media);
     end;
    for i:=1 to n-1 do
    for j:=i+1 to n do
      if a[i].mediaa[j].nume then
                          begin
                           x:=a[i];
                           a[i]:=a[j];
                           a[j]:=x;
                          end;
for i:=1 to n do
with a[i] do
  writeln(nume,'  ', media:6:2);
end.
}
{calcuzeaza si afiseaza numarul de numere prime dintr-o matrice}

{var a:array[1..10,1..10] of integer;
 n,m,i,j,k:integer;
 function prim(x:integer):boolean;
     var d:integer;
     begin
   if (x=0) or (x=1) then prim:=false
   else
       begin
        prim:=true;
        for d:=2 to trunc(sqrt(x)) do
         if x mod d=0 then prim:=false;
      end;
   end;
 begin

 write('n=');readln(n);
 write('m=');readln(m);
 for i:=1 to n do
  for j:=1 to m do
     begin
     write('a[',i,',',j,']=');
     readln(a[i,j]);
    end;

 for i:=1 to n do
   begin
   for j:=1 to m do
   write(a[i,j],' ');
   writeln;
  end;

for j:=1 to m do
   begin
     k:=0;
     for i:=1 to n do
       if prim(a[i,j])=false then k:=k+1;
    writeln('k=',k);
   end;
end.  }

{Scrie un numar intreg a in baza b}
{ var x:array[1..20] of integer;
     a:longint;
     b,i,j,r:integer;
    begin
     write('a=');readln(a);
     write('b=');readln(b);
  i:=0;
while a>0 do
     begin
      r:=a mod b;
      i:=i+1;
      x[i]:=r;
      a:=a div b;
     end;
 for j:=i downto 1 do write(x[j],' ');
 end.}

 {Se citeste de la tastatura numarul n. Generati in fisierul bac.out primele n numere prime, cate 10 pe fiecare linie.
Ex.
N=40
Bac.out
2 3 5 7 11 13 17 19 23 29
31 37 
}
{var n,i,k:integer;
    f:text;
 function prim(x:integer):boolean;
     var d:integer;
     begin
   if (x=0) or (x=1) then prim:=false
   else
       begin
        prim:=true;
        for d:=2 to trunc(sqrt(x)) do
         if x mod d=0 then prim:=false;
      end;
   end;

  begin
   write('n=');readln(n);
   assign(f,'bac.out');
   rewrite(f);
   i:=0;
   k:=2;
  repeat
  if prim(k)=true then begin
          write(f,k,' ');
          i:=i+1;
          if i mod 10=0 then writeln(f);
         end;

   k:=k+1;
 until  i=n;
 close(f);
 end.}

 {53.	Pentru un numar natural n citit de la tastatura (de cel mult 8 cifre) afisati al p-lea numar prim strict
 mai mare decat numarul.
Ex. N=20
P=4 
se va afisa 37
}
 {var n:longint;
  p,i,k,x:integer;

 function prim(x:integer):boolean;
     var d:integer;
     begin
   if (x=0) or (x=1) then prim:=false
   else
       begin
        prim:=true;
        for d:=2 to trunc(sqrt(x)) do
         if x mod d=0 then prim:=false;
      end;
   end;
  begin
  write('n=');readln(n);
  write('p=');readln(p);
  i:=n+1;
  k:=0;
  repeat
  if prim(i) then begin
                k:=k+1;
                x:=i;
                end;
  i:=i+1;
  until k=p;

 writeln('al',p,'-lea nr prim este ',x);
 end.}

 {54.	Sa se calculeze produsul primilor n termeni ai sirului lui Fibonacci definit astfel :f1=1, f2=1, fn=fn-1+fn-2 
pentru n>=3;
Ex : n=6, produsul este 240.
}
  {var n,f1,f2,f3,i:integer;
     p:longint;
   begin
   write('n='); readln(n);
  f1:=1;
   f2:=1;
   p:=1;
   for i:=3 to n do
     begin
     f3:=f1+f2;
     p:=p*f3;
     f1:=f2;
     f2:=f3;
    end;
write('produsul este ' ,p);
end.}

{Sa se determine toate numerele intregi de 3 cifre abc cu proprietatea ca numarul este egal cu suma cuburilor cifrelor.}

{ var i,a,b,c,x:integer;
   begin
  for i:=100 to 999 do
       begin
       x:=i;
       c:=x mod 10;
       x:=x div 10;
       b:=x mod 10;
       x:=x div 10;
       a:=x mod 10;
       if i=a*a*a+b*b*b+c*c*c then writeln(i,' ');
      end;
 end.}




 { 59.	Sa se afiseze primele n numere care au suma cifrelor ?m
Ex :n=10, m=4 : 1, 2, 3, 4, 10, 11, 12, 13, 20, 21.
}
 { var n,m,i,k,x,c,s:integer;
   begin
   write('n=');readln(n);
   write('m=');readln(m);
   i:=0;
   k:=1;
   repeat
    x:=k;
    s:=0;
   while x>0 do
    begin
    c:=x mod 10;
    s:=s+c;
    x:=x div 10;
    end;
    if s<=m then begin
              write(k,' ');
              i:=i+1;
              end;
    k:=k+1;
    until i=n;
    end.
 }
 {Sa se creeze un fisier text care contine toate numerele cuprinse intre a si b formate din cifre identice.
 Valorile lui a si b se citesc de la tastatura.
Ex : a=10, b=150 fisierul de iesire va arata astfel : 11, 22, 33, …, 99, 111 .
}
{ var a,b,n,c1,c2,m,i:integer;
ok:boolean;
 f:text;
 begin
  assign(f,'numere.txt');
  rewrite(f);
  write('a='); readln(a);
  write('b='); readln(b);
 for i:=a to b do
   begin
    n:=i;
    ok:=true;
    c1:=n mod 10;
    n:=n div 10;
  while n>0 do
   begin
   c2:=n mod 10;
   if c1<>c2 then ok:=false;
    c1:=c2;
    n:=n div 10;
   end;
  if ok then write(i,' ');
  end;
  end.
}
 {65.	Sa se scrie o functie denumita max2 care determina maximul a doua numere si 
dupa care sa se scrie o functie denumita max3 care determina maximul a 3 numere si foloseste functia max2}
{var a,b,c:integer;
 function max2(a,b:integer):integer;
  begin
  if a>=b then
   max2:=a
   else
   max2:=b;
   end;
   function max3(a,b,c:integer):integer;
   begin
   max3:=max2(max2(a,b),c);
   end;
  begin
   write('a=');readln(a);
   write('b=');readln(b);
   write('c=');readln(c);
   write('maximul este: ', max3(a,b,c));
 end.
 }
{Sa se scrie o procedura cu 2 parametrii, unul de tip tablou patratic de intregi, si celalalt de tip intreg. Cel 
de-al doilea parametru va trebui sa transmita procedurii numarul de linii si coloane si sa intoarca suma elementelor
 de deasupra diagonalei principale inclusiv aceasta.

}

{ type matrice=array[1..20,1..20] of integer;
   var m,i,j:integer;
   a:matrice;
  procedure suma(a:matrice;var n:integer);
  var i,j,s:integer;
     begin
     s:=0;
     for i:=1 to n do
      for j:=i to n do
      s:=s+a[i,j];
     n:=s;
    end;
 begin
 write('m=');readln(m);
 for i:=1 to m do
   for j:=1 to m do
   begin
     write('a[',i,',',j,']=');
     read(a[i,j]);
    end;
   for i:=1 to m do
   begin
     for j:=1 to m do
     write(a[i,j],' ');
     writeln;
   end;
suma(a,m);
write('m=',m);
   end.
 }
 {70.	Sa se testeze daca un numar n natural este termen in sirul lui Fibonacci.}

{   var n,f1,f2,f3:integer;
  begin
  write('n=');readln(n);
  f1:=1;
  f2:=1;
  f3:=f1+f2;
  while f3