Sunteți pe pagina 1din 16

BAZELE PROGRAMARII

-20 de probleme in limbajul C-

DIMA RADU-LUCIAN GRUPA 1005 C.S.I.E

1. Sa se scrie un program in limbajul C pentru rezolvarea ecuatiei de gradul doi . #include <stdio.h> #include <conio.h> #include <math.h> float a,b,c,d,x1,x2,x; void main() { clrscr(); printf(" dati a="); scanf("%f",&a); printf(" \n dati b="); scanf("%f",&b); printf(" \n dati c="); scanf("%f",&c); if (a!=0) { d=b*b-(4*a*c); if (d==0) { x=(-b/(2*a)); printf("\n solutia unica este %2.1f =",x); } if (d>0) { x1=(-b+sqrt(d)); x2=(-b-sqrt(d)); printf("\n cele 2 solutii sunt %2.1f %2.1f ",x1,x2); } if (d<0) printf("\n ecuatia nu are solutii reale"); } else { if (b==0) { if (c==0) printf("\n ecuatia este nedeterminata"); else printf("\n ecuatia este imposibila"); } else { x=(-c/b); printf("\n solutia ecuatiei este %2.1f",x); } } getch();

} 2. Sa se scrie un program pt calcularea a doua matrici A cu m linii si n coloane si B cu n linii si p coloane. #include <stdio.h>; #include <conio.h>; int a[10][10],b[10][10],c[10][10],i,j,k,m,n,p; void main() { clrscr(); printf("\n dati m "); scanf("%d",&m); printf("\n dati n"); scanf("%d",&n); printf("\n dati p"); scanf("%d",&p); for (i=1;i<=m;i++) for (j=1;j<=n;j++) { printf("\n dati a[%d][%d]= ",i,j); scanf("%d",&a[i][j]); } for (j=1;j<=n;j++) for (k=1;k<=p;k++) { printf("\n dati b[%d][%d]= ",j,k); scanf("%d",&b[j][k]); } for (i=1;i<=m;i++) for (j=1;j<=p;j++) for (k=1;k<=n;k++) { c[i][j]=c[i][j]+a[i][k]*b[k][j]; } for (i=1;i<=n;i++) { for (j=1;j<=p;j++) printf("%4d",c[i][j]); printf("\n"); } getch(); } 3.Sa se scrie un program care sa calculeze media aritmetica, geometrica si armonica a trei numere reale a,b,c citite de la tastatura. #include <stdio.h>;

#include <conio.h>; float a,b,ma,mg,marm; void main() { clrscr(); printf("\n dati a "); scanf("\n %f",&a); printf("\n dati b "); scanf("\n %f",&b); printf("\n media aritmetica= %f",(a+b)/2); printf("\n media armonica= %2.1f",2*a*b/(a+b)); getch(); } 4. Sa scrie un program care verifica daca trei numere naturale coinic cu valorile 1,2,3. #include <stdio.h>; #include <conio.h>; int a,b,c; void main() { clrscr(); printf("\n dati a "); scanf("\n %d",&a); printf("\n dati b "); scanf("\n %d",&b); printf("\n dati c "); scanf("\n %d",&c); if ((a+b+c==6) && (a*b*c==6)) { printf("nr coinid cu 1,2,3"); } else { printf("nr nu coincid cu 1,2,3"); } getch(); } 5. Sa se scrie un program in limbajul C care sa afiseze minimul respective maximul a trei numere folosind interschimbari. #include <stdio.h> #include <conio.h> int a,b,c,aux; void main() { printf("dati a"); scanf("%d",&a); printf("dati b"); scanf("%d",&b); printf("dati c"); scanf("%d",&c); if (a>b) {

