Sunteți pe pagina 1din 8

Referat Programare Imperativa

Dinca Ada

REFERAT
PROGRAMARE IMPERATIVA

Dinca Ada Informatica An I ID Grupa 1

-1-

Referat Programare Imperativa

Dinca Ada

Vectori:
1. Sa se afiseze pozitia pe care apare primul element pozitiv dintr-un vector citit de la tastatura. Rezolvare: #include<stdio.h> #include<conio.h> void main() { clrscr(); int a[20],i,n; printf("n="); scanf("%d",&n); for(i=0;i<n;i++) { printf("a[%d] = ",i); scanf("%d",&a[i]); } i=0; while(a[i]<=0 && i<n) i++; if (i<n) printf("Primul numar pozitiv este %d si este pe pozitia %d",a[i],i); else printf("Nu exista numere pozitive"); getch(); } 2. Fie dat un vector cu n elemente numere intregi, sa se afiseze de cate ori gasim elementele consecutive egale intre ele. Rezolvare: #include<stdio.h> #include<conio.h> void main() { clrscr(); int a[20],n,i,c=1; printf("n=");scanf("%d",&n); printf("Elementele vectorului sunt:\n"); for(i=0;i<n;i++) { printf("a[%d] = ",i); scanf("%d",&a[i]); } for(i=0;i<n;i++) if(a[i]==a[i+1]) { -2-

Referat Programare Imperativa c++; printf("Numere consecutive egale sunt %d si %d, adica %d numere",a[i],a[i+1],c); } getch(); } 3. Sa se treaca un numar natural n din baza 10 in baza 2. Rezolvare: #include<stdio.h> #include<conio.h> void main() { clrscr(); int a,b[10],c,r,i; printf("Numarul in baza 10 este: a= "); scanf("%d",&a); c=a; i=0; while(c!=0) { r=c%2; c=c/2; b[i]=r; i++; } do { printf("%d",b[i-1]); i--; } while(i>0); getch(); }

Dinca Ada

4. Fiind dat un vector de numere intregi, sa se determine suma elementelor pozitive din vector. Rezolvare: #include <conio.h> #include <stdio.h> void main ( ) { int a [20], n, i, s=0;

-3-

Referat Programare Imperativa print f ( n= ); scan f (%d, &n); for (i=0 ; i<n ; i++) { print f (a[%d] =, i); scan f (%d, &a[i]); }; for (i=0; i<n; i++) if (a[i]>0) s+=a[i]; print f (s=%d, s); getch ( ); }

Dinca Ada

5. Fie n un numar natural. Sa se genereze toate numerele mai mici decat n. (Ciurul lui Eratostene) Rezolvare: #include <iostream.h> void main ( ) { int ciur[100], n, i, j; cout <<n=; cin >>n; for (i=2; i<n; i++) ciur[i]=1; for (i=2; i*i<=n; i++) if (ciur[i]) for (j=2; j*i<n; j++) ciur[j*i]=0; for (i=2; i<n; i++) if (ciur[i]) cout <<i<< ; }

-4-

Referat Programare Imperativa

Dinca Ada

Tablouri bidimensionale (matrici):


1. Se da o matrice dreptunghiulara cu valori reale. Sa se determine cea mai mare suma obtinuta pentru fiecare dintre liniile matricei. Rezolvare: #include<stdio.h> #include<conio.h> void main() { clrscr(); int a[10][10],l,c,i,j,s,x[10],max; printf("Numar linii:"); scanf("%d",&l); printf("Numar coloane:"); scanf("%d",&c); for(i=0;i<c;i++) for(j=0;j<l;j++) {printf("a [%d] [%d] = ",i,j); scanf("%d",&a[i][j]);} for(i=0;i<c;i++) { s=0; for(j=0;j<l;j++) s=s+a[i][j]; x[i]=s; } max=x[0]; for(j=1;j<c;j++) if(max<x[j]) max=x[j]; printf("Suma cea mai mare este %d",max); getch(); } 2. Se da o matrice dreptunghiulara cu n linii si m coloane. Fiecare linie a matricii reprezinta un numar in baza 2. Se cere sa se transforme numerele respective in baza 10. Rezolvare: #include<stdio.h> #include<conio.h> int put(int b1) { int p,z; p=1; for(z=1;z<=b1;z++) p=2*p; -5-

