Sunteți pe pagina 1din 7

1. Pentru evidena produselor cosmetice dintr-un depozit, se definete o structur cu urmtoarele informaii: codul produsului, denumire, preul produsului.

Citii informaiile tuturor produselor i afiai produsele cu noile preuri (valoarea lui x este 7 dac codul produsului este mai mic dect 500. i 11 n caz contrar). Afiai produsele cu cel mai mare pre dup scumpire. #include<iostream.h> #include<string.h> #include<conio.h> typedef struct {int cod,c,p,pret; char den[20];}produse; produse a[20]; int n,i,c,p; void citire() { cout<<"Dati numarul de produse ";cin>>n; for (i=1;i<=n;i++) {cout<<"codul produsului ";cin>>a[i].cod; cout<<"pretul produsului ";cin>>a[i].pret; cout<<"denumirea produsului ";cin>>a[i].den;} } void rezolvare() { for (i=1;i<=n;i++) if(a[i].cod<500) a[i].pret=7; else a[i].pret=11; for (i=1;i<=n;i++) cout<<"pretul "<<a[i].den<<" este "<<a[i].pret<<"\n"; cout<<endl; for (i=1;i<=n;i++) if(a[i].pret==11) cout<<a[i].den<<"\n"; } void main() { citire(); rezolvare(); }

2. Se citesc de la tastatur numele i media general a n elevi. Se cere s se afieze lista elevilor n ordinea descresctoare a mediilor.
#include<iostream.h> #include<string.h> typedef struct elev{ char nume[50]; float medie; }; elev a[100],aux; int n; void citire() {int i; cout<<"n=";cin>>n;

for(i=1;i<=n;i++) {cout<<"a[i].nume: ";cin>>a[i].nume; cout<<"a[i].medie: ";cin>>a[i].medie; } } void sortare() {int i,j; for(i=1;i<n;i++) {for(j=i+1;j<=n;j++) if(a[i].medie<a[j].medie) {aux=a[i]; a[i]=a[j]; a[j]=aux; } } } void afisare() {int i; for(i=1;i<=n;i++) cout<<a[i].nume<<" "<<a[i].medie<<endl; } void main() {citire(); cout<<"lista de elevi\n"; afisare(); sortare(); cout<<"dupa sortare\n"; afisare(); }

3. Despre fiecare dintre cei n elevi dintr-o clasa se citesc urmatoarele date: - numele (sir de caractere de lungime maxima 20) - numele (sir de caractere de lungime maxima 20) - media notelor in oral la informatica - nota in teza la informatica Sa se afiseze ordonati alfabetic elevii corigenti la informatica. Pentru fiecare elev corigent se vor afisa: numele, prenumele si media la informatica.
#include<fstream.h> #include<string.h> struct elev {char nume[30]; char pren[30]; float mo; int teza; float media; }; ifstream f("elev.in"); elev c[100]; void citire(elev &e)

{f>>e.nume; f>>e.pren; f>>e.mo; f>>e.teza; e.media=(e.mo*3+e.teza)/4; } void afisare(elev e) {cout<<e.nume<<" "<<e.pren<<" "<<e.media; cout<<endl; } void ordonare(int n,elev c[100]) {int i,gata; elev aux; do {gata=1; for (i=1;i<n;i++) if (strcmp(c[i].nume,c[i+1].nume)>0) {aux=c[i]; c[i]=c[i+1]; c[i+1]=aux; gata=0; } }while (!gata); } int main () { int n,i; f>>n; for (i=1;i<=n;i++) citire(c[i]); ordonare (n,c); for (i=1;i<=n;i++) if (c[i].media<4.5) afisare(c[i]); return 0; } 4. Sa se defineasca o structura pentru memorarea unei progresii aritmetice de ratie r si termen initial a. Sa se afiseze primii 10 termeni ai progresiei date prin a si r. #include<iostream.h> #include<math.h> struct progresie_aritmetica { double a,r; }P; void main() { int i; cin>>P.a>>P.r; for(i=0;i<=9;i++) cout<<P.a+P.r*i<<" "; } 5. Sa se defineasca o structura punct pentru memorarea coordonatelor unui punct din plan. Sa se declare si sa se citeasca 3 puncte A, B, C. Sa se determine daca punctele sunt coliniare. #include<iostream.h> #include<math.h> struct punct {