aux=a; a=b; b=aux; } if (a>c) { aux=a; a=c; c=aux; } else { if (b>c) { aux=b; b=c; c=aux; } } printf("minimul este %d",a); printf("maximul este %d",c); getch(); } 6. La un concurs de patinaj artistic se cunosc cele n note obtinute e un concurrent. Sa se calculeze punctajul lui, stiind ca la determinarea medie nu se ia in calcul nota cea mai mare si cea mai mica. #include <stdio.h> #include <conio.h> int a[10],n,i,min,max,pmin,pmax,s; float m; void main() { clrscr(); printf("dati nr de note "); scanf("%d",&n); for (i=0;i<n;i++) { printf("dati nota %d ",i+1); scanf("%d",&a[i]); } max=a[0]; min=a[0]; for (i=0;i<n;i++) { if (a[i]>max) max=a[i]; if (a[i]<min) min=a[i];

} for (i=0;i<n;i++) { if (a[i]==min) pmin=a[i]; if (a[i]==max) pmax=a[i]; } s=0; for (i=0;i<n;i++) { if ((pmin==i) || (pmax==i)) i++; else s+=a[i]; } m=float(s)/float(n-2); printf("media notelor=%2.1f ",m); getch(); } 7. Sa se calculeze produsul numerelor perfecte dintr-un vector cu m elemente intregi. #include <stdio.h>; #include <conio.h>; int v[10],i,m,p,j,s,nr; void main() { clrscr(); printf("dati dimensiunea vectorului"); scanf("%d",&m); for (i=1;i<=m;i++) { printf("\n dati v[%d]=",i); scanf("\n %d",&v[i]); } p=1; nr=0; for (i=1;i<=m;i++) { s=1; for (j=2;j<=v[i]/2;j++) { if (v[i]%j==0) { s=s+j; } if (s==v[i]) {

p=p*v[i]; nr++; } } } if (nr) printf("\n produsul elem perfecte= %d",p); else printf("\n nu exita elemente perfecte "); getch(); } 8. Sa se determine daca doi vectori sunt proportionali . #include <stdio.h> #include <conio.h> int a[10],b[10],i,n,m; void main() { clrscr(); printf("dati dimensiunea vectorului "); scanf("%d",&n); for (i=1;i<=n;i++) { printf("dati a[%d]=",i); scanf("%d",&a[i]); } for (i=1;i<=n;i++) { printf("dati b[%d]=",i); scanf("%d",&b[i]); } m=0; for (i=1;i<=n;i++) { if (a[i]*b[i-1]==a[i-1]*b[i]) { m++; } } if (m==n) printf("\n cei doi vectori sunt proportionali"); else printf("\n cei doi vectori nu sunt proportionali"); getch(); } 9. Sa se calculeze suma elementelor unui vector de pe pozitiile impare.

#include <stdio.h>; #include <conio.h>; int v[20],i,n,s; void main() { clrscr(); printf("dati dimensiunea vectorului: \n"); scanf("%d",&n); for (i=1;i<=n;i++) { printf("dati v[%d]= \n",i); scanf("%d",&v[i]); } s=v[1]; for (i=3;i<=n;i=i+2) { s=s+v[i]; } printf("suma de pe pozitiile impare : %d",s); getch(); } 10. Pentru cei n studenti ai anului I se cunosc notele de la primul examen. Se cere sa se determine numarul studentilor cu nota 10,9,8 si sa afiseze studentii nepromovati #include <conio.h> #include <stdio.h> int a[27],n,i,n8,n9,n10; void main() { clrscr(); printf(" dati nr de studenti "); scanf("%d",&n); for (i=0;i<n;i++) { printf("\n dati nota studentului %d ",i+1); scanf("%d",&a[i]); } for (i=0;i<n;i++) { if (a[i]==10) n10++; if (a[i]==9) n9++; if (a[i]==8) n8++; if (a[i]<5) printf("\n studentul %d este nepromovat",i+1); } printf("\n numarul de studenti cu nota 10 =%d",n10);

