Sunteți pe pagina 1din 19

1

eruoATESTAT 2009 ALGORITMI

1. S se scrie un program n limbajul Pascal sau C++ care s calculeze cel mai mic multiplu comun a n numere
naturale date. var n:integer; function cmmdc2(a,b:integer):integer; var r:integer; begin r:=a mod b; while r<>0 do begin a:=b; b:=r; r:=a mod b; cmmdc2:=b; end; function cmmmc(n:integer); var x,y,d,i,p:integer; begin write(x= );readln(x); d:=x; p:=x; for i:=2 to n do begin write(x= );readln(x); d:=cmmdc2(x,d); p:=p*x; end; cmmmc:= p div d; end; begin write(n= );readln(n); write(cmmmc(n)); readln; end.

2. Se citesc de la tastatur n numere ntregi. S se scrie un program n limbajul Pascal sau C++ care s partiioneze
acest ir n dou subiruri dup un x dat astfel: primul subir s conin elementele mai mici dect x, iar al doilea elementele mai mari dect x. type vector=array[1..100] of longint; var v,a:vector; i,j,n:integer; begin write('n= ');readln(n); for i:=1 to n do begin write('v[',i,']= '); readln(v[i]); end; for i:=1 to n do if v[i]>x then begin inc(j); a[j]:=v[i]; end; writeln(sirul cu numere mai mici decat x: ); for i:=1 to n do if (v[i]<> 0) then write(v[i], ); writeln(sirul cu numere mai mari decat x: ); for i:=1 to j do write(a[i], ); readln; end.

3. Se citesc de la tastatur n numere naturale. S se scrie un program n limbajul Pascal sau C++ care s rearanjeze
aceste numere astfel nct elementele s fie n ordine cresctoare pn la jumtatea irului, apoi s fie n ordine descresctoare. type vector=array[1..100] of longint;

var v,a,b:vector; i,j,n,k,m:integer; begin write('n= ');readln(n); for i:=1 to n do begin write('v[',i,']= '); readln(v[i]); end; repeat h:=true; for I := 1 to (n div 2) do if v[i]>v[i+1] then begin aux:=v[i]; v[i]:=v[i+1]; v[i+1]:=aux; end; until h; repeat h:=true; for I ;= p+1 to n-1 do if v[i]<v[i+1] then begin

until h; repeat h:=true; for I := (n div 2)+1 to n do if v[i]>v[i+1] then begin

aux:=v[i]; v[i]:=v[i+1]; v[i+1]:=aux; end;

aux:=v[i]; v[i]:=v[i+1]; v[i+1]:=aux; end; until h; repeat h:=true; for I ;= p+1 to n-1 do if v[i]<v[i+1] then begin

until h; end; for i:=1 to n do write(v[i], ); readln; end.

aux:=v[i]; v[i]:=v[i+1]; v[i+1]:=aux; end;

4. Se citete de la tastatur un n natural nenul. S se scrie un program n limbajul Pascal sau C++ care s genereze o matrice cu n linii i n coloane care s fie completat pe linii cu primele n 2 numere prime.
Type mat=array[1..100,1..100] of longint; Var a:mat; I,j,n,nr,k:longint; function prim(x:longint):boolean; var j:longint; h:boolean; begin h:=true; if (x=0) or (x=1) then h:=false; for j:=2 to trunc(sqrt(x)) do if x mod j=0 then h:=false; prim:=h;

begin write(dati rangul matricei); readln(n); for i:=1 to n do for j:=1 to n do begin k:=2; repeat if prim(k) then a[i,j]:=k; inc(k); until a[i,j]<>0; 5. S se scrie un program care, pentru n valori ntregi citite de la tastatur, afieaz valorile n ordine cresctoare.

end;

type vector=array[1..100] of longint; var v:vector; i,j,n:integer; Procedure sortare; repeat h:=true; for I := 1 to n do if v[i]>v[i+1] then begin aux:=v[i]; v[i]:=v[i+1]; v[i+1]:=aux; end; until h; repeat h:=true; for I ;= p+1 to n-1 do if v[i]<v[i+1] then begin aux:=v[i]; v[i]:=v[i+1]; v[i+1]:=aux; end; until h; end; begin write('n= ');readln(n); for i:=1 to n do begin write('v[',i,']= '); readln(v[i]); end; sortare; readln; end. 6. S se scrie un program care determin i afieaz toate numerele prime mai mici sau egale cu o valoare n natural, citit de la tastatur.