float x,y; }A,B,C; float dist(punct A, punct B) { return sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y)); } void citire(punct &A) { cin>>A.x>>A.y; } int main() { citire(A); citire(B); citire(C); float a,b,c; a=dist(B,C); b=dist(A,C); c=dist(A,B); if(a==b+c || c==a+b || b==c+a) cout<<"coliniare"; else cout<<"nu"; }

6. Sa se declara o structura complex pentru memorarea numerelor complexe. Sa se declare si sa se citeasca o variabila de tip complex si sa se calculeze modulul numarului complex citit. #include<iostream.h> #include<cmath.h> struct Complex{ float x,y; }; int main() { Complex c; cin >> c.x >> c.y; cout << sqrt ( c.x*c.x + c.y*c.y ); system("pause"); return 0; } 7.Se citesc doua puncte in plan A si B date prin coordonatele lor. Sa se calculeze si sa se afiseze distanta dintre ele. #include<iostream.h> #include<math.h> struct punct { double x,y; }A,B; void main() { double d; cin>>A.x>>A.y;

cin>>B.x>>B.y; d=sqrt((A.x-B.x)*(A.x-B.x) +(A.y-B.y)*(A.y-B.y)); cout<<d; }

8. Se citesc doua numere rationale x si y. Sa se calculeze si sa se afiseze suma lor. #include<iostream.h> struct rational { int nr,nu; }x,y,s; void main() { int a,b; cin>>x.nr>>x.nu; cin>>y.nr>>y.nu; s.nr=x.nr*y.nu+x.nu*y.nr; s.nu=x.nu*y.nu; a=s.nr; b=s.nu; while(a!=b) if(a>b) a=a-b; else b=b-a; s.nr=s.nr/a; s.nu=s.nu/a; cout<<s.nr<<"/"<<s.nu; } 9. Definiti un tip inregistrare punct pentru a memora coordonatele unui punct din plan. Definiti un tip inregistrare triunghi pentru a memora coordonatele celor 3 varfuri ale unui triunghi. Cititi 6 valori care reprezinta coordonatele celor 3 varfuri ale unui triunghi. Calculati si afisati perimetrul triunghiului citit. #include<iostream.h> struct punct { float x,y; }; struct triunghi { punct A, B, C; }; void citirep(punct &p) { cin>>p.x>>p.y; } void citiret(triunghi &t) { citirep(t.A); citirep(t.B); citirep(t.C); }Definiti un tip inregistrare punct pentru a memora coordonatele unui punct din plan. Definiti un tip inregistrare triunghi pentru a memora coordonatele celor 3 varfuri ale unui triunghi. Cititi 6 valori care reprezinta coordonatele celor 3 varfuri ale unui triunghi. Calculati si afisati perimetrul triunghiului citit. float dist(punct a, punct b) { return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); } float perimetru(triunghi t)

{ return dist(t.A,t.B)+dist(t.A,t.C)+dist(t.B,t.C); } int main() { triunghi t; citiret(t); cout<<perimetru(t); return 0; } 10.Se citesc n fractii. Simplificati fractiile reductibile si afisati cel mai mare numar rational obtinut. #include<fstream.h> ifstream fin("date.in"); ofstream fout("date.out"); struct rational {int nr, nu;}; int cmmdc(int a, int b) { if (a % b == 0) return b; else return cmmdc(b, a % b); } void simplific(rational &r) { int c = cmmdc(abs(r.nr), abs(r.nu)); r.nu = r.nu / c; r.nr = r.nr / c; if(r.nr*r.nu<0) { r.nu=abs(r.nu); r.nr=-abs(r.nr); } else { r.nu=abs(r.nu); r.nr=abs(r.nr); } } void citire(rational &r) { fin>>r.nr>>r.nu; simplific(r); } void afisare(rational r) { fout<<r.nr<<"/"<<r.nu<<" "; } int maimare (rational x, rational y) { int a = x.nr * y.nu; int b = x.nu * y.nr; return a > b; } int main()

{ int n,i; rational a,max; fin>>n; citire(a); max=a; for(i=2;i<=n;i++) { citire(a); if(maimare(a,max)) max=a; } afisare(max); fin.close(); fout.close(); return 0; }