Referat Programare Imperativa return p; } void main() { clrscr(); int a[10][10],l,c,i,j,s,nr[10],p; printf("Numar linii:"); scanf("%d",&l); printf("Numar coloane:"); scanf("%d",&c); for(i=0;i<l;i++) for(j=0;j<c;j++) {printf("a [%d] [%d] = ",i,j); scanf("%d",&a[i][j]);} for(i=0;i<l;i++) { s=0; for(j=0;j<c;j++) s=s+a[i][j]*put(c-j-1); nr[i]=s; } for(p=0;p<l;p++) printf("\nLinia %d in zecimal este %d ",p,nr[p]); getch(); }

Dinca Ada

3. Fiind data matricea A cu m linii si n coloane sa se elimine liniile si coloanele la a caror intersectie se gaseste valoarea v data de la tastatura. Rezolvare: #include<stdio.h> #include<conio.h> void main() { clrscr(); int a[10][10],l,c,li,co,d,liaux,coaux; printf("Linii:"); scanf("%d",&l); printf("Coloane:"); scanf("%d",&c); for(li=0;li<l;li++) for(co=0;co<c;co++) {printf("a [%d] [%d] = ",li,co); scanf("%d",&a[li][co]);} printf("Matricea arata asa:"); for(li=0;li<l;li++) { printf("\n"); for(co=0;co<c;co++) printf("%3d ",a[li][co]); }

-6-

Referat Programare Imperativa

Dinca Ada

printf("\nAl carei valori vreti sa eliminati linia si coloana? v = "); scanf("%d",&d); for(li=0;li<l;li++) for(co=0;co<c;co++) if (d==a[li][co]) { for(liaux=0;liaux<=l;liaux++) a[liaux][co]=0; for(coaux=0;coaux<=c;coaux++) a[li][coaux]=0; } printf("\nMatricea arata asa:"); for(li=0;li<l;li++) { printf("\n"); for(co=0;co<c;co++) printf("%3d ",a[li][co]); } getch(); } 4. Fiind data o matrice dreptunghiulara sa se determine minimul pe fiecare linie. Rezolvare : # include <stdlib.h> # include <iostream.h> # include <conio.h> # include <math.h> void main( ) { int x, y; int v[100] [100]; cout <<Introduceti marimea vectorului v pe x sip e y .\n; cout <<x=; cin >>x; cout <<y=; cin >>y; for(int a1=0; a1<y; a1++) { for(int a2=0; a2<x; a2++) { cout<<v[<<a1<<] [<<a2<<]=; cin >>v[a1][a2]; } } for(int b1=0; b1<y; b1++) { int min = v[b1] [0]; for (int b2=0; b2<x; b2++) { cout <<v[b1] [b2]<<\t;

-7-

Referat Programare Imperativa if(v[b1] [b2]<min)min = v[b1] [b2]; } cout <<\tMinimul din linie este: <<min; cout <<\n; } }

Dinca Ada

5. Sa se scrie un program care insumeaza elementele de sub diagonala principala, exclusiv diagonala, dintr-o matrice patratica. Rezolvare: # include <iostream.h> void main ( ) { int n, i, j, s, a [10] [10]; cout<<n=; cin>>n; for (i=0; i<n; i++) for (j=0; j<n; j++) { cout<<a[<<i<<, <<j<<]=; cin>>a[i] [j]; } s=0; for (i=1; i<n; i++) for (j=0; j<i; j++) s+=a[i] [j]; cout<<Suma de sub diagonala principala <<s; }

-8-