var x,n:longint; function prim(x:longint):boolean; var j:longint; h:boolean; begin h:=true; if (x=0) or (x=1) then h:=false; for j:=2 to trunc(sqrt(x)) do if x mod j=0 then h:=false; prim:=h; end; begin readln(n); x:=2; while x<=n do begin

end. 7.

if prim(x) then write(x); inc(x) end;

Scriei un program care afieaz toate numerele prime de trei cifre ale cror inverse sunt tot prime.

var i: longint; function prim(x:longint):boolean; var j:longint; h:boolean; begin h:=true; if (x=0) or (x=1) then h:=false; for j:=2 to trunc(sqrt(x)) do if x mod j=0 then h:=false; prim:=h; end; function invers(x: longint):longint; begin invers:=x mod 10; while x>=0 do begin x:=x div 10; invers:=(invers* 10) + (x mod 10); end; begin for i:=100 to 999 do if (prim(i)) and (prim(invers(i))) then write(i, ); end.

8. S se verifice dac o valoare ntreag X, citit de la tastatur, se gsete printre cele n elemente ntregi ale unui
vector. Elementele vectorului se vor citi de la tastatur n ordine cresctoare. {cautare binara} var a:array[1..100] of longint; n,i:byte; nr:longint; procedure caut(i,j:byte); var m:byte; begin m:=(i+j) div 2; if nr=a[m] then write('numarul a fost gasit pe pozitia ',m) else if i<j then if nr<a[m] then caut(i,m-1) else caut(m+1,j) else write('numarul nu a fost gasit'); end; begin write('dati lungimea vectorului : ');readln(n); for i:=1 to n do begin write('a[',i,']='); readln(a[i]); end; write('dati numarul de cautat : ');readln(nr); caut(1,n); readln; end. 9. Se citesc de la tastatur un cuvnt i o liter. S se afieze toate cuvintele care se obin prin nlocuirea unei litere din cuvnt cu litera dat. (Ex: pentru c=TOC i l=P se vor afia POC,TPC,TOP).

var cuv,s:string; c:char; n,i:integer; begin write(cuv: );readln(cuv); n:=length(cuv);

write(Introduceti o litera: );readln(c); s:=cuv; writeln(Cuvintele noi: ); for i:=1 to n do begin s[i]:=c; writeln(s); s:=cuv; end; readln; end.

10. S se determine cte elemente prime se afl deasupra diagonalei principale a unei matrice cu n x n elemente naturale. Type mat=array[1..100,1..100] of longint; Var a:mat; I,j,n,nr:longint; function prim(x:longint):boolean; var j:longint; h:boolean; begin h:=true; if (x=0) or (x=1) then h:=false; for j:=2 to trunc(sqrt(x)) do if x mod j=0 then h:=false; prim:=h; end; begin write(dati n : ); readln(n); for i:=1 to n do for j:=1 to n do begin write(a[,i,,,j,]=); readln(a[i,j]); end; nr:=0; for i:=1 to n do for j:=i to n do if prim(a[i,j]) then inc(nr); write(deasupra diagonalei principale sunt ,nr, numere prime); end. 11. Fie un vector cu n componente ntregi. S se determine elementul maxim din vector i s se afieze vectorul dup ce elementele din stnga celui maxim au fost sortate cresctor, iar cele din dreapta maximului au fost sortate descresctor. type vector=array [1..10] of longint; var v :vector; i,imax,max,n,aux:longint; ok:boolean; begin write('n=');readln(n); for i:=1 to n do readln(v[i]); max:=0; imax:=0; for i:=1 to n do if v[i]>max then begin max:=v[i]; imax:=i; end; repeat ok:=true; for i:=1 to imax-1 do if v[i]>v[i+1] then begin aux:=v[i];

v[i]:=v[i+1]; v[i+1]:=aux; ok:=false; end; until ok; repeat ok:=true; for i:=imax+1 to n-1 do if v[i]<v[i+1] then begin aux:=v[i]; v[i]:=v[i+1]; v[i+1]:=aux; ok:=false; end; until ok; for i:=1 to n do write(v[i]:3); readln; end.

