You are on page 1of 8

Academia de Studii Economice din Bucuresti

PORTOFOLIU
BAZELE PROGRAMARII

Georgescu Cristian
CSIE, An I, Seria B, Grupa 1008
1. S se scrie un program care compar diagonala secundar a
unei matrici cu diagonala principal.

INTREG n, i, j, t;
REAL a[10][10];
t=1;
CITESTE (n);
DO-FOR i=1,n,1
DO-FOR j=1,n,1
CITESTE (a[i][j]);
ENDDO
ENDDO
DO-FOR i=1,n,1
IF a[i][i]!=a[i][n+1-i]
THEN t=0;
ENDIF
ENDDO
IF t=1
THEN SCRIE (Diagonala principala e identica cu diagonala secundara);
ELSE SCRIE (Diagonala principala nu e identica cu diagonala
secundara);
ENDIF
Citim matricea, apoi verificm fiecare element de pe diagolana
principal (a[i][i]), dac este diferit de cel de pe diagonala secundar (a[i]
[n+1-i]), folosind functia if. Daca adevarat, t ia valoarea 0 (fals) se
afieaz Diagonala principala nu e identica cu diagonala secundara, iar
daca t este 1 (adevarat), se afieaz Diagonala principala e identica cu
diagonala secundara.
Verificare: n=2, a[1][1]=1, a[1][2]=3, a[2][1]=2, a[2][2]=5
a[1][1]!=a[1][2], t=0
Scrie Diagonala principala nu e identica cu
diagonala secundara
2. S se verifice dac trei numere introduse de la tastatur
coincid cu 1,2,3. Dac nu, s se afieze un mesaj corespunztor.
INTREG a,b,c;
CITESTE (a);
CITESTE (b);
CITESTE (c);
IF a+b+c=6 & a*b*c=6
THEN SCRIE (Numerele coincid cu 1,2,3);
ELSE SCRIE (Numerele nu coincid cu 1,2,3);
ENDIF

Citim cele trei numere, apoi verificm dac ele coincid cu 1,2,3
folosind funcia if: dac suma lor este egal cu 6 si produsul lor este egal

cu 6, atunci coincid si se afiseaza mesajul corespunztor. Dac nu, se


afieaz urmtorul mesaj: Numerele nu coincid cu 1,2,3.
Verificare: a=1, b=2, c=3
1+2+3=1*2*3
Scrie Numerele coincid cu 1,2,3
3. S se scrie un program care realizeaz intersecia a dou
mulimi.
INTREG n,m,p,i,j;
REAL x[80], y[50], z[50];
SCRIE (Numarul de elemente al primei multimi:);
CITESTE (m);
DO-FOR i=0,m-1,1;
CITESTE (x[i]);
ENDDO
SCRIE (Numarul de elemente al celei de-a 2-a multimi:);
CITESTE (n);
DO-FOR i=0,n-1,1;
CITESTE (y[i]);
ENDDO
p=0;
DO-FOR i=0,m-1,1;
j=0;
WHILE j<n & x[i]!=y[j]
DO j=j+1;
ENDWHILE
IF j<n
THEN z[p]=x[i];
p=p+1;
ENDIF
ENDDO
IF p!=0
THEN SCRIE (Intersectia celor 2 multimi:);
DO-FOR i=0,p-1,1
SCRIE (z[i]);
END DO
ELSE SCRIE (Intersectia este multimea vida);
ENDIF
Se citesc cele dou mulimi, iar in urma interseciei se obine o
mulime cu elementele comune mulimilor iniiale. Dac intersecia e vid,
cardinalul mulimii va fi 0. Se parcurge una dintre mulimi i se verific
existena fiecrui element in cealalt mulime. Dac se gsete
elementul, va fi copiat in mulimea rezultat.
Verificare: m=3, x[0]=1, x[1]=3, x[2]=2
n=2, y[0]=1, y[1]=7