printf("\n numarul de studenti cu nota 9 =%d",n9); printf("\n numarul de studenti cu nota 8 =%d",n8); getch(); } 11.Se da o matrice cu m linii si n coloane , sa se afiseze suma de pe fiecare linie in parte. #include <stdio.h>; #include <conio.h>; int a[10][10],i,j,n,m,s; void main() { clrscr(); printf("dati nr de linii "); scanf("%d",&m); printf("dati nr de coloane "); scanf("%d",&n); for (i=1;i<=m;i++) for (j=1;j<=n;j++) { printf("a[%d][%d]=",i,j); scanf("%d",&a[i][j]); } for (i=1;i<=m;i++) { s=0; for (j=1;j<=n;j++) s=s+a[i][j]; printf("\n suma pe linia %d este %d",i,s); } getch(); } 12. Se da o matrice patratica sa se calculeze suma elementelor de deasupra diagonalei principale. #include <stdio.h>; #include <conio.h>; int a[10][10],i,j,m,n,s; void main() { clrscr(); printf("dati nr de linii "); scanf("%d",&n); for (i=1;i<=n;i++) for (j=1;j<=n;j++) {

printf("dati a[%d][%d]=",i,j); scanf("%d",& a[i][j]); } s=0; for (i=1;i<=n-1;i++) for (j=i+1;j<=n;j++) { s=s+a[i][j]; } printf("\n suma elementelor de deasupra diag principale= %d",s); getch(); } 13. Sa se determine elementul maxim din triunghiul de deasupra diagonalelor unei matrice patrate(exclusiv diagonalele). #include <stdio.h> #include <conio.h > int a[10][10],i,j,m,max; void main() { clrscr(); printf("dati m"); scanf("%d",&m); for (i=0;i<m;i++) for (j=0;j<m;j++) { printf("\n dati a[%d][%d]=",i,j); scanf("%d",&a[i][j]); } max=a[0][1]; for (i=0;i<(m-1)/2;i++) for (j=i+1;j<m-1-i;j++) if (a[i][j]>max) max=a[i][j]; printf("maximul este= %d",max); getch(); } 14. Sa se determine elementul minim din triunghiul de sub diagonalele unei matrice patrate (exclusiv diagonalele). #include <stdio.h> #include <conio.h> int a[10][10],i,j,m,min; void main() {

clrscr(); printf("dati m"); scanf("%d",&m); for (i=0;i<m;i++) for (j=0;j<m;j++) { printf("\n dati a[%d][%d]=",i,j); scanf("%d",&a[i][j]); } min=a[m-1][1]; for (i=m/2+1;i<m;i++) for (j=m-i-1;j<i;j++) if (a[i][j]<min) min=a[i][j]; printf("minimul este %d ",min); getch(); } 15. Pentru fiecare linie a unei matrice A de mxn sa se scada din elementele sale valoarea minima de pe acea linie. #include <stdio.h> #include <conio.h> int a[10][10],i,j,m,n,min; void main() { clrscr(); printf(" dati nr de linii "); scanf("%d",&m); printf("\n dati nr de coloane "); scanf("%d",&n); for (i=0;i<m;i++) for (j=0;j<n;j++) { printf("\n dati a[%d][%d]= ",i,j); scanf("%d",&a[i][j]); } for (i=0;i<m;i++) { min=a[i][0]; for (j=1;j<n;j++) if (min>a[i][j]) min=a[i][j]; for (j=0;j<n;j++) a[i][j]=a[i][j]-min; } for (i=0;i<m;i++) { for (j=0;j<n;j++) printf("%4d",a[i][j]); printf("\n");

} getch(); } 16. Fie un masiv tridimensional , sa se calculeze suma elementelor fiecarui plan al masivului. #include <stdio.h> #include <conio.h> int a[10][10][10],i,j,l,m,n,k,s,v[10],max; //maximul sumei// void main() { clrscr(); printf(" dati m "); scanf("%d",&m); printf("\n dati n "); scanf("%d",&n); printf("\n dati k "); scanf("%d",&k); for (i=0;i<m;i++) for (j=0;j<n;j++) for (l=0;l<k;l++) { printf("\n dati a[%d][%d][%d]= ",i,j,l); scanf("%d",&a[i][j][l]); } for (i=0;i<m;i++) { s=0; for (j=0;j<n;j++) for (l=0;l<k;l++) s+=a[i][j][l]; printf("\n suma de pe planul %d este %d",i+1,s); v[i]=s; } max=v[0]; for (i=1;i<m;i++) if (max<v[i]) max=v[i]; printf("\n maximul sumelor este %d",max); getch(); } 17. Se considera o matrice patrata A de nxn sa se sorteze crescator elementele de pe diagonala principala. #include <stdio.h> #include <conio.h> int a[10][10],i,j,n,aux;