12. S se determine cte elemente prime se afl deasupra diagonalei secundare a unei matrice cu n x n elemente naturale. type matrice=array[1..10,1..10] of longint; var a:matrice; n,i,j,nr:longint; function prim(x:longint):boolean; var k:longint; ok:boolean; begin ok:=true; if (x=0) or (x=1) then ok:=false; for k:=2 to trunc(sqrt(x)) do if x mod k=0 then ok:=false; prim:=ok; end; begin write('n=');readln(n); for i:=1 to n do for j:=1 to n do begin write('a[',i,',',j,']=');readln(a[i,j]); end; nr:=0; for i:=1 to n-1 do for j:=1 to n-i do if prim(a[i,j]) then inc(nr); write(nr); readln; end.

13. Se citete de la tastatur un ir cu n cuvinte. S se afieze cuvintele palindrom cu lungime maxim.


type vector=array[1..10] of string; var cuv:string; v:vector; n,i,max:longint; function palindrom(x:string):boolean; var h:boolean; k,y:longint; begin h:=true; y:=length(x); for k:=1 to y div 2 do if x[k]<>x[y-k+1] then begin

palindrom:=h; end; begin write('n=');readln(n); for i:=1 to n do begin write('dati cuvantul',i); readln(v[i]); end; max:=0; for i:=1 to n do if palindrom(v[i]) then if length(v[i])>max then max:=length(v[i]); for i:=1 to n do if palindrom(v[i]) then if length(v[i])=max then write(v[i]); readln; end.

h:=false; break; end;

14. Scriei un program care s afieze cte cifre pare i cte cifre impare conine un numr natural (cu maxim 8 cifre),
citit de la tastatur. var x,par,impar:longint; begin write('dati numarul');readln(x); repeat if (x mod 10)mod 2=1 then inc(impar) else inc(par); x:=x div 10; until x=0; write(par,' ',impar); readln; end.

15. S se scrie un program care s afieze factorul prim care apare la puterea cea mai mare n descompunerea
numrului natural x (citit) n factori primi. var x,f,d,p,max,dd:integer; begin write('x=');readln(x); max:=0; for d:=2 to x do begin p:=0; while x mod d=0 do begin inc(p); x:=x div d; end; if p>max then begin dd:=d; max:=p; end; end; writeln('factorul ',dd,' apare la puterea ', max); readln; end.

16. Se citete de la tastatura un numr natural n (100<=n<=999). Dintre numerele naturale mai mici sau egale cu n, s se
afieze acelea care sunt divizibile cu suma cifrelor lor. var n,i:integer; function sum(x:integer):integer; var s:integer; begin

begin write(dati numarul); readln(n); if (n>=100) and (n<=999) then for i:=n downto 1 do if i mod sum(i)=0 then write(i, ); readln; end.

s:=0; while x<>0 do begin s:=s+x mod 10; x:=x div 10; end; sum:=s; end;

17. Sa se scrie un program care s calculeze recursiv suma cifrelor unui numr natural cu cel mult 8 cifre.
var n:longint; function sc(n:longint):longint; begin if n=0 then sc:=0 else sc:=sc(n div 10)+n mod 10; end; begin readln(n); write('suma cifrelor lui ',n,' = ',sc(n)); readln; end.

18. S se scrie un program care s verifice recursiv egalitatea a dou iruri de caractere citite.
{verificare siruri care coincid} var s1,s2:string; function verif(s1,s2:string):boolean; begin if length(s1)<>length(s2) then verif:=false else if s1<>'' then if s1[1]<>s2[1] then verif:=false else begin delete(s1,1,1); delete(s2,1,1); verif:=verif(s1,s2); end else verif:=true; end; begin readln(s1); readln(s2); writeln(verif(s1,s2)); readln; end.

19. Se citete de la tastatur o cifr x i un numr natural n (care poate s fie de ordinul sutelor). Calculai xn.
var x,n,p:longint; begin write(dati baza: ); readln(x); write(dati exponentul: ); readln(n); p:=1; repeat p:=p*x; dec(n); until n=0; write(x, la puterea ,n, =,p); readln;

