Administratie | Alimentatie | Arta cultura | Asistenta sociala | Astronomie |
Biologie | Chimie | Comunicare | Constructii | Cosmetica |
Desen | Diverse | Drept | Economie | Engleza |
Filozofie | Fizica | Franceza | Geografie | Germana |
Informatica | Istorie | Latina | Management | Marketing |
Matematica | Mecanica | Medicina | Pedagogie | Psihologie |
Romana | Stiinte politice | Transporturi | Turism |
SUBIECTELE PROBEI PRACTICE PENTRU EXAMENUL DE ATESTAT PROFESIONAL LA INFORMATICA - PROGRAMARE
PROGRAMARE
Subiectul nr.1
Se citeste de la tastatura un sir de 10 numere intregi mai mici decat 100.
Exemplu:
Date de intrare:
17 23 45 67 12 34 5 90 8 9
Date de iesire:
a) Fisierul text date.in contine pe o linie: 17 23 45 67 12 34 5 90 8 9
b) Elementul minim este: 5
c) Tabloul unidimensional: 17 23 45 67 12 34 5 90 8 8.5 9
d) Fisierul text date.out contine pe o linie: 5 8.5 8 9 12 17 23 34 45 67 90
Rezolvare:
in procedura minelem se determina minimul din vectorul a format cu cele 10 elemente citite de la tastatura; aceste elemente se depun in fisierul date.in;
in procedura marit se determina elementul care se insereaza intre penultimul si ultimul element al vectorului a; in acest mod se creaza un nou vector b care se listeaza pe monitor;
vectorul b este apoi sortat si se creaza cu noul vector sortat fisierul date.out.
Varianta PASCAL var g,f:text; i,ok:integer; a:array[1..10] of integer; b:array[1..11] of real;aux:real; function minelem:integer; var j,min:integer; begin min:=1000; for j:=1 to 10 do if a[j] < min then min:=a[j]; minelem:=min; end; procedure marit; var m,j:integer; begin m:=a[9]+a[10]; b[10]:=m/2.; for j:=1 to 9 do b[j]:=a[j]; b[11]:=a[10]; end; begin assign (f,'date.in ');rewrite(f); assign(g,'date.out');rewrite(g); for i:=1 to 10 do begin read(a[i]); write(f,a[i],' '); end; writeln(minelem); ok:=1; marit; for i:=1 to 11 do write(b[i]:3:2,' '); while ok=1 do begin ok:=0; for i:=1 to 10 do if b[i]>b[i+1] then begin ok:=1;aux:=b[i]; b[i]:=b[i+1];b[i+1]:=aux; end; end; for i:=1 to 11 do write(g,b[i]:3:2,' '); close(f); close(g); end. |
Varianta C #include <fstream.h> #include <stdlib.h> int a[10]; float b[11]; int minelem() void marit() void main() for(i=1;i<=11;i++) g<<b[i]<<' '; g.close(); f.close(); |
Subiectul nr.2
Se citeste de la tastatura un sir de 10 numere intregi mai mici decat 100.
Exemplu:
Date de intrare:
7 23 4 17 12 34 5 90 8 9
Date de iesire:
a) Fisierul text date.in contine pe o linie: 7 23 4 17 12 34 5 90 8 9
b) Elementul maxim este: 90
c) In fisier sunt 4 numere prime
d) Fisierul text date.out contine pe o linie: 4 5 7 8 9 12 17 23 34 90
Rezolvare :
subprogramul scrie creaza fisierul date.in in care sunt depuse cele 10 numere intregi citite de la tastatura ;
se citesc elementele din fisierul date.in si se cauta elementul maxim in subprogramul maxim ; valoarea este returnata programului principal si afisata pe monitor ;
se citesc numerele din fisierul date.in si se determina cate numere sunt prime ; acest lucru se realizeaza in subprogarmul nrprime ; numarul de numere prime este returnat programului principal si afisat pe monitor ;
in programul principal se sorteaza cele 10 numere citite si se scriu in fisierul date.out
Varianta PASCAL var a,ok,i,j,aux:integer; b:array[1..10] of integer; h:text; procedure scrie var f:text; i:integer; begin assign(f,'date.in'); rewrite(f); for i:=1 to 10 do begin read(a); write(f,a,' '); end; close(f); end; function maxim:integer; var g:text; max,i,a:integer; begin assign(g,'date.in'); reset(g); read(g,max);b[1]:=max; for i:=2 to 10 do begin read(g,a);b[i]:=a; if a>=max then max:=a; end; close(g); maxim:=max; end; function nrprime:integer var k,i,j,nrdiv,nr:integer; ok,aux:integer;g:text; begin assign(g,'date.in');reset(g); nr:=0; for i:=1 to 10 do begin read(g,k); nrdiv:=0; for j:=1 to k do if k mod j = 0 then nrdiv:=nrdiv+1; if nrdiv=2 then nr:=nr+1; end; close(g); nrprime:=nr; end; begin assign(h,'date.out');rewrite(h); scrie; writeln('elementul maxim este ',maxim); writeln('in fisier sunt ', nrprime,' numere prime '); ok:=1; while ok=1 do begin ok:=0; for i:=1 to 10 do if b[i]>b[i+1] then begin ok:=1; aux:=b[i]; b[i]:=b[i+1]; b[i+1]:=aux; end; end; for i:=1 to 10 do write(h,b[i],' '); close(h); end. |
Varianta C #include <fstream.h> #include <stdlib.h> int a,b[10]; void scrie() f.close(); int maxim() g.close(); return max; int nrprime() g.close(); return nr; void main() } for(i=1;i<=10;i++) h<<b[i]<<' '; h.close(); |
Subiectul nr.3
Se citeste de la tastatura un sir de 10 numere intregi mai mici decat 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa returneze suma cifrelor elementelor pare din fisierul date.in;
c) Sa se scrie un subprogram care sa determine numarul elementelor patrate perfecte din fisierul date.in;
d) Scrieti in fisierul text date.out sirul dat, ordonat decrescator.
Exemplu:
Date de intrare :
37 23 4 77 12 34 5 90 18 19
Date de iesire :
a) Fisierul text date.in contine pe o linie: 37 23 4 77 12 34 5 90 18 19
b) Suma cifrelor elementelor pare din fisierul date.in este: 32
c) Intre elementele din fisierul date.in este un patrat perfect
d) Fisierul text date.out contine pe o linie: 90 77 37 34 23 19 18 12 5 4
Rezolvare :
cele 10 numere se citesc in programul principal si se depun in fisierul date.in ; in acelasi timp sunt depuse in vectorul a
suma cifrelor elementelor pare din vectorul a se calculeaza in subprogramul maxim ,care returneaza rezultatul in programul principal unde se afiseaza pe monitor ;
in subprogramul pp se calculeaza cate elemente din vectorul a sunt patrate perfecte, iar rezultatul se returneaza programului principal unde se afiseza pe monitor ;
in programul principal se ordoneaza vectorul a si se depune sortat in fisierul date.out
Varianta PASCAL var f,g:text; a:array[1..10] of integer; i,ok,aux:integer; function maxim:integer; var i,k,sum:integer; begin sum:=0; for i:=1 to 10 do if a[i] mod 2 =0 then begin k:=a[i]; while k<>0 do begin sum:=sum+k mod 10; k:=k div 10; end; end; maxim:=sum; end; function pp:integer; var k,i,b,nr:integer; begin nr:=0; for i:=1 to 10 do begin b:=a[i]; for k:=1 to b-1 do if k*k=b then inc(nr); end; pp:=nr; end; begin assign (f,'date.in');rewrite(f); assign (g,'date.out');rewrite(g); for i:=1 to 10 do read(a[i]); for i:=1 to 10 do write(f,a[i],' '); close(f); writeln; writeln(' suma cifrelor ', maxim); writeln(' numarul de patrate perfecte ',pp); ok:=1; while ok=1 do begin ok:=0; for i:=1 to 9 do if a[i]<a[i+1] then begin ok:=1;aux:=a[i]; a[i]:=a[i+1]; a[i+1]:=aux; end; end; for i:=1 to 10 do write(g,a[i],' '); close(g); end. |
Varianta C #include <fstream.h> #include <stdlib.h> int a[10]; int maxim() } return sum; int pp() return nr; void main() for(i=1;i<=10;i++) g<<a[i]<<' '; f.close(); g.close(); |
Subiectul nr.4
Se citeste de la tastatura un sir de 10 numere intregi mai mici decat 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa determine suma elementelor impare continute de fisierul date.in;
c) Sa se scrie un subprogram care sa returneze cate elemente din fisierul date.in sunt numere de tip palindrom cu cel putin doua cifre (palindrom este un numar de cel putin doua cifre care citit de la dreapta la stanga este identic cu numarul citit de la stanga la dreapta);
d) Scrieti in fisierul text date.out sirul dat, ordonat descrescator.
Exemplu:
Date de intrare:
37 23 4 77 12 34 5 90 18 19
Date de iesire:
a) Fisierul text date.in contine pe o linie: 37 23 4 77 12 34 5 90 18 19
b) Suma elementelor impare continute de fisierul date.in este:161
c) In fisier este un numar de tip palindrom cu cel putin doua cifre
d) Fisierul text date.out contine pe o linie: 90 77 37 34 23 19 18 12 5 4
Rezolvare:
in programul principal se citesc datele de la tastatura si se depun in fisierul date.in
datele din fisierul date.in se citesc in programul principal si se depun in vectorul v
se calculeaza suma elementelor impare din vectorul v in subprogramul suma si se returneaza programului principal unde se afiseaza pe monitor ;
in subprogramul palindrom se determina numarul de elemente palindrom existente in vectorul v si rezultatul se returneaza programului principal unde se afieaza pe monitor ;
se sorteaza elementele vectorului v in programul principal si se memoreaza in fisierul date.out
Varianta PASCAL type vect=array[1..10] of integer; var i,n,l,r,a:integer; v:vect; f,g:text; function suma (a:vect;k:integer):integer; var j,s:integer; begin s:=0; for j:=1 to k do if a[j] mod 2<>0 then s:=s+a[j]; suma:=s; end; function palindrom (a:vect;k:integer):integer var j,nr,c,p:integer; begin c:=0; for j:=1 to k do begin nr:=0; p:=0; if a[j]>9 then begin nr:=a[j]; while nr<>0 do begin p:=p*10 + nr mod 10; nr:=nr div 10; end; end; if p=a[j] then inc(c); end; palindrom:=c; end; begin assign (f,'date.in');rewrite(f); for i:=1 to 10 do begin read(a); write(f,a,' '); end; close(f); reset(f); for i:=1 to 10 do read(g,v[i]); close(g); writeln; writeln(' suma este ',suma(v,10)); writeln(' numere palindrom in fisier ',palindrom(v,10)); for i:=1 to 9 do for r:=i+1 to 10 do if v[i]<v[r] then begin l:=v[i]; v[i]:=v[r]; v[r]:=l; end; assign (g,'date.out');rewrite(g); for i:=1 to 10 do write(g,v[i],' '); close(g); end. |
Varianta C #include <fstream.h> #include <stdlib.h> int i,n,v[10],l=10,r,a; fstream f('date.in',ios::out); fstream g('date.in',ios::in); fstream h('date.out',ios::out); int suma(int a[100],int k) int palindrome (int a[100],int k) } if (p==a[j]) c++; } return c; } void main() f.close(); // b) for (i=1;i<=10;i++) g>>v[i]; g.close(); cout<<endl<<' '<<suma(v,l); // c) cout<<endl<<' '<<palindrom(v,l); // d) for (i=1;i<=9;i++) for (r=i+1;r<=10;r++) if (v[i]<v[r]) for (i=1;i<=10;i++) h<<v[i]<<' '; h.close(); } |
Subiectul nr.5
Se citeste de la tastatura un sir de 10 numere intregi mai mici decat 100.
a. Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b. Sa se scrie un subprogram care sa returneze suma elementelor pare de pe pozitiile impare din fisierul date.in;
c. Sa se scrie un subprogram care sa determine numarul elementelor prime continute de fisierul date.in;
d. Scrieti in fisierul text date.out sirul dat, ordonat crescator.
Exemplu:
Date de intrare :
7 23 4 17 12 34 5 90 8 9
Date de iesire:
a) Fisierul text date.in contine pe o linie: 7 23 4 17 12 34 5 90 8 9
b) Suma elementelor pare de pe pozitiile impare din fisierul date.in este: 24
c) In fisier sunt 4 numere prime
d) Fisierul text date.out contine pe o linie: 4 5 7 8 9 12 17 23 34 90
Rezolvare :
in programul principal se citesc datele de la tastatura si se depun in fisierul date.in si in vectorul v
suma elementelor pare de pe pozitii impare se calculeaza in subprogramul b si se afiseaza in programul principal pe monitor ;
in subprogramul c se determina numarul de elemente prime si in programul principal se afieaza pe monitor ;
in programul principal se sorteaza vectorul v si elementele sortate se depun in fisierul date.out
Varianta PASCAL var v:array[1..12] of integer; f,g:text; i,j,aux:integer; function b:integer; var s,i:integer; j,aux:integer; begin s:=0;i:=1; while i<=10 do begin if v[i] mod 2 =0 then begin s:=s+v[i]; i:=i+2; end; b:=s; end; function c:integer; var i,j,ok,p:integer; begin p:=0; for i:=1 to 10 do begin ok:=1; for j:=2 to trunc(sqrt(v[i])) do if v[i] mod j =0 then ok:=0; if ok<>0 then inc(p); end; c:=p; end; begin assign (f,'date.in'); rewrite(f); for i:=1 to 10 do begin read(v[i]);write(f,v[i],' '); end; close(f); writeln; writeln(' suma este ',b); writeln(' numere prime in fisier ',c); assign (g,'date.out');rewrite(g); for i:=1 to 9 do for j:=i+1 to 10 do if v[i]>v[j] then begin aux:=v[i]; v[i]:=v[j]; v[j]:=aux; end; for i:=1 to 10 do write(g,v[i],' '); close(g); end. |
Varianta C #include<fstream.h> #include <math.h> fstream f('date.in',ios::out); fstream g('date.out',ios::out); int v[12]; int b () int c () return p; void main() f.close(); cout<<endl<<b(); cout<<endl<<c(); // d) for (i = 1; i < 10; i++) for (j = i + 1; j <=10; j++) if (v[i] > v[j]) for (i=1;i<=10;i++) g<<v[i]<<' '; |
Se citeste de la tastatura un sir de 10 numere intregi mai mici decat 100.
a. Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b. Sa se scrie un subprogram care sa determine suma elementelor impare aflate pe pozitiile pare continute de fisierul date.in;
c. Sa se scrie un subprogram care sa returneze un mesaj prin care sa se comunice daca un element x citit de la tastatura exista sau nu in sirul din fisierul date.in;
d. Scrieti in fisierul text date.out sirul dat, ordonat crescator.
Exemplu:
Date de intrare:
17 23 45 67 12 34 5 90 8 9
Date de iesire :
a) Fisierul text date.in contine pe o linie: 17 23 45 67 12 34 5 90 8
b) Suma elementelor impare aflate pe pozitiile pare continute de fisierul date.in este: 99
c) Pentru x = 99 se va afisa: "elementul nu este in fisier"
d) Fisierul text date.out contine pe o linie: 5 8 9 12 17 23 34 45 67 90
Rezolvare :
in programul principal se citesc datele de la tastatura si se depun in fisierul date.in
se citeste fisierul date.in si se depun elementele sale in vectorul v ;suma elementelor impare de pe pozitii pare se calculeaza in subprogramul b si se afiseaza in programul principal pe monitor ;
se citeste elementul x in programul principal si in subprogramul c se verifica daca acest element este in vector sau nu si se afiseaza in programul principal un mesaj corespunzator ;
in programul principal se sorteaza vectorul v si elementele sortate se depun in fisierul date.out
Varianta PASCAL var v:array[1..10] of integer; r,x,i,l,a:integer; f,g,h:text; function b:integer; var s,i:integer; begin s:=0;i:=2; while i<=10 do begin if v[i] mod 2 <> 0 then s:=s+v[i]; i:=i+2; end; b:=s; end; function c (var x:integer):boolean; var i:integer;p:boolean; begin p:=false; for i:=1 to 10 do if v[i]=x then p:=true; c:=p; end; begin assign (f,'date.in');rewrite(f); for i:=1 to 10 do begin read(a); write(f,a,' '); end; close(f); assign (g,'date.out');reset(g); for i:=1 to 10 do read(g,v[i]); close(g); writeln; writeln(' suma elementelor ',b); writeln(' elementul cautat '); readln(x); if c(x) then writeln(' elementul este in sir ') else writeln(' elementul nu este in sir '); for i:=1 to 9 do for r:=i+1 to 10 do if v[i]>v[r] then begin l:=v[i]; v[i]:=v[r]; v[r]:=l; end; assign (h,'date.out');rewrite(h); for i:=1 to 10 do write(h,v[i],' '); close(h); end. |
Varianta C #include <fstream.h> #include <stdlib.h> fstream f('date.in',ios::out); fstream g('date.in',ios::in); fstream h('date.out',ios::out); int v[12],r,x,i,l,a; int b () int c (int &x) void main() // a) f.close(); // b) for (i=1;i<=10;i++) g>>v[i]; g.close(); cout<<endl<<'suma elementelor '<<b(); // c) cout<<endl<<'dati elementul cautat '; cin>>x; if(c(x) == 1) cout<<endl<<' elementul este in sir '; else cout<<endl<<' elementul nu este in sir '; // d) for (i=1;i<=9;i++) for (r=i+1;r<=10;r++) if (v[i]>v[r]) ; for (i=1;i<=10;i++) h<<v[i]<<' '; h.close(); } |
Subiectul nr.7
Se citeste de la tastatura un sir de 10 numere intregi mai mici decat 100.
a. Sa se creeze fisierul text date.in care sa contina patru linii. Fiecare linie afisata contine elementele unei linii din matrice, separate prin spatii;
b. Sa se scrie un subprogram care sa returneze elementul maxim de pe diagonala principala a matricei din fisierul date.in;
c. Sa se scrie un subprogram care sa determine numarul elementelor de tip palindrom continute de fisierul date.in (palindrom este un numar de cel putin doua cifre care citit de la dreapta la stanga este identic cu numarul citit de la stanga la dreapta);
d. Scrieti in fisierul text date.out elementele de pe linia a doua din matricea de mai sus, ordonate crescator.
Exemplu:
Date de intrare:
13 2 3 66 55 4 3 22 2 3 4 5 1 2 1 17
Date de iesire :
a) Fisierul text date.in contine matricea:
13 2 3 66
55 4 3 22
2 3 4 5
1 2 1 17
b) Elementul maxim de pe diagonala principala a matricei din fisierul date.in este:17
c) Exista 3 elemente de tip palindrom.
d) Fisierul date.out contine pe o linie: 3 4 22 55
Rezolvare:
in programul principal se citesc datele de la tastatura si se depun in fisierul date.in, sub forma unui tablou bidimensional ;
in subprogramul palindrom se verifica daca exista elemente palindrom in matrice si in caz afirmativ cate sunt ; numarul elementelor palindrom se transmite programului principal si se afiseaza ;
in subprogramul maxim se cauta elementul maxim al tabloului situat ,pe diagonala principala ,si se transmite programului principal unde se afiseaza ;
in programul principal se ordoneaza elementele de pe linia a doua a tabloului si noul tablou se depune in fisierul date.out
Varianta PASCAL type matr=array[1..50,1..50] of integer; var a:matr; i,j,k,elem:integer; f,h:text; function palindrom(a:matr; k:integer):integer; var i,j,nr,c,p:integer; begin c:=0; for i:=1 to k do for j:=1 to k do begin nr:=0; p:=0; if a[i][j]>9 then begin nr:=a[i][j]; while nr<>0 do begin p:=p*10 + nr mod 10; nr:=nr div 10; end; end; if p=a[i][j] then inc(c); end; palindrom:=c; end; function maxim (a:matr; k:integer):integer var max:integer; begin max:=a[1][1]; for i:=1 to k do if a[i][i]>max then max:=a[i][i]; maxim:=max; end; begin write('dati dimensiunile matricii '); readln(k); assign (f,'date.in');rewrite(f); for i:=1 to k do begin for j:=1 to k do begin read(a[i][j]); write(f,a[i][j],' '); end; writeln(f,' '); end; close(f); writeln; writeln('elementul maxim de pe diagonala principala ',maxim(a,k)); writeln(' exista ',palindrom(a,k),' elemente de tip palindrom '); for i:=1 to k do for j:=i+1 to k do if a[2][i]>a[2][j] then begin elem:=a[2][i]; a[2][i]:=a[2][j]; a[2][j]:=elem; end; assign (h,'date.out');rewrite(h); for i:=1 to k do write(h,a[2][i],' '); close(h); end. |
Varianta C #include <fstream.h> #include <stdlib.h> fstream f('date.in',ios::out); fstream h('date.out',ios::out); int a[50][50],i,j,k,elem; int palindrom(int a[50][50],int k) } if (p==a[i][j]) c++; } return c; } int maxim(int a[50][50],int k) void main() f<<' '; } cout<<endl; // b) cout<<' Elementul maxim pe diagonala principala '<<maxim(a,k); // c) cout<<endl<<'Exista '<<palindrom(a,k)<<' elemente de tip palindrom'; // d) for(i=1;i<=k;i++) for (j=i+1;j<=k;j++) if (a[2][i]>a[2][j]) for (i=1;i<=k;i++) h<<a[2][i]<<' '; h<<endl; |
Subiectul nr.8
Se citeste de la tastatura un sir de 16 numere intregi mai mici decat 100.
a) Sa se creeze fisierul text date.in care sa contina patru linii. Fiecare linie afisata contine elementele unei linii dintr-o matrice 4x4, separate prin spatii;
b) Sa se scrie un subprogram care sa returneze elementul maxim de pe diagonala secundara a matricei din fisierul date.in;
c) Sa se scrie un subprogram care sa determine numarul elementelor super prime continute de fisierul date.in (un numar este superprim daca este prim atat el cat si rasturnatul lui);
d) Scrieti in fisierul text date.out elementele de pe linia a treia din matricea de mai sus, ordonate crescator.
Exemplu:
Date de intrare:
13 2 3 66 55 4 3 22 2 3 4 5 1 2 1 17
Date de iesire :
a) Fisierul text date.in contine matricea:
13 2 3 66
55 4 3 22
2 3 4 5
1 2 1 17
b) Elementul maxim de pe diagonala secundara a matricei din fisierul date.in este: 66
c) Exista 2 numere superprime.
d) Fisierul date.out contine pe o linie: 2 3 4 5
Rezolvare:
in programul principal se citesc datele de la tastatura si se depun in fisierul date.in, sub forma unui tablou bidimensional ;
se citeste fisierul date.in si se depun elementele tabloului in variabila a de tip tablou bidimensional ;
in subprogramul maxim se cauta elementul maxim al tabloului situat ,pe diagonala secundara ,si se transmite programului principal , unde se afiseaza ;
in subprogramul superprime se verifica daca exista elemente super prime in matrice si in caz afirmativ cate sunt ; numarul elementelor superprime se transmite programului principal si se afiseaza ;
in programul principal se ordoneaza elementele de pe linia a treia a tabloului si se depun in fisierul date.out
Varianta PASCAL type matr=array[1..50,1..10] of integer; var a:matr; i,j,k,elem:integer; f,g,h:text; function maxim (a:matr;k:integer):integer; var max,i:integer; begin max:=a[1][k]; for i:=1 to k do if a[i][k-i+1]>max then max:=a[i][k-i+1]; maxim:=max; end; function superprim (a:matr;k:integer):integer var i,j,nr,c,p,inv,m:integer; begin c:=0; for i:=1 to k do for j:=1 to k do if a[i][j]>9 then begin p:=0; for nr:=2 to a[i][j] div 2 do if a[i][j] mod nr =0 then inc(p); if p=0 then begin inv:=1; m:=a[i][j]; while m<>0 do begin inv:=inv*10 + m mod 10; m:=m div 10; end; p:=0; for nr:=2 to inv div 2 do if inv mod nr =0 then inc(p); if p=0 then inc(c); end; end; superprim:=c; end; begin assign (f,'date.in');rewrite(f); for i:=1 to 4 do begin for j:=1 to 4 do begin read(elem); write(f,elem,' '); end; writeln(f,' '); end; close(f); assign (g,'date.in'); reset(g); for i:=1 to 4 do for j:=1 to 4 do read(g,a[i][j]); close(g); writeln; writeln(' elementul maxim ',maxim(a,4)); writeln(' numarul de elemente superprime ',superprim(a,4)); for i:=1 to 3 do for j:=i+1 to 4 do if a[3][i]>a[3][j] then begin elem:=a[3][i]; a[3][i]:=a[3][j]; a[3][j]:=elem; end; assign (h,'date.out');rewrite(h); for j:=1 to 4 do write(h,a[3][j],' '); close(h); end. |
Varianta C #include <fstream.h> #include <stdlib.h> fstream f('date.in',ios::out); fstream g('date.in',ios::in); fstream h('date.out',ios::out); int a[50][50],i,j,k,elem; int maxim(int a[50][50],int k) int superprim (int a[50][50],int k) p=0; for(nr=2;nr<inv/2;nr++) if (inv%nr==0) p++; if (p==0) } } } return c; } void main() // a) f<<endl;} f.close(); // b) for (i=1;i<=4;i++) for (j=1;j<=4;j++) g>>a[i][j]; g.close(); cout<<' Elementul maxim '<<maxim(a,4); // c) cout<<' Numarul de elem superprime '<<superprim(a,4); // d) for (i=1;i<=3;i++) for (j=i+1;j<=4;j++) if (a[3][i]>a[3][j]) for(j=1;j<=4;j++) h<<a[3][j]<<' '; h<<endl; h.close(); |
Subiectul nr.9
Se citeste de la tastatura un sir de 10 numere intregi mai mici decat 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa returneze suma cifrelor elementului maxim din fisierul date.in;
c) Sa se scrie un subprogram care sa determine numarul elementelor prime continute de fisierul date.in;
d) Scrieti in fisierul text date.out sirul dat, ordonat crescator.
Exemplu:
Date de intrare :
37 23 4 77 12 34 5 90 18 19
Date de iesire:
a) Fisierul text date.in contine pe o linie: 37 23 4 77 12 34 5 90 18 19
b) Suma cifrelor elementului maxim din fisierul date.in este: 9
c) Numarul elementelor prime continute de fisierul date.in : 4
d) Fisierul text date.out contine pe o linie: 4 5 12 18 19 23 34 37 77 90
Rezolvare :
in programul principal se citesc datele de la tastatura si se depun in fisierul date.in
se citeste fisierul date.in si se depun elementele intr-un vector ; in subprogramul maxim se cauta elementul maxim din vector si se determina suma cifrelor sale ;
in subprogramul prime se determina numarul elementelor prime din fisier si rezultatul este returnat programului principal ;
in programul principal se ordoneaza elementele si se depun in fisierul date.out.
Varianta PASCAL type vect=array[1..10]of integer; var a:vect; f,g:text; b,i,ok,aux:integer; function maxim (a:vect;k:integer):integer; var i,max,s:integer; begin max:=a[1]; s:=0; for i:=2 to k do if max<a[i] then max:=a[i]; i:=max; while i<>0 do begin s:=s+i mod 10; i:=i div 10; end; maxim:=s; end; function prime (a:vect;k:integer):integer; var i,p,l,j:integer; begin p:=0; for i:=1 to k do begin l:=1; for j:=2 to a[i] div 2 do if a[i] mod j =0 then l:=0; if l=1 then inc(p); end; prime:=p; end; begin assign (f,'date.in'); rewrite(f); for i:=1 to 10 do begin read(b); write(f,b,' '); end; close(f); reset(f); for i:=1 to 10 do read(f,a[i]); writeln; writeln(' suma cifrelor ',maxim(a,10)); writeln(' numarul elementelor prime ',prime(a,10)); ok:=1; while ok=1 do begin ok:=0; for i:=1 to 10 do if a[i]>a[i+1] then begin ok:=1; aux:=a[i]; a[i]:=a[i+1]; a[i+1]:=aux; end; end; assign (g,'date.out'); rewrite(g); for i:=1 to 10 do write(g,a[i],' '); close(g); end. |
Varianta C #include <fstream.h> #include <stdlib.h> int a[10],b; int maxim(int a[50],int k) return s; int prime(int a[50],int k) return p; void main() f.close(); // b) for(i=1;i<=10;i++) g>>a[i]; cout<<endl<<' suma cifrelor '<<maxim(a,10); // c) cout<<endl<<'numarul elementelor prime '<<prime(a,10); // d) while(ok==1) } for(i=1;i<=10;i++) h<<a[i]<<' '; f.close(); g.close(); h.close(); |
Subiectul nr.10
Se citeste de la tastatura un sir de 10 numere intregi mai mici decat 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa returneze numarul de elemente din fisierul date.in care au ultima cifra egala cu 3;
c) Sa se scrie un subprogram care sa determine numarul elementelor continute de fisierul date.in care au suma cifrelor numar par;
d) Scrieti in fisierul text date.out sirul dat, ordonat descrescator.
Exemplu:
Date de intrare :
17 23 45 67 12 34 3 90 8 9
Date de iesire:
a) Fisierul text date.in contine pe o linie: 17 23 45 67 12 34 3 90 8 9
b) Numarul de elemente din fisierul date.in care au ultima cifra egala cu 3: 2
c) Numarul elementelor continute de fisierul date.in care au suma cifrelor numar par: 2
d) Fisierul text date.out contine pe o linie: 90 77 37 34 23 19 18 12 5 4
Rezolvare:
in programul principal se citesc datele de la tastatura si se depun in fisierul date.in
se citeste fisierul date.in si se depun elementele intr-un vector ; in subprogramul nrtrei se calculeaza cate elemente din fisier au ultima cifra trei ; rezultatul este transmis in programul principal si afisat ;
in subprogramul cifre se calculeaza suma cifrelor elementelor din fisier si daca aceasta suma este para se incrementeaza variabila nr ; in programul principal se transmite acest numar si se afiseaza pe monitor ;
tot in programul principal se ordoneaza elementele sirului dat si se scriu in fisierul date.out.
Varianta PASCAL type vect=array[1..10] of integer; var a:vect; f,g:text; b,i,ok,aux:integer; function nrtrei (a:vect; k:integer):integer; var i,trei:integer; begin trei:=0; for i:=1 to k do if a[i] mod 10 = 3 then inc(trei); nrtrei:=trei; end; function cifre (a:vect; k:integer):integer; var i,s,nr,p:integer; begin nr:=0; for i:=1 to k do begin s:=0; p:=a[i]; while p<>0 do begin s:=s+p mod 10; p:=p div 10; end; if s mod 2 =0 then inc(nr); end; cifre:=nr; end; begin assign (f,'date.in'); rewrite(f); for i:=1 to 10 do begin read(b); write(f,b,' '); end; close(f); reset(f); for i:=1 to 10 do read(f,a[i]); close(f); writeln; writeln(' numarul de elemente care se termina cu trei ',nrtrei(a,10)); writeln; writeln(' numarul de elemente cu suma cifrelor para ',cifre(a,10)); assign (g,'date.out'); rewrite(g); ok:=1; while ok=1 do begin ok:=0; for i:=1 to 10 do if a[i]<a[i+1] then begin ok:=1; aux:=a[i]; a[i]:=a[i+1]; a[i+1]:=aux; end; end; for i:=1 to 10 do write(g,a[i],' '); close(g); end. |
Varianta C #include <fstream.h> #include <stdlib.h> int a[10],b; int nrtrei(int a[50],int k) int cifre(int a[50], int k) if(s%2==0) nr++; } return nr; void main() f.close(); // b) for(i=1;i<=10;i++) g>>a[i]; cout<<endl; cout<< 'numarul de elemente care se termina cu trei '; cout<<nrtrei(a,10); // c) cout<<endl; cout<<' numarul de elemente care au suma cifrelor para '; cout<<cifre(a,10); // d) while(ok==1) } for(i=1;i<=10;i++) h<<a[i]<<' '; f.close(); g.close(); h.close(); |
Subiectul nr.11
Se citeste de la tastatura un sir de 10 numere intregi mai mici decat 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa returneze suma cifrelor pare ale numerelor din fisierul date.in;
c) Sa se scrie un subprogram care sa determine numarul elementelor prime de doua cifre continute de fisierul date.in;
d) Scrieti in fisierul text date.out sirul dat, ordonat crescator.
Exemplu:
Date de intrare :
7 23 4 17 12 34 5 90 8 9
Date de iesire :
a) Fisierul text date.in contine pe o linie: 7 23 4 17 12 34 5 90 8 9
b) Suma cifrelor pare ale numerelor din fisierul date.in este: 20
c) In fisier sunt 2 numere prime de doua cifre
d) Fisierul text date.out contine pe o linie: 4 5 7 8 9 12 17 23 34 90
Rezolvare :
in programul principal se citesc datele de la tastatura si se depun in fisierul date.in
se citeste fisierul date.in si se memoreaza elementele sale intr-un vector a
in subprogramul suma se calculeaza suma cifrelor pare ale elementelor pare din vectorul a ; rezultatul se transmite programului principal si se afiseaza ;
in subprogramul nrprime se determina numarul elementelor prime de doua cifre din fisier ;
sirul de numere date in fisierul date.in se ordoneaza si se depune in fisierul date.out
Varianta PASCAL type vect=array[1..10] of integer; var a:vect; b,i,ok,aux:integer; f,g:text; function suma (a:vect; k:integer):integer; var i,s,m,nr:integer; begin s:=0; for i:=1 to k do begin nr:=a[i]; while nr<>0 do begin m:=nr mod 10; if m mod 2 = 0 then s:=s+m; nr:=nr div 10; end; end; suma:=s; end; function nrprime (a:vect; k:integer):integer; var i,j,nr,p:integer; begin nr:=0; for i:=1 to k do if ((a[i]>9) and (a[i] < 1000)) then begin p:=1; for j:=2 to a[i] div 2 do if a[i] mod j = 0 then p:=0; if p=1 then inc(nr); end; nrprime:=nr; end; begin assign (f,'date.in'); rewrite(f); for i:=1 to 10 do begin read(b);write(f,b,' '); end; close(f); reset(f); for i:=1 to 10 do read(f,a[i]); close(f); writeln; writeln(' suma cifrelor pare ',suma(a,10)); writeln(' numarul de elemente prime ',nrprime(a,10)); assign (g,'date.out');rewrite(g); ok:=1; while ok=1 do begin ok:=0; for i:=1 to 9 do if a[i]>a[i+1] then begin ok:=1; aux:=a[i]; a[i]:=a[i+1]; a[i+1]:=aux; end; end; for i:=1 to 10 do write(g,a[i],' '); close(g); end. |
Varianta C #include <fstream.h> #include <stdlib.h> int a[50],b; int suma(int a[50],int k) return s; int nrprime(int a[50],int k) return nr; void main() f.close(); // b) cout<<endl; cout<<' suma cifrelor pare '; cout<<suma(a,10); cout<<endl; // c) cout<<' numarul de elemente prime '; cout<<nrprime(a,10); // d) while(ok==1) } for(i=1;i<=10;i++) h<<a[i]<<' '; f.close(); g.close(); h.close(); |
Subiectul nr.12
Se citeste de la tastatura un sir de 10 numere intregi mai mici decat 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa returneze elementele din fisierul date.in care apartin intervalului [a,b] unde a si b sunt numere intregi mai mici decat 100 citite de la tastatura;
c) Sa se scrie un subprogram care sa determine cel mai mare numar prim din fisierul date.in;
d) Scrieti in fisierul text date.out sirul dat, ordonat descrescator.
Exemplu:
Date de intrare :
37 23 4 77 12 34 5 90 18 19
Date de iesire :
a) Fisierul text date.in contine pe o linie: 37 23 4 77 12 34 5 90 18 19
b) Pentru intervalul [36, 80] elementele din fisierul date.in care apartin intervalului sunt: 37 77
c) Cel mai mare numar prim din fisierul date.in este: 37
d) Fisierul text date.out contine pe o linie: 90 77 37 34 23 19 18 12 5 4
Rezolvare :
se citesc datele de la tastatura si se depun in fisierul date.in
in subprogramul apartine se verifica elementele care apartin intervalului [a,b] si se afiseaza cele aflate in interiorul intervalului ;
datele din fisierul date.in se memoreaza in vectorul v care se utilizeaza apoi in rezolvarea cerintelor problemei ;
subprogramul maxprim determina cel mai mare numar prim si il returneaza programului principal ;
in programul principal se sorteaza elementele vectorului v si se depun in fisierul de iesire date.out.
Varianta PASCAL var f,g:text; p:boolean; i,nr,a,b,contor:integer; v:array[1..10] of integer; procedure creare; var i,nr:integer; begin assign(f,'date.in'); rewrite(f); for i:=1 to 10 do begin read(nr); write(f,nr,' ');end; close(f);end; procedure apartine; begin write('a= '); readln(a); write('b= '); readln(b);contor:=0; assign(f,'date.in');reset(f); read(f,nr); while not eof(f) do begin if(nr>=a)and (nr<=b) then begin inc(contor);v[contor]:=nr; end; read(f,nr);end; end; function maxprim:integer; var nrdiv,maxp,j:integer; begin assign(f,'date.in'); reset(f); maxp:=0;read(f,nr); v[1]:=nr;j:=1; while not eof(f) do begin nrdiv:=0; for i:=1 to nr do if nr mod i=0 then inc(nrdiv); if nrdiv = 2 then if maxp<nr then maxp:=nr; read(f,nr);inc(j);v[j]:=nr; end; maxprim:=maxp; end; begin creare; apartine; for i:=1 to contor do write(' ',v[i]); writeln; writeln(' ',maxprim); assign (g,'date.out');rewrite(g); p:=true; while p do begin p:=false; for i:=1 to 9 do if v[i]<v[i+1] then begin p:=true;a:=v[i]; v[i]:=v[i+1]; v[i+1]:=a;end; end; for i:=1 to 10 do write(g,v[i],' '); close(g); end. |
Varianta C #include <fstream.h> #include <stdlib.h> int i,a,b,v[10],p,j,contor=0; fstream f('date.in',ios::out); fstream h('date.out',ios::out); void apartine(int a,int b) int maxprim(int v[10]) return maxp; void main() f.close(); // b) cout<<endl<<'a= ';cin>>a; cout<<endl<<'b= ';cin>>b; apartine(a,b);cout<<endl; // c) cout<<endl<<' '<<maxprim(v); // d) for (i=1;i<=9;i++) for (j=i+1;j<=10;j++) if (v[i]<v[j]) ; for (i=1;i<=10;i++) h<<v[i]<<' '; h.close(); } |
Subiectul nr.13
Se citeste de la tastatura un sir de 10 numere intregi mai mici decat 100.
a) Sa se creeze fisierul text date.in care sa contina pe o linie cele 10 valori, separate prin spatiu;
b) Sa se scrie un subprogram care sa returneze suma cifrelor impare ale numerelor din fisierul date.in;
c) Sa se scrie un subprogram care sa determine cel mai mare numar palindrom din fisierul date.in (numar palindrom este un sir de cel putin doua cifre care citit de la dreapta la stanga este identic cu numarul citit de la stanga la dreapta);
d) Scrieti in fisierul text date.out sirul dat, ordonat crescator.
Exemplu:
Date de intrare:
7 23 4 17 12 33 5 99 8 9
Date de iesire:
a) Fisierul text date.in contine pe o linie: 7 23 4 17 12 33 5 99 8 9
b) Suma cifrelor impare ale numerelor din fisierul date.in: 57
c) Cel mai mare numar palindrom din fisierul date.in este: 99
d) Fisierul text date.out contine pe o linie: 4 5 7 8 9 12 17 33 34 99
Rezolvare:
datele se citesc in programul principal si se depun in fisierul date.in
din fisierul date.in se preiau si se depun in vectorul v
suma cifrelor impare ale numerelor din fisier se calculeaza in subprogramul suma care intoarce in programul principal rezultatul ;acesta se afiseaza pe monitor ;
calculul celui mai mare palindrom se face in subprogramul maxpalin si rezultatul este transmis programului principal unde se afiseaza pe monitor ;
tot in programul principal se face si sortarea vectorului v, crescator, si apoi se memoreaza in fisierul date.out.
Varianta PASCAL type vect=array[1..10] of integer; var f,g:text;v:vect;i,l,r,a:integer; function suma (a:vect;k:integer):integer; var j,s,nr:integer; begin s:=0; for j:=1 to k do begin nr:=a[j]; while nr<>0 do begin if (nr mod 10) mod 2<>0 then s:=s+nr mod 10; nr:=nr div 10; end; end; suma:=s; end; function maxpalin (a:vect;k:integer):integer var j,nr,maxp,p:integer; begin maxp:=0; for j:=1 to k do begin p:=0; if a[j]>9 then begin nr:=a[j]; while nr<>0 do begin p:=p*10 + nr mod 10; nr:=nr div 10; end; if(p=a[j])and(maxp<a[j]) then maxp:=a[j]; end; end; maxpalin:=maxp; end; begin assign (f,'date.in');rewrite(f); for i:=1 to 10 do begin read(a);write(f,a,' '); end; close(f);reset(f); for i:=1 to 10 do read(f,v[i]); close(f);writeln; writeln(' suma este ',suma(v,10)); writeln(' maxim palindrom in fisier ',maxpalin(v,10)); for i:=1 to 9 do for r:=i+1 to 10 do if v[i]>v[r] then begin l:=v[i];v[i]:=v[r]; v[r]:=l;end; assign (g,'date.out');rewrite(g); for i:=1 to 10 do write(g,v[i],' '); close(g); end. |
Varianta C #include <fstream.h> #include <stdlib.h> int i,v[10],l,r,a; fstream f('date.in',ios::out); fstream g('date.in',ios::in); fstream h('date.out',ios::out); int suma(int a[10],int k) } return s;} int maxpalin(int a[10],int k) if ((p==a[j])&& (maxp<a[j])) maxp=a[j]; } } return maxp; } void main() f.close(); // b) for (i=1;i<=10;i++) g>>v[i]; g.close(); cout<<endl<<' '<<suma(v,10); // c) cout<<endl<<' '<<maxpalin(v,10); // d) cout<<endl; for(i=1;i<=9;i++) } for (i=1;i<=10;i++) h<<v[i]<<' '; h.close();} |
Subiectul Nr.16
Sa se realizeze un program care sa raspunda urmatoarelor solicitari. Sa se creeze fisierul text date.in care sa contina un sir de 10 numere intregi aleatoare mai mici decat 100. Cerinte :
a) Sa se scrie un subprogram care sa returneze cate dintre elementele din fisierul date.in au trei divizori;
b) Sa se scrie un subprogram care sa determine cel mai mare numar neprim din fisierul date.in;
c) Scrieti in fisierul text date.out sirul de mai sus ordonat descrescator.
Am folosit subprogramele:
- CREARE: creaza un fisier cu structura ceruta de date -
- AFISARE: citeste datele din fisierul de intrare si afiseaza pe ecran datele citite din fisier
- NR_A: citeste datele din fisierul de intrare si calculeaza numarul de elemente din fisierul de intrare care au exact 3 divizori, numar pe care il scrie pe ecran;
- MAXIM: citeste datele din fisierul de intrare, afla cel mai mare numar neprim dintre datele citite si il returneaza pentru programul principal; daca nu exista numere neprime, atunci se returneaza o valoare negativa;
- SORTARE: citeste datele din fisierul de intrare si le sorteaza, dupa care le scrie in fisierul de iesire.
Varianta PASCAL uses crt; var a:array[1..20] of integer; f,g:text; procedure creare; var i:integer; begin assign(f,'date.in'); rewrite(f); randomize; for i:=1 to 10 do write(f,random(100),' '); close(f); end; procedure afisare; var i:integer; begin reset(f); for i:=1 to 10 do begin read(f,a[i]); write(a[i],' '); end; writeln; end; function nr_a:integer; var nr,d,i,x:integer; prim:boolean; begin reset(f); for i:=1 to 10 do read(f,a[i]); close(f); nr:=0; for i:=1 to 10 do begin x:=trunc(sqrt(a[i])); if x*x=a[i] then begin prim:=true; for d:=2 to trunc(sqrt(x)) do if x mod d = 0 then begin prim:=false; break; end; if (x=0) or (x=1) then prim:=false; if prim then nr:=nr+1; end; end; nr_a:=nr; end; function maxim:integer; var max,i,d,x:integer; prim:boolean; begin reset(f); for i:=1 to 10 do read(f,a[i]); close(f); max:=-maxint; for i:=1 to 10 do begin prim:=true; for d:=2 to trunc(sqrt(a[i])) do if a[i] mod d = 0 then begin prim:=false; break; end; if (a[i]=0) or (a[i]=1) then prim:=false; if not prim then if a[i]>max then max:=a[i]; end; maxim:=max; end; procedure sortare; var i,j,x:integer; begin assign(g,'date.out'); rewrite(g); reset(f); for i:=1 to 10 do read(f,a[i]); close(f); for i:=1 to 9 do for j:=i+1 to 10 do if a[i]>a[j] then begin x:=a[i]; a[i]:=a[j]; a[j]:=x; end; for i:=1 to 10 do write(g,a[i],''); close(g); end; begin clrscr; creare; write('Sirul generat: ');afisare; writeln('a) Sirul are ',nr_a,' elemente cu exact 3 div.'); if maxim>=0 then writeln('b)',maxim) else writeln('b) Nu sunt numere neprime in sirul generat'); sortare; end. |
Varianta C/C++ #include <iostream.h> #include <conio.h> #include <math.h> #include <stdlib.h> #include <fstream.h> int a[20]; void creare() void afisare() cout<<endl; f.close(); int nr_a() if (x==0 || x==1) prim=0; if (prim) nr++; } } f.close(); return nr; int maxim() if (a[i]==0 || a[i]==1) prim=0; if (!prim) if (a[i]>max) max=a[i]; } f.close(); return max; void sortare() for (i=1; i<=10; i++) g<<a[i]<< " '; f.close(); g.close(); void main() |
Subiectul Nr.17
Sa se realizeze un program care sa raspunda urmatoarelor solicitari. Sa se creeze fisierul text date.in care sa contina un sir de 10 numere intregi aleatoare mai mici decat 100. Cerinte :
a) Sa se scrie un subprogram care sa returneze elementele din fisierul date.in care sunt divizibile cu o valoare x citita de la tastatura;
b) Sa se scrie un subprogram care sa insereze intre ultimul si penultimul element al sirului din fisierul date.in media aritmetica a lor;
c) Scrieti in fisierul text date.out sirul de mai sus ordonat descrescator.
Observatii
- datele cerute la cerinta a) au fost afisate pe ecran;
- la punctul b), media aritmetica poate "iesi" din Z si de aceea, am lucrat cu un vector de numere reale
Am folosit subprogramele:
- CREARE: creaza structura ceruta de date
- AFISARE: citeste datele din fisierul de intrare si le afiseaza pe ecran
- DIVIZ: citeste datele din fisierul de intrare, apoi citeste o valoare x si calculeaza numarul de elemente din sirul de intrare care se divid cu x
- INSERARE: citeste datele din fisierul de intrare si realizeaza inserarea ceruta
- SORTARE: citeste datele din fisierul de intrare si le sorteaza, dupa care le scrie in fisierul de iesire
uses crt; var a:array[1..20] of integer; f,g:text; procedure creare; var i:integer; begin assign(f,'date.in'); rewrite(f); randomize; for i:=1 to 10 do write(f,random(100),' '); close(f); end; procedure afisare; var i:integer; begin reset(f); for i:=1 to 10 do begin read(f,a[i]); write(a[i],' '); end; writeln; end; procedure inserare; var b:array[1..11] of real; i:integer; begin reset(f); for i:=1 to 10 do read(f,a[i]); for i:=1 to 9 do b[i]:=a[i]; b[11]:=a[10]; b[10]:=(a[9]+a[10])/2; for i:=1 to 11 do write(b[i]:0:1,' '); writeln; end; procedure diviz; var i,k,x:integer; begin reset(f); k:=0; for i:=1 to 10 do read(f,a[i]); close(f); write('a) x: '); readln(x); for i:=1 to 10 do if a[i] mod x = 0 then begin k:=k+1; write(a[i],' '); end; if k=0 then write('Nu sunt asemenea numere in sir'); writeln; end; procedure sortare; var i,j,x:integer; begin assign(g,'date.out'); rewrite(g); reset(f); for i:=1 to 10 do read(f,a[i]); for i:=1 to 9 do for j:=i+1 to 10 do if a[i]<a[j] then begin x:=a[i]; a[i]:=a[j]; a[j]:=x; end; for i:=1 to 10 do write(g,a[i],' '); end; begin clrscr; creare; assign(f,'date.in'); write('Sirul generat: '); afisare; diviz; inserare; sortare; close(f); close(g); end. |
#include <iostream.h> #include <conio.h> #include <math.h> #include <stdlib.h> #include <fstream.h> int a[20]; void creare() void afisare() cout<<endl; f.close(); void inserare() void diviz() if (k==0) cout<<'Nu sunt asemenea numere in sir'; cout<<endl; void sortare() for (i=1; i<=10; i++) g<<a[i]<<' '; f.close(); g.close(); void main() |
Subiectul Nr.18
Sa se realizeze un program care sa raspunda urmatoarelor solicitari. Sa se creeze fisierul text date.in care sa contina un sir de 10 numere intregi aleatoare mai mici decat 100. Cerinte:
a) Sa se scrie un subprogram care sa returneze cel mai mare divizor comun al elementelor din fisierul date.in;
b) Sa se scrie un subprogram care sa insereze intre primul si al doilea element al sirului din fisierul date.in o valoare x citita de la tastatura;
c) Scrieti in fisierul text date.out sirul de mai sus ordonat descrescator.
Am folosit subprogramele:
- CREARE: creaz structura ceruta de date
- AFISARE: citeste datele de intrare din fisierul de intrare si le afiseaza pe ecran
- CMMDC: citeste datele din fisierul de intrare si calculeaza cmmdc-ul elementelor din fisier (folosind algoritmul lui Euclid)
- INSERARE: citeste datele din fisierul de intrare si realizeaza inserarea ceruta;
- SORTARE: citeste datele din fisierul de intrare si le sorteaza, dupa care le scrie in fisierul de iesire
uses crt; var a:array[1..20] of integer; f,g:text; procedure creare; var i:integer; begin assign(f,'date.in'); rewrite(f); randomize; for i:=1 to 10 do write(f,random(100),' '); close(f); end; procedure afisare; var i:integer; begin reset(f); for i:=1 to 10 do begin read(f,a[i]); write(a[i],' '); end; writeln; end; function cmmdc:integer; var dc,i,x,y,r:integer; begin reset(f); for i:=1 to 10 do read(f,a[i]); dc:=a[1]; for i:=2 to 10 do begin x:=a[i]; y:=dc; while x mod y <> 0 do begin r:=x mod y; x:=y; y:=r; end; dc:=y; end; cmmdc:=dc; end; procedure inserare; var x,i:integer; b:array[1..11] of integer; begin reset(f); for i:=1 to 10 do read(f,b[i]); write('x: '); readln(x); for i:=10 downto 2 do b[i+1]:=b[i]; b[2]:=x; write('b) '); for i:=1 to 11 do write(b[i],' '); writeln; end; procedure sortare; var i,j,x:integer; begin assign(g,'date.out'); rewrite(g); reset(f); for i:=1 to 10 do read(f,a[i]); close(f); for i:=1 to 9 do for j:=i+1 to 10 do if a[i]<a[j] then begin x:=a[i]; a[i]:=a[j]; a[j]:=x; end; for i:=1 to 10 do write(g,a[i],' '); close(g); end; begin clrscr; creare; assign(f,'date.in'); write('Sirul generat: '); afisare; writeln('a) Cmmdc: ',cmmdc); inserare; sortare; close(f); close(g); end. |
#include <iostream.h> #include <conio.h> #include <stdlib.h> #include <fstream.h> int a[20]; void creare() void afisare() cout<<endl; f.close(); int cmmdc() dc=y; } return dc; void inserare() void sortare() for (i=1; i<=10; i++) g<<a[i]<<' '; g.close(); void main() |
Subiectul Nr.19
Sa se realizeze un program care sa raspunda urmatoarelor solicitari. Sa se creeze fisierul text date.in care sa contina un sir de 10 numere intregi aleatoare mai mici decat 100. Cerinte
a) Sa se scrie un subprogram care sa returneze cate dintre elementele din fisierul date.in sunt prime cu o valoare x citita de la tastatura;
b) Sa se scrie un subprogram care sa calculeze media aritmetica a numerelor din sir si sa o insereze la jumatatea sirului;
d) Scrieti in fisierul text date.out sirul de mai sus ordonat descrescator.
Observatii
pentru cerinta a) se lucreaza cu un vector de numere reale;
Am folosit subprogramele:
- CREARE: creaza structura ceruta de date
- AFISARE: citeste datele de intrare din fisierul de intrare si afiseaza pe ecran datele citite din fisier
- PRIME: citeste datele din fisierul de intrare si returneaza numarul de elemente din sirul de intrare si care sunt prime cu valoarea x citita de la tastatura, adica (a[i],x)=1;
- INSERARE: citeste datele din fisierul de intrare si realizeaza inserarea dorita (pe pozitia 6) intr-un vector de numere reale;
- SORTARE: citeste datele din fisierul de intrare si le sorteaza, dupa care le scrie in fisierul de iesire
uses crt; var a:array[1..20] of integer; f,g:text; x,nr:integer; procedure creare; var i:integer; begin assign(f,'date.in'); rewrite(f); randomize; for i:=1 to 10 do write(f,random(100),' '); close(f); end; procedure afisare; var i:integer; begin reset(f); for i:=1 to 10 do begin read(f,a[i]); write(a[i],' '); end; writeln; end; procedure prime; var i,p,q,r:integer; begin nr:=0; reset(f); for i:=1 to 10 do read(f,a[i]); close(f); write('x: '); readln(x); for i:=1 to 10 do begin p:=a[i]; q:=x; while p mod q <> 0 do begin r:=p mod q; p:=q; q:=r; end; if q=1 then nr:=nr+1; end; end; procedure inserare; var x,i:integer; b:array[1..11] of real; s:real; begin reset(f); s:=0; for i:=1 to 10 do begin read(f,b[i]); s:=s+b[i]; end; close(f); for i:=10 downto 6 do b[i+1]:=b[i]; b[6]:=s/10; write('b) '); for i:=1 to 11 do write(b[i]:0:2,' '); writeln; end; procedure sortare; var i,j:integer; begin assign(g,'date.out'); rewrite(g); reset(f); for i:=1 to 10 do read(f,a[i]); close(f); for i:=1 to 9 do for j:=i+1 to 10 do if a[i]<a[j] then begin x:=a[i]; a[i]:=a[j]; a[j]:=x; end; for i:=1 to 10 do write(g,a[i],' '); close(g); end; begin clrscr; creare; assign(f,'date.in'); write('Sirul generat: '); afisare; prime; writeln('a) Nr de elemente prime cu ',x,': ',nr); inserare; sortare; end. |
#include <iostream.h> #include <conio.h> #include <stdlib.h> #include <fstream.h> int a[200],x,nr=0; void creare() void afisare() cout<<endl; f.close(); void prime() if (q==1) nr++; } void inserare() f.close(); for (i=10; i>=6; i--) b[i+1]=b[i]; b[6]=s/10.0; cout<<'b) '; for(i=1; i<=11; i++) cout<<b[i]<<' '; cout<<endl; void sortare() for (i=1; i<=10; i++) g<<a[i]<<' '; g.close(); void main() |
Subiectul Nr.20
Sa se realizeze un program care sa raspunda urmatoarelor solicitari. Sa se creeze fisierul text date.in care sa contina un sir de 10 numere intregi aleatoare mai mici decat 100. Cerinte
a) Sa se scrie un subprogram care sa determine elementul minim si maxim din fisierul date.in si pozitiile pe care le ocupa in sirul numerelor date;
b) Sa se scrie un subprogram care sa determine cate dintre elementele sirului cuprinse intr-un interval citit de la tastatura sunt numere pare;
c) Scrieti in fisierul text date.out sirul de mai sus ordonat crescator.
Am folosit subprogramele:
- CREARE: creaza structura ceruta de date
- AFISARE: citeste datele din fisierul de intrare si le afiseaza pe ecran
- MIN_MAX: citeste datele din fisierul de intrare si afiseaza rezultatele de la cerinta a)
- INTERVAL: citeste datele din fisierul de intrare si (de la tastatura) limitele unui interval; apoi va calcula si va afisa cate dintre elementele din fisierul de intrare sunt pare si in intervalul citit;
- SORTARE: citeste datele din fisierul de intrare si le sorteaza, dupa care le scrie in fisierul de iesire.
uses crt; var a:array[1..20] of integer; f,g:text; procedure creare; var i:integer; begin assign(f,'date.in'); rewrite(f); randomize; for i:=1 to 10 do write(f,random(100),' '); close(f); end; procedure afisare; var i:integer; begin reset(f); for i:=1 to 10 do begin read(f,a[i]); write(a[i],' '); end; writeln; end; procedure min_max; var min,max,i:integer; begin reset(f); for i:=1 to 10 do read(f,a[i]); min:=a[1]; max:=a[1]; for i:=2 to 10 do if a[i]<min then min:=a[i] else if a[i]>max then max:=a[i]; write('a) Maximul din sir:',max ,'; el se afla pe pozitiile: '); for i:=1 to 10 do if a[i]=max then write(i,' '); writeln; write('a) Minimul din sir: ',min ,'; el se afla pe pozitiile: '); for i:=1 to 10 do if a[i]=min then write(i,' '); writeln; end; procedure interval; var i,x,y,n:integer; begin reset(f); for i:=1 to 10 do read(f,a[i]); close(f); n:=0; write('Lim stanga: '); readln(x); write('Lim dreapta: '); readln(y); for i:=1 to 10 do if (a[i]>=x) and (a[i]<=y) and (a[i] mod 2 = 0) then n:=n+1; writeln('b) Nr de elem pare din [',x,',',y,']: ',n); end; procedure sortare; var i,j,x:integer; begin assign(g,'date.out'); rewrite(g); reset(f); for i:=1 to 10 do read(f,a[i]); close(f); for i:=1 to 9 do for j:=i+1 to 10 do if a[i]>a[j] then begin x:=a[i]; a[i]:=a[j]; a[j]:=x; end; for i:=1 to 10 do write(g,a[i],' '); close(g); end; begin clrscr; creare; assign(f,'date.in'); write('Sirul generat: '); afisare; min_max; interval; sortare; end. |
#include <iostream.h> #include <conio.h> #include <stdlib.h> #include <fstream.h> int a[200]; void creare() void afisare() cout<<endl; f.close(); void min_max() void interval() void sortare() for (i=1; i<=10; i++) g<<a[i]<<' '; g.close(); void main() |
Subiectul Nr.21
Sa se realizeze un program care sa raspunda urmatoarelor solicitari. Sa se creeze fisierul text date.in care sa contina un sir de 10 numere intregi aleatoare mai mici decat 100. Cerinte
a) Sa se scrie un subprogram care sa returneze cel mai mic multiplu comun dintre elementele din fisierul date.in;
b) Sa se scrie un subprogram care sa insereze intre ultimul si penultimul element al sirului din fisierul date.in media aritmetica a lor;
c) Scrieti in fisierul text date.out sirul de mai sus ordonat descrescator.
Observatii
- in fisierul de intrare am generat valori nenule si mici deoarece la cerinta a) avem de calculat cmmmc
- pentru cerinta b) se lucreaza cu un vector de numere reale
Am folosit subprogramele:
- CREARE: acesta creaza structura ceruta de date
- AFISARE: citeste datele din fisierul de intrare si le afiseaza pe ecran
- CMMMC: citeste datele din fisierul de intrare si afiseaza cmmmc al elementelor citite din fisier, dupa formula:
[x; y]=a*b / (a; b), iar (x; y) se afla cu algoritmul lui Euclid;
- INSERARE: citeste datele din fisierul de intrare si realizeaza inserarea ceruta
- SORTARE: citeste datele din fisierul de intrare si le sorteaza, dupa care le scrie in fisierul de iesire
uses crt; var a:array[1..20] of integer; f,g:text; procedure creare; var i:integer; begin assign(f,'date.in'); rewrite(f); randomize; for i:=1 to 10 do write(f,1+random(10),' '); close(f); end; procedure afisare; var i:integer; begin reset(f); for i:=1 to 10 do begin read(f,a[i]); write(a[i],' '); end; writeln; clodse(f); end; procedure cmmmc:longint; var mc,i,x,y,r:integer; begin reset(f); for i:=1 to 10 do read(f,a[i]); close(f); mc:=a[1]; for i:=2 to 10 do begin x:=a[i]; y:=mc; while x mod y <> 0 do begin r:=x mod y; x:=y; y:=r; end; mc:=a[i] div y * mc; end; writeln('a) Cmmmc=',mc); end; procedure inserare; var b:array[1..11] of real; i:integer; begin reset(f); for i:=1 to 10 do read(f,a[i]); close(f); for i:=1 to 9 do b[i]:=a[i]; b[11]:=a[10]; b[10]:=(a[9]+a[10])/2; write('b) sirul dupa inserare: '); for i:=1 to 11 do write(b[i]:0:1,' '); writeln; end; procedure sortare; var i,j,x:integer; begin assign(g,'date.out'); rewrite(g); reset(f); for i:=1 to 10 do read(f,a[i]); close(f); for i:=1 to 9 do for j:=i+1 to 10 do if a[i]<a[j] then begin x:=a[i]; a[i]:=a[j]; a[j]:=x; end; for i:=1 to 10 do write(g,a[i],' '); close(g); end; begin clrscr; creare; assign(f,'date.in'); write('Sirul generat: '); afisare; cmmmc; inserare; sortare; end. |
#include <iostream.h> #include <conio.h> #include <stdlib.h> #include <fstream.h> int a[200]; void creare() void afisare() cout<<endl; f.close(); void cmmmc() mc=a[i] / y * mc; } cout<<"a) Cmmmc='<<mc <<endl; void inserare() void sortare() for (i=1; i<=10; i++) g<<a[i]<<' '; g.close(); void main() |
Subiectul Nr.22
Sa se realizeze un program care sa raspunda urmatoarelor solicitari. Sa se creeze fisierul text date.in care sa contina o matrice cu numere intregi cu 4 linii si 4 coloane. Cerinte
a) Sa se scrie un subprogram care sa returneze elementul minim al matricei si numarul lui de aparitii;
b) Sa se scrie un subprogram care sa determine numarul elementelor de tip palindrom de sub diagonala principala a matricei (numar palindrom este un sir de cel putin doua cifre care citit de la dreapta la stanga este identic cu numarul citit de la stanga la dreapta);
c) Scrieti in fisierul text date.out elementele de pe prima linie a matricei de mai sus ordonate crescator.
Am folosit subprogramele:
- CREARE: creaza structura ceruta de date
- AFISARE: citeste datele din fisierul de intrare si le afiseaza pe ecran
- MINIM: citeste datele din fisierul de intrare, afla si afiseaza minimul si poziitiile in care acesta apare in matrice;
- PALINDROM: primeste ca parametru numirul natural x; daca x este palindrom, atunci returneaza valoarea logica ADEVARAT, iar in caz contrar, valoarea logica FALS
- NR_PALINDROM: citeste datele din fisierul de intrare, calculeaza si returneaza in programul principal numarul de palindroame de sub diagonala principala;
- SORTARE: citeste datele din fisierul de intrare, depune prima linie a matricei intr-un vector, pe care il sorteaza si il scrie in fisierul de iesire
uses crt; var a:array[1..10,1..10] of integer; f,g:text; procedure creare; var i,j:integer; begin assign(f,'date.in'); rewrite(f); randomize; for i:=1 to 4 do for j:=1 to 4 do write(f,random(100),' '); close(f); end; procedure afisare; var i,j:integer; begin reset(f); for i:=1 to 4 do begin for j:=1 to 4 do begin read(f,a[i,j]); write(a[i,j],' '); end; writeln; end; writeln; close(f); end; procedure minim; var m,i,j:integer; begin reset(f); for i:=1 to 4 do for j:=1 to 4 do read(f,a[i,j]); close(f); m:=a[1,1]; for i:=1 to 4 do for j:=1 to 4 do if a[i,j]<m then m:=a[i,j]; writeln('a) Minimul: ',m,'. Pozitiile in care apare el: '); for i:=1 to 4 do for j:=1 to 4 do if a[i,j]=m then write('(',i,',',j,') '); writeln; end; function palindrom(x:integer):boolean; var xr,z:integer; begin xr:=0; z:=x; while z<>0 do begin xr:=xr*10 + z mod 10; z:=z div 10; end; if x=xr then palindrom:=true else palindrom:=false; end; function nr_palind:integer; var i,j,nr:integer; begin reset(f); nr:=0; for i:=1 to 4 do for j:=1 to 4 do read(f,a[i,j]); close(f); for i:=1 to 4 do for j:=1 to 4 do if (i>j) and palindrom(a[i,j]) then nr:=nr+1; nr_palind:=nr; end; procedure sortare; var i,j,x:integer; v:array[1..4] of integer; begin assign(g,'date.out'); rewrite(g); reset(f); for j:=1 to 4 do read(f,v[j]); close(f); for i:=1 to 3 do for j:=i+1 to 4 do if v[i]>v[j] then begin x:=v[i]; v[i]:=v[j]; v[j]:=x; end; for i:=1 to 4 do write(g,v[i],' '); close(g); end; begin clrscr; creare; assign(f,'date.in'); writeln('Matricea generata: '); afisare; minim; write('b) Nr de palindroame de sub diag princ: ',nr_palind); sortare; end. |
#include <iostream.h> #include <conio.h> #include <stdlib.h> #include <fstream.h> int a[10][10]; void creare() f.close(); void afisare() cout<<endl; } cout<<endl; f.close(); void minim() int palindrom(int x) if (x==xr) return 1; else return 0; int nr_palind() void sortare() for (i=1; i<=4; i++) g<<v[i]<<' '; g.close(); void main() |
Subiectul Nr.23
Sa se realizeze un program care sa raspunda urmatoarelor solicitari. Sa se creeze fisierul text date.in care sa contina o matrice cu numere intregi cu 4 linii si 4 coloane. Cerinte
a) Sa se scrie un subprogram care sa returneze elementul maxim de sub diagonala secundara a matricei din fisierul date.in;
b) Sa se scrie un subprogram care sa determine cate dintre elementele matricei sunt numere perfecte;
c) Scrieti in fisierul text date.out elementele de pe coloana a doua ale matricei de mai sus ordonate crescator.
Am folosit subprogramele:
- CREARE: creaza structura ceruta de date
- AFISARE: citeste datele din fisierul de intrare si le afiseaza pe ecran
- MAXIM: citeste datele din fisierul de intrare si afiseaza maximul de sub diagonala secundara a matricei
- NR_PERF: citeste datele din fisierul de intrare si numara cate numere perfecte sunt in matrice; utilizeaza subprogramul:
- PERFECT, care primeste un parametru natural x si returneaza valoarea logica ADEVARAT sau FALS, dupa cum x este sau nu un numar perfect;
- SORTARE: citeste datele din fisierul de intrare, selecteaza intr-un vector coloana a doua din matrice, sorteaza vectorul si il scrie in fisierul de iesire
uses crt; var a:array[1..10,1..10] of integer; f,g:text; procedure creare; var i,j:integer; begin assign(f,'date.in'); rewrite(f); randomize; for i:=1 to 4 do for j:=1 to 4 do write(f,1+random(10),' '); close(f); end; procedure afisare; var i,j:integer; begin reset(f); for i:=1 to 4 do for j:=1 to 4 do read(f,a[i,j]); close(f); for i:=1 to 4 do begin for j:=1 to 4 do write(a[i,j]:5); writeln; end; writeln; end; procedure maxim; var i,j.m:integer; begin reset(f); for i:=1 to 4 do for j:=1 to 4 do read(f,a[i,j]); close(f); m:=a[4,4]; for i:=1 to 4 do for j:=1 to 4 do if (a[i,j]>m) and (i+j >4+1) then m:=a[i,j]; writeln('a) Maximul de sub diag sec: ',m); end; function perfect(x:integer):boolean; var d,nd,s: integer; begin s:=0; for d:=1 to x div 2 do if x mod d = 0 then s:=s+d; if (s=x) and (x<>0) then perfect:=true else perfect:=false; end; function nr_perf:integer; var i,j:integer; begin reset(f); for i:=1 to 4 do for j:=1 to 4 do read(f,a[i,j]); close(f); nr:=0; for i:=1 to 4 do for j:=1 to 4 do if perfect(a[i,j]) then nr:=nr+1; nr_perf:=nr; end; procedure sortare; var i,j,x:integer; v:array[1..4] of integer; begin assign(g,'date.out'); rewrite(g); reset(f); for i:=1 to 4 do for j:=1 to 4 do read(f,a[i,j]); close(f); for i:=1 to 4 do v[i]:=a[i,2]; for i:=1 to 3 do for j:=i+1 to 4 do if v[i]>v[j] then begin x:=v[i]; v[i]:=v[j]; v[j]:=x; end; for i:=1 to 4 do write(g,v[i],' '); close(g); end; begin clrscr; creare; assign(f,'date.in'); writeln('Matricea generata: '); afisare; maxim; writeln('b) Nr de elem perfecte din matrice:,nr_perf); sortare; end. |
#include <iostream.h> #include <conio.h> #include <stdlib.h> #include <fstream.h> int a[10][10]; void creare() f.close(); void afisare() cout<<endl; void maxim() int perfect(int x) int nr_perf() void sortare() for (i=1; i<=4; i++) g<<v[i]<<' '; g.close(); void main() |
Subiectul Nr.24
Sa se realizeze un program care sa raspunda urmatoarelor solicitari. Sa se creeze fisierul text date.in care sa contina o matrice cu numere intregi cu 4 linii si 4 coloane. Cerinte
a) Sa se scrie un subprogram care sa returneze suma elementelor pare de pe marginea exterioara a matricei;
b) Sa se scrie un subprogram care sa determine numarul elementelor matricei egale cu o valoare x data de la tastatura;
c) Scrieti in fisierul text date.out elementele de pe linia a doua ale matricei de mai sus ordonate crescator.
Am folosit subprogramele:
- CREARE: creaza structura ceruta de date
- AFISARE: citeste datele de intrare din fisierul de intrare si afiseaza pe ecran datele citite din fisier
- SUMA: citeste datele din fisierul de intrare, calculeaza si returneaza suma elementelor de pe marginile matricei;
- NX: citeste datele din fisierul de intrare si apoi o valoare x, dupa care numara cate elemente egale cu x se gasesc in matrice, numar pe care il returneaza
- SORTARE: citeste datele din fisierul de intrare, depune elementele din linia a doua a matricei intr-un vector pe care il sorteaza si il afiseaza in fisierul de iesire.
uses crt; var a:array[1..20,1..20] of integer; f,g:text; procedure creare; var i,j:integer; begin assign(f,'date.in'); rewrite(f); randomize; for i:=1 to 4 do begin for j:=1 to 4 do write(f,random(100),' '); writelnf); end close(f); end; procedure afisare; var i,j:integer; begin reset(f); for i:=1 to 4 do for j:=1 to 4 do read(f,a[i,j]); closef); for i:=1 to 4 do begin for j:=1 to 4 do write(a[i,j]:5); writeln; end; writeln; end; function suma:integer; var s,i,j:integer; begin s:=0; reset(f); for i=1 to 4 do for j=1 to 4 do readf,a[i,j]); close(f); for i:=1 to 4 do if a[i,1] mod 2 = 0 then s:=s+a[i,1]; for i:=1 to 4 do if a[i,4] mod 2 = 0 then s:=s+a[i,4]; for j:=2 to 3 do if a[1,j] mod 2 = 0 then s:=s+a[1,j]; for j:=2 to 3 do if a[4,j] mod 2 = 0 then s:=s+a[4,j]; suma:=s; end; function nx:integer; var i,j,n,x:integer; begin reset(f); for i:=1 to 4 do for j:=1 to 4 do read(f,a[i,j]); close(f); write('Valoarea x: ');readln(x); n:=0; for i:=1 to 4 do for j:=1 to 4 do if a[i,j]=x then n:=n+1; nx:=n; end; procedure sortare; var i,j,x:integer; v:array[1..4] of integer; begin assign(g,'date.out'); rewrite(g); reset(f); for i:=1 to 4 do for j:=1 to 4 do read(f,a[i,j]); close(f); for j:=1 to 4 do v[j]:=a[2,j]; for i:=1 to 3 do for j:=i+1 to 4 do if v[i]>v[j] then begin x:=v[i]; v[i]:=v[j]; v[j]:=x; end; for i:=1 to 4 do write(g,v[i],' '); close(g); end; begin clrscr; creare; assign(f,'date.in'); writeln('Matricea generata: '); afisare; writeln('a) ',suma); writeln('b) ',nx); sortare; end. |
#include <iostream.h> #include <conio.h> #include <stdlib.h> #include <fstream.h> int a[10][10]; void creare() f.close(); void afisare() cout<<endl; f.close(); int suma() int nx() void sortare() for (i=1; i<=4; i++) g<<v[i]<<' '; g.close(); void main() |
Subiectul Nr.25
Sa se realizeze un program care sa raspunda urmatoarelor solicitari. Sa se creeze fisierul text date.in care sa contina o matrice cu numere intregi cu 4 linii si 4 coloane. Cerinte
a) Sa se scrie un subprogram care sa returneze elementul maxim de pe diagonala principala a matricei din fisierul date.in;
b) Sa se scrie un subprogram care sa determine cate dintre elementele matricei sunt numere perfecte;
c) Scrieti in fisierul text date.out elementele de pe linia a doua ale matricei de mai sus ordonate crescator.
Am folosit subprogramele
- CREARE: creaza structura ceruta de date
- AFISARE: citeste datele din fisierul de intrare si le afiseaza pe ecran
- MAXIM: citeste datele din fisierul de intrare, afla maximul din diagonala principala a matricei, maxim pe care il returneaza;
- NR_PERF: citeste datele din fisierul de intrare si returneaza numarul de numere perfecte din matrice; pentru aceasta, el se foloseste de subprogramul:
- PERFECT, care primeste parametrul natural x si returneaza ADEVARAT sau FALS, dupa cum x este perfect sau nu
- SORTARE: citeste datele din fisierul de intrare, depune linia a doua a matricei intr-un vector pe care il sorteaza, dupa care il scrie in fisierul de iesire.
uses crt; var a:array[1..20,1..20] of integer; f,g:text; procedure creare; var i,j:integer; begin assign(f,'date.in'); rewrite(f); randomize; for i:=1 to 4 do begin for j:=1 to 4 do write(f,random(100),' '); writeln(f); end; close(f); end; procedure afisare; var i,j:integer; begin reset(f); for i:=1 to 4 do for j:=1 to 4 do read(f,a[i,j]); close(f); for i:=1 to 4 do begin for j:=1 to 4 do write(a[i,j]:5); writeln; end; writeln; end; function maxim:integer; var m,i,j:integer; begin reset(f); for i:=1 to 4 do for j:=1 to 4 do readf,a[i,j]); close(f); m:=a[1,1]; for i:=2 to 4 do if a[i,i] > m then m:=a[i,i]; maxim:=m; end; function perfect(x:integer):boolean; var d,nd,s: integer; begin s:=0; for d:=1 to x div 2 do if x mod d = 0 then s:=s+d; if s=x then perfect:=true else perfect:=false; end; function nr_perf:integer; var nr,i,j:integer; begin reset(f); for i:=1 to 4 do for j:=1 to 4 do read(f,a[i,j]); close(f); nr:=0; for i:=1 to 4 do for j:=1 to 4 do if perfect(a[i,j]) then nr:=nr+1; nr_perf:=nr; end; procedure sortare; var i,j,x:integer; v:array[1..4] of integer; begin assign(g,'date.out'); rewrite(g); reset(f); for i:=1 to 4 do for j:=1 to 4 do read(f,a[i,j]); close(f); for j:=1 to 4 do v[j]:=a[2,j]; for i:=1 to 3 do for j:=i+1 to 4 do if v[i]>v[j] then begin x:=v[i]; v[i]:=v[j]; v[j]:=x; end; for i:=1 to 4 do write(g,v[i],' '); end; begin clrscr; creare; assign(f,'date.in'); writeln('Matricea generata: '); afisare; writeln('a) ',maxim); writeln('b) ',nr_perf); sortare; end. |
#include <iostream.h> #include <conio.h> #include <stdlib.h> #include <fstream.h> int a[10][10]; void creare() f.close(); void afisare() cout<<endl; } cout<<endl; int maxim() int perfect(int x) int nr_perf() void sortare() for (i=1; i<=4; i++) g<<v[i]<<' '; g.close(); void main() |
Acest document nu se poate descarca
E posibil sa te intereseze alte documente despre:
|
Copyright © 2024 - Toate drepturile rezervate QReferat.com | Folositi documentele afisate ca sursa de inspiratie. Va recomandam sa nu copiati textul, ci sa compuneti propriul document pe baza informatiilor de pe site. { Home } { Contact } { Termeni si conditii } |
Documente similare:
|
ComentariiCaracterizari
|
Cauta document |