p=0, i=0, j=0


j<n, z[0]=1, p=1
i=1, j=0
j=1 ...
Scrie Intersectia celor 2 multimi: 1.
4. S se scrie un program care scade din fiecare linie minimul de
pe acea linie dintr-o matrice A[m,n].
INTREG a[10][10],i,j,m,n,min;
SCRIE (Dati nr de linii);
CITESTE (m);
SCRIE (Dati nr de coloane);
CITESTE (n);
DO-FOR i=0,m-1,1;
DO-FOR j=0,n-1,1;
CITESTE (a[i][j]);
ENDDO
ENDDO
DO-FOR i=0,m-1,1;
min=a[i][0];
DO-FOR j=1,n-1,1;
IF min>a[i][j] THEN min=a[i][j];
ENDIF
ENDDO
DO-FOR j=0,n-1,1;
a[i][j]=a[i][j]-min;
ENDDO
ENDDO
DO-FOR i=0,m-1,1;
DO-FOR j=0,n-1,1;
SCRIE (a[i][j]);
ENDDO
SCRIE (\n);
ENDDO
Se citete matricea, minimul ia prima valoare a[i][0], primul element
al fiecrei linii. Se citesc liniile si folosind IF, se compara fiecare element
cu minimul, interschimbndu-se cu acesta dac este mai mic. Se scade
minimul de pe fiecare coloan utilizand structura FOR, apoi se afieaz
noua matrice.
Verificare: m=2, n=3
a[0][0]=1, a[0][1]=3, a[0][2]=7
a[1][0]=4, a[1][1]=5, a[1][2]=8
i=0, min=1
a[0][0]=0, a[0][1]=2, a[0][2]=5
i=1, min=4

a[1][0]=0, a[1][1]=1, a[1][2]=4


Se afieaz noua matrice.
5. S se scrie un program care returneaz maximul din triunghiul
de deasupra diagonalelor unei matrice.
INTREG a[10][10],i,j,m,max;
SCRIE (m=);
CITESTE (m);
DO-FOR i=0,m-1,1;
DO-FOR j=0,m-1,1;
CITESTE a[i][j];
ENDDO
ENDDO
max=a[0][1];
DO-FOR i=0,(m-1)/2-1,1;
DO-FOR j=i+1,m-2-i,1;
IF a[i][j]>max
THEN max=a[i][j];
ENDIF
ENDDO
ENDO
SCRIE (Maximul este,max);
Se citete matricea, maximul ia prima valoare a[0][1]. Utilizand FOR,
citim doar elementele de deasupra diagonalelor i le comparm cu
maximul. Dac acestea sunt mai mari decat max, max ia valoare
respectiv i este returnat.
6. S se realizeze un program care calculeaz produsul scalar
dintre doi vectori.
INTREG n,i;
REAL u[100],v[100],P;
SCRIE (Introduceti dimensiunea vectorilor, n=);
CITESTE (n);
SCRIE (Introduceti elementele primului vector);
DO-FOR i=0,n-1,1;
CITESTE (u[i]);
ENDDO
SCRIE (Introduceti elementele celui de-al doilea vector);
DO-FOR i=0,n-1,1;
CITESTE (v[i]);
ENDDO
P=0;
DO-FOR i=0,n-1,1;
P=P+u[i]*v[i];
ENDDO
SCRIE (Produsul scalar este:, P);

Dac avem vectorii: X = ( x1 , ..., xn)