end.

20. Se citesc din fiierul NUMERE.TXT un numr natural n (de pe primul rnd) i n numere naturale separate prin
spaii (de pe al doilea rnd). S se afieze pe ecran cel mai mare divizor comun al celor n numere. var f:text; n,i,aux:integer; function cmmdc (a,b:longint):longint; var r:longint; begin repeat r:=a mod b; a:=b; b:=r; until r=0; cmmdc:=a; end; begin assign (f, DATE.IN); reset (f); readln (f,n); read(f,x); aux:=x; while not(eof(f)) do begin read(f,x); aux:=cmmdc(x,aux); end; write(CMMDC valorilor din fisier este: ,aux); readln; end. 21. Se citete de la tastatur un text cu cel mult 250 de caractere. tiind c separatorii de cuvinte pot fi: ,, ;, :, !, ?, . se cere s se mpart fraza n cuvinte i s se afieze fiecare cuvnt pe cte un rnd. La sfrit se va preciza numrul de cuvinte. const sep:set of char= [ ,, ;, :, !, ?, .]; var t,cuv:string; n,i,nr:integer; begin write(Dati textul: ); readln(t); n:=length(t); i:=1; nr:=0; while i<=n do begin while (t[i] in sep) and (i<=n) do inc(i); cuv:=; while not(t[i] in sep) and (i<=n) dp begin cuv:=cuv+t[i]; inc(i); end; writeln(cuv); inc(nr); end; writeln(In text sunt ,nr, cuvinte.); readln; end. 22. S se ordoneze cresctor un ir de n numere ntregi folosind metoda sortrii prin numrare.

23. S se creeze o list liniar alocat dinamic cu numere ntregi, s se calculeze media aritmetic a elementelor sale i s se
afieze elemente pare de pe poziii impare.

24. Se citete un text i o secven. S se determine numrul de apariii al secvenei n text.


var t,s:string; p,nr:integer; begin write(Dati textul: );readln(t); write(Dati secventa: );readln(s);

p:=pos(s,t); while p>0 do begin inc(nr); delete(t,1,p); p:=pos(s,t); end; writeln(Apare de ,nr, ori.); readln; end.

10

25. S se parcurg n lime un graf neorientat cu n noduri dat prin matricea de adiacen.
type mat=array[1..20,1..20] of 0..1; sir=arrau[1..100] of integer; var a:mat; n,i:integer; viz,c:sir; procedure citire(var a:mat; var n:integer); var i,j:integer; f:text; begin assign(f,adiacenta.in); reset(f); read(f,n); for i:=1 to n do for j:=1 to n do read(f,a[i,j]); close(f); end; procedure bf; var i,u,p,v,x0:integer; begin write(dati nodul initial: );readln(x0); c[1]:=x0; p:=1; u:=1; viz[x0]:=1; while p<=u do begin v:=c[p]; for i:=1 to n do if (a[v,i]=1) and (viz[i]=0) then begin inc(u); c[u]:=i; viz[i]:=1; end; inc(p); end; end; begin citire(a,n); bf; write(Parcurgere in latime: ); for i:=1 to n do write (c[i], ); readln; end.

26. S se ordoneze cresctor un vector de n elemente numere reale folosind metoda inseriei.
Program calcul; Var v :array[1..10] of longint; N,I,j,k,aux:integer; H:Boolean; Begin Write(n=); Readln(n); For I := 1 to n do begin Write(a[,I,]=);

Readln(a[i]); End; For I := 2 to n do Begin Aux:=v[i]; K:=0; J:=i-1; H:=false; While (J>!) and (not h) do If v[j]>aux then begin V[j+1]:=v[j]; J:=j-1; End; Else begin H:=true; K:=j; End;

11

V[k+1]:=aux; End; For I := 1 to n do write(v[i], ); Readln; End.

27. S se ordoneze cresctor un vector de n elemente numere reale folosind metoda seleciei. Program calcul; Var v:array[1..10] of longint; N,I,j,aux :longint; Begin Write(n=); Readln(n); For I ;= 1 to n do Readln(v[i]); For I := 1 to n-1 do For j := i+1 to n do If v[j]>v[i] then begin Aux:=v[i]; V[i]:=v[j]; V[j]:=aux; End; For I := 1 to n do Write(v[i], ); Readln;end.

