Вы находитесь на странице: 1из 6

Brian Overland-C++ Ghid pentru incepatori

Citirea matricilor din fisier+ diferite zone din matrice


Citirea din fisier #include<fstream.h> ifstream in("date.txt" ); (Dati un nume fisierului din care sa citeasca datele) ofstream out("rez.txt" ); (Dati un nume fisierului in care sa afiseze rezultatele) void main() { int i,j,a[10][10]; //citirea matricii in>>n; (La citirea din fisier se foloseste in/out nu cin/cout ) for(i=1;i<=n;i++) for(j=1;j<=m ;j++) in>>a[i][j]; Afisarea matricii intregi for(i=1;i<=n;i++) { for(j=1;j<=m;j++) out<<a[i][j]<<" "; out<<endl; }

Urmatoarele citiri sunt valabile doar pentru matricile patrate adica n=m
Afisarea elementelor de pe diagonala principala for(i=1;i<=n;i++) out<<a[i][i]<<" "; Afisarea elementelor de sub diagonala principala fara ea(fara elementele de pe diagonala) for(i=2;i<=n;i++) for(j=1;j<i;j++) out<<a[i][j]<<" "; Afisarea elementelor de sub diagonala principala impreuna cu elementele de pe diagonala) for(i=1;i<=n;i++) for(j=1;j<=i;j++) out<<a[i][j]<<" "; Afisarea elementelor de deasupra diagonalei principala fara ea for(i=1;i<n;i++) for(j=i+1;j<=n;j++) out<<a[i][j]<<" "; Afisarea elementelor de deasupra diagonalei prrincipale cu ea for(i=1;i<=n;i++) for(j=i;j<=n;j++) out<<a[i][j]<<" "; Afisarea elementelor de pe diagonala secundara for(i=1;i<=n;i++) out<<a[i][n-i+1]<<" "; Afisarea elementelor de sub diagonala principala fara ea for(i=2;i<=n;i++)

for(j=n-i+2;j<=n;j++) out<<a[i][j]<<" "; Afisarea elementelor de sub diagonala principala cu ea for(i=1;i<=n;i++) for(j=n-i+1;j<=n;j++) out<<a[i][j]<<" "; Afisarea elementelor de deasupra diagonalei secundare fara ea for(i=1;i<n;i++) for(j=1;j<n-i+1;j++) out<<a[i][j]<<" "; Afisarea elementelor de deasupra diagonalei secundare cu ea for(i=1;i<=n;i++) for(j=1;j<=n-i+1;j++) out<<a[i][j]<<" "; Afisarea elementelor din zona de NORD a matricii impreuna cu elementele de pe diagonalele inconjuratoare for(i=1;i<=(n+1)/2;i++) for(j=i;j<=n-i+1;j++) out<<a[i][j]<<" "; Afisarea elementelor din zona de NORD fara diagonale for(i=1;i<=(n+1)/2-1;i++) for(j=i+1;j<=n-i;j++) out<<a[i][j]<<" "; Afisarea elementelor din zona de SUD cu diagonale for(i=(n+1)/2;i<=n;i++) for(j=n-i+1;j<=i;j++) out<<a[i][j]<<" "; Afisarea elementelor din zona de SUD fara diagonale for(i=(n+1)/2+1;i<=n;i++) for(jn-i+2;j<=i-1;j++) out<<a[i][j]<<" "; Afisarea elementelor din zona de VEST scu diagonale for(j=1;j<=(n+1)/2;j++) for(i=j;i<=n-j+1;i++) out<<a[i][j]<<" "; Afisarea elementelor din zona de VEST fara diagonale for(j=1;j<=(n+1)/2;j++) for(i=j+1;i<=n-j;i++) out<<a[i][j]<<" "; Afisarea elementelor din zona de EST cu diagonala for(j=(n+1)/2;j<=n;j++) for(i=n-j+1;i<=j;i++) out<<a[i][j]<<" "; Afisarea elementelor din zona de EST fara diagonala for(j=(n+1)/2;j<=n;j++) for(i=n=j+2;i<=j-1;i++)

out<<a[i][j]<<" "; Inchiderea fisierului in.close(); out.close(); }

Subprograme
Cifra maxima int cifmax(int x) { int max=0; while(x) { if(max<x%10) max=x%10; x=x/10; } return max; } Cifra minima int cifmin(int x) { int min=9; while(x) { if(min>x%10) min=x%10; x=x/10; } return min; } Cifre egale int cifegal(int x) { while(x>9) {if(x%10!=x%100/10) return0; x=x/10; } return 1;} Numar perfect int perfect(int x) { int s=0; for(d=1;d<=x/2;d++) if(x%d==0) s=s+d; if(s==x) return 1; else return 0;} Suma cifrelor int sumacif(int x) { int s=0; while(x) { s=s+x%10; x=x/10; }

return s; } Numar prim int prim(int x) { for(int d=2;d<=sqrt(x);d++) if(x%d==0) return 0; return 1; } Inversul unui numar int invers(int x) { int inv=0; while(x) { inv=inv*10+x%10; x=x/10; return inv; } Numar palindrom int palindrom(int x) { int inv=0,y=x; while(x) { inv=inv*10+x%10; x=x/10; } if(y==inv) return 1; else return 0; Daca numarul e bine ordonat crecator int bineord(int x) { while(x>9) { if(x%10<=x%100/10) return 0; x=x/10; } return 1; } Suma divizorilor proprii int sumadiv(int x) { int s=0; for(int d=2;d<=x/2;d++) if(x%d==0) s=s+d; return s; } Afisarea divizorilor void divizori(int x) { for(int d=1;d<=x/2;d++) if(x%d==0) cout<<d<<" "; cout<<x<<endl; } Cmmdc prin scaderi repetate int cmmdc(int a,int b) { while(a!=b) if(a>b) a=a-b; else b=b-a; return a; }

Transformare in baza q int transfq(int x,int q) { int p=1,r,nq=0; while(x) { r=x%q; x=x/q; nq=r*p+nq; p=p*10; return nq; } Transformare in baza 10 int transf10(int x,int q) { int nr10=0,uc,p=1; while(x) { uc=x%10; x=x/10; nr10=nr10+uc*p; p=p*q; } return nr10; } Verificare baza int verifbaza(int x,int q) { while(x) { if(x%10>=q) return 0; x=x/10; } return 1; } Citirea unui vector int v[],int &n { cout<<"n=";cin>>n; for(int i=1;i<=n;i++) { cout<<"v["<<i<<"]="; cin>>v[i]; }} Afisare vector int v[], int n; { for(int i=1;i<=n;i++) cout<<v[i]<<" "; Ordonare vector { for(int i=1;i<n;i++) for(int j=i+1;j<=n;j++) if(v[i]>v[j]) { aux=v[i]; v[i]=v[j]; v[j]=aux; } Citirea matricii { cout<<"n=";cin>>n; cout<<"m=",cin>>m; for(i=1;i<=n;i++) for(j=1;j<=m ;j++) { cout<<"a["<<i<<"]["<<j<<"]="; cin>>a[i][j]; }}

Afisare matrici int a[][],int n, int m; { for(i=1;i<=n;i++) { for(j=1;j<=m;j++) cout<<a[i][j]<<" "; cout<<endl; }}

Вам также может понравиться