void main() { clrscr(); printf("dati n="); scanf("%d",&n); for (i=0;i<n;i++) for (j=0;j<n;j++) { printf("\n dati a[%d][%d]= ",i,j); scanf("%d",&a[i][j]); } for (i=0;i<n-1;i++) for (j=i+1;j<n;j++) if (a[i][i]>a[j][j]) { aux=a[i][i]; a[i][i]=a[j][j]; a[j][j]=aux; } for (i=0;i<n;i++) { for (j=0;j<n;j++) printf("%4d",a[i][j]); printf("\n"); } getch(); } 18. Fie o matrice A de mxn , care reprezinta notele obtinute de m studenti la n discipline. Sa se determine: a) studentii integralisti(care au toate notele >=5); b) studentii bursieri (integralistii cu media >=8.5) c) disciplinele la care s-au inregistrat cei mai multi restantieri #include <stdio.h> #include <conio.h> int a[10][10],i,j,m,n,k,s; float med; void main() { clrscr(); printf(" dati nr nr de materii= "); scanf("%d",&n); printf("\n dati nr de studentii= "); scanf("%d",&m); for (i=0;i<m;i++) for (j=0;j<n;j++) { printf("\n dati a[%d][%d]=",i,j);

scanf("%d",&a[i][j]); } for (i=0;i<m;i++) { k=0; s=0; for (j=0;j<n;j++) if (a[i][j]>=5) { k++; s+=a[i][j]; if (k==n) printf("\n studentul %d este integralist",i+1); med=float(s)/float(n); if (med>=8.5) printf("\n studentul %d este bursier",i+1); } } int v[10],max; for (j=0;j<n;j++) { k=0; for (i=0;i<m;i++) if (a[i][j]<5) k++; v[j]=k; } max=v[0]; for (j=0;j<n;j++) if (v[j]>max) max=v[j]; if (!max) printf("\n nu avem studenti picati"); else { for (j=0;j<n;j++) if (v[j]==max) printf("\n disciplina %d are cei mai multi picati ",j+1); } getch(); } 19. Sa se realizeze programul care efectueaza inmultirea dintre un vector si o matrice #include <stdio.h> #include <conio.h> int a[10][10],v[10],b[10],i,j,m,n,k; void main() { clrscr(); printf("dati nr de elemente ale vect");

scanf("%d",&m); printf("dati nr de coloane"); scanf("%d",&n); printf("\n elementele vectorului "); for (i=0;i<m;i++) { printf("\n dati v[%d]= ",i); scanf("%d",&v[i]); } printf("\n elementele matriciei"); for (i=0;i<m;i++) for (j=0;j<n;j++) { printf("\n dati a[%d][%d]= ",i,j); scanf("%d",&a[i][j]); } for (j=0;j<n;j++) { b[j]=0; for (i=0;i<m;i++) b[j]=b[j]+a[i][j]*v[i]; } for (j=0;j<n;j++) printf("%4d",b[j]); getch(); } 20. Se considera o matrice A cu mxn , sa se afiseze coloanele care se afla in progresie aritmetica. #include <stdio.h> #include <conio.h> int a[10][10],i,j,ok,m,n,r; void main() { clrscr(); printf(" dati m "); scanf("%d",&m); printf("\n dati n "); scanf("%d",&n); for (i=0;i<m;i++) for (j=0;j<n;j++) { printf("\n dati a[%d][%d]=",i,j); scanf("%d",&a[i][j]); }

ok=0; for (j=0;j<n;j++) { r=a[1][j]-a[0][j]; for (i=1;i<m && a[i][j]-a[i-1][j]==r;i++); if (i==m) { printf("\n coloana %d este in progresie",j+1); ok=1; } } if (!ok) printf("\n nu avem coloane in progresie aritmetica"); getch(); }

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