28. S se creeze o list liniar cu informaii numere naturale. Eliminai din list toate nodurile care conin informaii pare. Se
va afia coninutul listei att nainte de eliminare, ct i dup eliminare. 29. S se afieze permutrile mulimii {1,2,3, , n}, unde n este un numr natural dat. type sir=array[1..100] of integer; var x:sir; n,i:integer; procedure prelsol; var i:integer; begin for i:=1 to n do write(x[i],' '); writeln; end; function valid(k:integer):boolean; var i:integer; begin valid:=true; for i:=1 to k-1 do if x[k]=x[i] then begin valid:=false; exit; end; end;

procedure back; var k:integer; begin for k:=1 to n do x[k]:=0; k:=1; while k>0 do if k=n+1 then begin prelsol; dec(k); end else if x[k]<=n-1 then begin inc(x[k]); if valid (k) then inc(k); end else begin x[k]:=0; dec(k); end; end; begin write('n= ');readln(n); writeln('Permutarile multimii sunt:'); back; readln; end. 30. Se dau 2 liste alocate dinamic cu elemente numere ntregi aflate n ordine cresctoare. S se interclaseze cele 2 liste.

12

31. S se determine numrul componentelor conexe dintr-un graf neorientat cu n vrfuri i m muchii.
type mat=array[1..20,1..20] of 0..1; sir=arrau[1..100] of integer; var a:mat; n,i,nc:integer; viz,c:sir; procedure citire(var a:mat; var n:integer); var i,j:integer; f:text; begin assign(f,adiacenta.in); reset(f); read(f,n); for i:=1 to n do for j:=1 to n do read(f,a[i,j]); close(f); end; procedure bf(x0:integer; var c:sir; var u:integer); var i,p,v:integer; begin c[1]:=x0; p:=1; u:=1; viz[x0]:=1; while p<=u do begin v:=c[p]; for i:=1 to n do if (a[v,i]=1) and (viz[i]=0) then begin inc(u); c[u]:=i; viz[i]:=1; end; inc(p); end; end; function nod:integer; var i:integer; begin nod:=0; for i:=1 to n do if viz[]=0 then begin nod:=i; exit; end; end; begin citire(a,n);

x:=nod; while x>0 do begin inc(nc); bf(x,c,u); x:=nod; end; write(Graful are ,nc, componente conexe.); readln; end.

13

32. S se inverseze elementele unui ir printr-o procedur recursiv. type sir=array[1..100] of integer; var v:sir; n,i:integer; procedure citire(var v:sir; var n:integer); var i:integer; begin write(n= );readln(n); for i:=1 to n do begin write(v[,i,]= );readln(v[i]); end; end; procedure invers(var v:sir; i:integer); var aux:integer; begin if i<=n div 2 then begin aux:=v[i]; v[i]:=v[n-i+1]; v[n-i+1]:=aux; invers(v,i+1); end; end; citire(v,n); invers(v,1); for i:=1 to n do write(v[i], ); readln; end.

33. Se citete din fiierul MAT.IN o matrice cu n linii i m coloane coninnd numai elemente de 0 i 1. Elementele fiecrei
linii reprezint cifrele binare ale unui numr natural. S se determine cel mai mare numr natural. 34. Se d un fiier text MAT.IN care conine pe cte o linie numele i prenumele unui elev. S se creeze un alt fiier MAT.OUT care conine pe fiecare linie prenumele i numele elevilor (n aceast ordine) din fiierul MAT.IN sortai alfabetic dup prenume.

35. Se citesc din fiierul BAC.IN pe mai multe rnduri mai multe numere naturale de cel mult 3 cifre desprite prin spaiu.(pe
o linie cel mult 100 numere) Scriei in fiierul BAC.OUT pe fiecare linie numerele din fiierul iniial dar sortate cresctor. Ex BAC.IN 385 839 41 BAC.OUT 358 389 14

36. Se citete din fiierul bac. in un text pe mai multe linii. Scriei n fiierul bac. out acelai text dar in care se schimba literele
mici cu litere mari si literele mari cu litere mici. Ex Bac.in Tata Este la PiatA?

14
Bac. out TATA eSTE LA pIATa?