Y = ( y1 , ..., yn), atunci:
Produsul lor scalar va fi: P = x1 x y1 +...+ xn x yn. Cei doi vectori
trebuie sa aib aceeai lungime pentru a putea calcula produsul lor scalar.
Verificare: n=2, u[0]=2, u[1]=4, v[0]=3, v[1]=5
P=0, P=0+2*3=6, P=6+4*5=26
Scrie Produsul scalar este: 26
7. S se realizeze un program care verific dac elementele unui
vector formeaz o progresie aritmetic.
INTREG n,i;
REAL a[100];
SCRIE (Introduceti dimensiunea vectorului:);
CITESTE (n);
IF n<3 THEN SCRIE (Vectorulul are mai putin de trei elemente);
ELSE
DO-FOR i=0,n-1,1;
CITESTE (a[i]);
ENDDO
i=1;
WHILE i<n-1 & a[i]=(a[i-1]+a[i+1])/2
DO i++;
ENDWHILE
IF i=n-1 THEN SCRIE (Elementele formeaza o progresie aritmetica);
ELSE SCRIE (Elementele nu formeaza o progresie aritmetica);
ENDIF
ENDIF
Vectorul trebuie sa aib cel puin trei elemente. Dac ntre fiecare 3
termeni consecutivi are loc relaia a[i] == (a[i-1]+a[i+1])/2), adic
termenul din mijloc este egal cu jumtate din suma termenilor precedent
si urmtor, atunci elementele formeaz o progresie aritmetic.
Verificare: n=3, a[0]=1, a[1]=2, a[2]=3
i=1, a[1]=(a[0]+a[2])/2
i=2
Scrie Elementele formeaza o progresie aritmetica
8. S se realizeze un program care verific dac doi vectori sunt
proporionali.
INTREG a[10],b[10],i,n,m;
SCRIE (Dati dimensiunea vectorului:);
CITESTE (n);
DO-FOR i=1,n,1;
CITESTE (a[i]);

ENDDO
DO-FOR i=1,n,1;
CITESTE (b[i]);
ENDDO
m=0;
DO-FOR i=1;n;1;
IF a[i]*b[i-1]=a[i-1]*b[i]
THEN m=m+1;
ENDIF
ENDDO
IF m=n THEN SCRIE (Cei doi vectori sunt proportionali);
ELSE SCRIE (Cei doi vectori nu sunt proportionali);
ENDIF
Dac avem 2 vectori: a = ( a[1] , ..., a[n])
b = ( b[1] , ..., b[n[), iar ntre elementele sale se
poate stabili relaia a[i]*b[i-1]==a[i-1]*b[i], atunci cei doi vectori sunt
proporionali.
9. S se realizeze un program care calculeaz suma elementelor
de deasupra diagonalei principale a unei matrici.
INTREG a[10][10],i,j,m,n,s;
SCRIE (Dati numarul de linii:);
CITESTE (n);
DO-FOR i=1,n,1;
DO-FOR j=1,n,1;
CITESTE (a[i][j]);
ENDDO
ENDDO
s=0;
DO-FOR i=1,n,1;
DO-FOR j=i+1,n,1;
s=s+a[i][j];
ENDDO
ENDDO
SCRIE (Suma elementelor de deasupra diagonalei principale:, s);
Utiliznd structura FOR, se citesc doar elementele de deasupra
diagonalei principale si se returneaz suma s.
10. S se sorteze elementele unui vector prin metoda seleciei.
INTREG i,n,poz,k;
REAL x[100],aux;
SCRIE (Introduceti dimensiunea vectorului:)
CITESTE (n);
DO-FOR i=0,n-1,1;
CITESTE (x[i]);

ENDDO
DO-FOR i=0,n-2,1;
DO-FOR j=i+1,n-1,1;
IF x[i]>x[j] THEN aux=x[i];
x[i]=x[j];
x[j]=aux;
ENDIF
ENDDO
ENDDO
SCRIE (Vectorul sortat este:)
DO-FOR i=0,n-1,1;
SCRIE (x[i]);
ENDDO
Se determina elementul minim din vector si se aduce pe prima
pozitie, apoi se determin minimul din vectorul rmas si se aduce pe a
doua poziie i aa mai departe.Se determin minimul comparnd fiecare
element cu cele care il succed, interschimbndu-le.

You might also like