37. Se citete de la tastatura pentru n elevi informaii referitoare la nume, prenume, media, vrsta. Sortai descresctor elevii
dup medie, iar daca au aceeai medie se sorteaz cresctor dup nume.

38. Realizai un program care calculeaz recursiv maximul a n numere citite de la tastatura.(n< 20, numerele sunt
naturale de cel mult 5 cifre). type vector=array[1..100] of integer; var v:vector; i,n:integer; max,s,d,mij:integer; procedure citire; begin writeln('Introduceti elementele vectorului : '); for i:=1 to n do readln(v[i]); end; function maxim(s,d:integer):integer; var max1,max2:integer; begin if s=d then maxim:=v[s] else begin max1:=maxim(s,(s+d)div 2); max2:=maxim((s+d)div 2 +1,d); if max1>max2 then maxim:=max1 else maxim:=max2; end; end; begin write(n= );readln(n); citire; write(Maximul din vector: , maxim(1,n); readln; end.

39. Se citete de la tastatura o matrice n x m si calculai pentru fiecare coloana numrul de numere neprime.
Ex N=3 m=4 2575 1470 2456 se va afisa 12 02 40. Se citeste din fisierul bac.in pe prima linie n si apoi pe urmatoarele n linii cate n numere 0 si 1 reprezentand matricea de adiacenta pentru un graf neorientat. Calculati pentru fiecare nod gradul si spuneti daca sunt noduri izolate in graf Ex Bac.in N=4 0110 1000 1001 0010 Se va afisa Gradele 2 1 2 1 Nu sunt varfuri izolate. 41. Se dau doua numere naturale a si b citite de la tastatura, a de cel mult 9 cifre , b<=10. Afisati numarul a in baza b. Ex: A=18 B=2 Se va afisa 10010

15
42. Se citeste de la tastatura un numar natural a si un numar natural b (a, b de cel mult 9 cifre). Scrieti cele doua numere in baza 2 pe 32 biti si spuneti cate pozitii dintre cele 32 contin cifre disticte. Ex. A=27 B=13 A este 000000000000000000000000000011011 B este 000000000000000000000000000001101 Se va afisa 3. 43. 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 44. Generati toate numerele naturale de 5 cifre care au proprietatea ca suma cifrelor este divizor al produsului cifrelor. Ex. Un numar este 12345 in care are suma cifrelor 15 si produsul 120. 45. 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

46. 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. 47. Pentru un numar intreg n dat sa se calculeze expresia de mai jos : s=12+42+72++(3*n-2)2 Ex : n=5, s=335. 48. Sa se calculeze produsul a doua numere naturale prin adunari repetate. 49. Sa se determine toate numerele intregi de 3 cifre abc cu proprietatea ca numarul este egal cu suma cuburilor cifrelor. Ex : 371=33+53+13. 50. Sa se determine daca 2 numere sunt termeni consecutivi ai sirului lui Fibonacci. Ex : 55 si 89 sunt termeni consecutivi ai sirului lui Fibonacci.

51. 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.

52. Se citesc perechi de numere pn la ntlnirea valorii 0. S se afieze doar acele perechi alctuite din numere prime ntre
ele. S se precizeze cte sunt n total. Ex: (3 27) (5 12) (8 13) Se va afia 5 12, 8 13, 13 17 3 perechi (2 46) (13 17) (0 0)

53. Sa se scrie un program care afieaz pe ecran coninutul unui fiier text cu nume citit de la tastatura. 54. Sa se creeze un fiier text care conine 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 fiierul de ieire va arata astfel : 11, 22, 33, , 99, 111 .

55. Din fiierul numere. in se citesc mai multe numere ntregi. Ele sunt scrise in fiier pe mai multe linii. Numerele de pe
aceeai linie sunt separate prin spaiu. Sa se scrie un program care construiete fiierul text numere. out coninnd numrul cel mai mare si numrul cel mai mic din fiecare linie a fiierului numere. in. Cele doua numere se vor scrie pe aceeai linie separate prin spaiu. Ex : numere. in : 10 9 13 57 3 32 53 9 6

16
numere. out : 3 57 9 53 66

56. Se citesc numere pn la ntlnirea valorii 0. S se realizeze un program care afieaz pentru fiecare numr citit numrul
de apariii al unei cifre specificate de la tastatur.

57. S se realizeze un program care s calculeze maximul dintre trei numere folosind o funcie ce calculeaz maximul dintre
dou numere i o alta care folosete prima funcie i care ntoarce maximul dintre cele trei numere. 58. Se citete din fiierul matrice. txt o matrice ptratic de ordin n. Pe prima linie din fiier se gsete numrul de linii, iar pe liniile urmtoare elementele matricei. Realizai un program care verific dac matricea este simetric.

59. Fiierul sir. in conine pe o singura linie, separate prin caracterul blanc un ir de numere. S se scrie n fiierul sir. out
elementele prime din acest sir.

60. Se da un fiier text cu mai multe linii. Sa se copieze aceste linii in alt fiier text in ordinea descresctoare a lungimilor
liniilor.

61. S se realizeze un program care verific dac un numr n natural este numr prim. 62. S se realizeze un program care verific dac un numr n natural este numr perfect. 63. Se dau doua numere ntregi a si b, ce reprezint numrtorul, respectiv numitorul unei fracii. S se realizeze un program
care afieaz fracia adus la form ireductibil.

64. S se realizeze un program care s testeze dac un vector cu n elemente poate reprezenta o mulime ( n sens matematic) 65. S se realizeze un program care afieaz numrul de apariii al elementului maxim dintr-un ir dat cu n elemente numere
reale.

66. Se dau doi vectori A si B cu n si respectiv m elemente ce reprezint dou mulimi. S se determine mulimea ce reprezint
intersecia celor dou mulimi date.

67. Sa se ordoneze un vector dat cu n elemente ntregi prin metoda bulelor.


Program calcul; Var v:array[p1..10] of longint; N,i,j,k,aux:longint; H:Boolean; Begin Write(n=); Readln(n): For I := 1 to n do Write(v[,I,]=); Readln(v[i]); End; Repeat H:=true; For I := 1 to n-1 do If v[i]<v[i+1] then begin Aux:=v[i]; V[i]:=v[i+1]; V[i+1]:=aux; H:=false; End; Until h; For I := 1 to n do Write(v[i], ); Readln; End.

17
68. Sa se determine produsul a doua matrice date A(m,n) si B(n,p).

69. Sa se ordoneze cresctor elementele de pe diagonala principal a unei matrice ptratice folosind interschimbri de linii si
coloane.

70. S se realizeze un program care calculeaz produsul elementelor de sub diagonala secundar a unei matrice ptratice de
ordin n..

71. Scriei un program ce creeaz un fiier text cu date introduse de la tastatura. 72. Scriei un program care concateneaz doua fiiere text. Rezultatul concatenrii se va pune n primul fiier.
program concatenare; var f, g:text; s:integer; begin assign (f, FISIER1.TXT); append (f); assign (g, FISIER2.TXT); reset (g); writeln (f); while not eof (g) do begin readln (g,s); writeln (f,s); end; close (f); close (g); end.

73. n fiierul NUMERE.TXT se afl mai multe numere naturale scrise cu spaiu ntre ele. S se creeze fiierul PARE.TXT
care sa conin, cate una pe linie doar acele valori din fiierul NUMERE.TXT care sunt numere pare.

74. Se consider n numere naturale. S se determine c. m .m. d. c. al celor n numere. Datele de intrare se citesc din fiierul
input.txt sub forma urmtoare: pe prima linie se va gsi n iar pe urmtoarele n linii numerele. Rezultatul se va afia pe ecran.

75. S se creeze o list liniar simplu nlnuit cu elemente numere ntregi. S se afieze elementele listei de la ultimul
element ctre primul.

76. S se realizeze un program care construiete dou liste liniare simplu nlnuite cu elemente numere ntregi. S se
descompun n dou liste, una care s conin elementele pare, iar cealalt elementele impare.

77. S se realizeze un program care citete din fiierul GRAF.TXT matricea de adiacen a unui graf orientat (pe primul rnd
al fiierului se afl numrul de noduri, iar pe urmtoarele linii matricea) i afieaz acele noduri al cror grad interior este egal cu gradul exterior. 78. Se citete dintr-un fiier text un numr ntreg. S se afieze n acelai fiier text inversul acestui numr.

79. S se scrie un program n care s se calculeze expresia: E= +1/3+ +.+1/n, unde n este un numr natural dat. 80. S se scrie un program n care s se calculeze expresia E=1+1*2+1*2*3+.+1*2*3**n, unde n este un numr natural
dat.

81. S se scrie un program n care s se calculeze expresia E=12+42+72+.+(3*n-2)2, unde n este un numr natural dat. 82. S se scrie un program n care s se calculeze expresia E=1*3+2*5+3*7++n*(2*n+1), unde n este un numr natural dat. 83. Se dau doi vectori u i v cu n componente numere ntregi. S se calculeze produsul scalar al acestora,
u[1]*v[1]+u[2]*v[2]+.+u[n]*v[n].

84. Fiind dat un vector v cu n componente numere ntregi, s se afieze de cte ori gsim dou elemente consecutive egale
ntre ele.

18
85. Fiind dat un vector v cu n componente numere ntregi, s se insereze la mijlocul vectorului media aritmetic a elementelor sale. 86. Fiind dat un vector v cu n componente numere ntregi, s se afieze elementele cu proprietatea c suma cifrelor lor este divizibil cu o valoare p dat. 87. Fiind dat un vector v cu n componente numere ntregi, s se afieze elementele pare de pe poziiile impare din vector. Type vect=array [1..100] of longint; var n,i:integer; v:vect; begin write(dati numarul); readln(n); for i:=1 to n do begin write(a[,i,]=); readln(a[i]); end; for i:=1 to n do if (i mod 2=1) and (v[i] mod 2=0) then write(v[i], ); readln; end. 88. Fiind dat un vector v cu n componente numere ntregi, s se afieze toate perechile de elemente consecutive cu proprietatea c al doilea element al perechii este egal cu suma cifrelor primului. Type vect=array [1..100] of longint; var n,i:integer; v:vect; function sum(x:integer):integer; var s:integer; begin s:=0; while x<>0 do begin s:=s+x mod 10; x:=x div 10; end; sum:=s; end; begin write(dati numarul); readln(n); for i:=1 to n do if v[i]=sum(v[i+1] then write (( ,v[i],,,v[i+1], )); readln; end. 89. Se d un numr natural par. S se descompun n sum de dou numere prime. program descompunere_suma_numere_prime; var n,i,k,nr_desc:integer; prim1, prim2:boolean; f:text; begin write (Introduceti valoarea n= ); readln(n); writeln (Descompunerea lui ,n, in suma de numere prime: ); nr_desc:=0; for i:=2 to n div 2 do begin prim1:=true; if (i=0) or (i=1) then prim1:=false; for k:=2 to I div 2 do if i mod k=0 then prim1:=false; if prim1 then begin prim2:=true; if (n-i=0) or (n-i=1) then prim2:=false; for k:=2 to (n-i) div 2 do if (n-i) mod k=0 then prim2:=false; if prim2 then begin nr_desc:=nr_desc+1;

n-i); end; end; if nr_desc=0 end. end;

writeln (I, + ,

19

then writeln (n, nu poate fi descompus! ) else writeln (Avem , nr_desc, descompuneri! );

90. S se afieze toate modurile de aezare a n regine pe o tabl de ah de dimensiune n*n, fr s se atace ntre ele(s nu
fie pe aceeai linie, coloan sau diagonal). Valoarea lui n se citete de la tastatur {Regine} type vector=array[1..30] of longint; var n,i,v:longint; a,x:vector; procedure prel_sol; var i,j:longint; begin for i:=1 to n do begin for j:=1 to x[i]-1 do write(0:2); write('R':2); for j:=x[i]+1 to n do write(0:2); writeln; end; writeln; end; function valid(k:longint):boolean; var i:longint; begin valid:=true; for i:=1 to k-1 do if (x[k]=x[i]) or (k-i=abs(x[k]-x[i])) then valid:=false; end; procedure back(k:longint); begin if k=n+1 then prel_sol else begin x[k]:=0; while x[k]<=n-1 do begin x[k]:=x[k]+1; if valid(k) then back(k+1); end; end; end; begin read(n); back(1); readln; end.

S-ar putea să vă placă și