Sunteți pe pagina 1din 22

Exercitii rezolvate - instructiuni

A. Scrieți programele C++ pentru implementarea următorilor algoritmi scriși în pseudocod !


1. Determină și afișează cel mai mare dintre două numere citite de la tastatură. citește a, b;

citeste a,b #include <iostream> using namespace std; int


main() { int a,b; cin>>a>>b; if(a>b) cout<<a; else
daca a>b atunci scrie a cout<<b; return 0; }
1.           altfel b >a

2. Determină și afișează cel mai mare dintre trei numere citite de la tastatură.

citește a, b, c Solutie
dacă a>b atunci daca a>c atunci scrie a
    altfel scrie c #include <iostream> using namespace std; int
  altfel daca b>c atunci scrie b main() { int a,d,c; cin>>a>>b>>c;
                altfel scrie c
if(a>b) if(a>c) cout<<a; else cout<<c; else
if(b>c)cout<<b; else cout<<c; return 0; }

3. Determină și afișează  suma cifrelor unui număr întreg citit de la tastatură.

citește n scrie s
s=0;
cat timp n<>0 executa Soluție: 
s=s+n MOD 10
n=n/10 #include <iostream> using namespace std; int
sfarsit cat timp main() { int n, s; cin>>n; s=0; while(n!=0)  {  s=s+n
%10; n=n/10; } cout<<s; return 0; }

4. Verifică dacă  un  număr citit de la tastatură este prim. 

citește n Soluție: 
prim=1
pentru i=2, n DIV 2, 1 execută #include <iostream> using namespace std;
dacă n MOD i=0 atunci prim=0
sfarsit pentru int main() { int n,i,sw; cin>>n; sw=1;
daca prim=1 atunci scrie ‘numarul este prim’ for(i=2;i<=n/2;i++) if(n%i==0) sw=0;
 altfel scrie ’numarul nu este prim’ if(sw==1)cout<<”numarul citit este prim”; else
cout<<”numarul nu este prim”; return 0; }

5. Determinarea și afișarea cmmdc pentru două numere citite de la tastură, folosind algoritmul lui Euclid.

citeste a, b Soluție: 
cat timp a MOD b <> 0 executa
r=a MOD b #include <iostream> using namespace std;
a=b
b=r int main() { int a,d; cin>>a>>d; while(a%d!=0)
sfarsit cat timp { r=a%d; a=d; d=r; } cout<<d; return 0; }
scrie b

B. Rescrieți următoarele secvențe de program C++, înlocuind structurile repetitive prezente prin alte structuri
repetitive cunoscute.

1. Determină și afișează toate  numerele impare dintre două valori citite.


cin>>a>>b; if(a>b) {aux=a; a=b; b=aux;} for(int cin>>a>>b; if(a>b) {aux=a; a=b; b=aux;} int i=a;
i=a;i<=b;i++) if(x % 2!=0) cout<<i<<’ ‘; while(i<=b) { if(x % 2!=0) cout<<i<<’ ‘; i++; }
Soluție: 

2. Verifică dacă cifrele unui număr dat sunt în ordine crescătoare.

cin>>n; s=-1; while(n!=0) { if(n%10>s) s=n%10; Soluție: 


else s=11; } if(s==11) cout<<”cifrele nu sunt in
ordine crescatoare” ; else cout<<”cifrele sunt in cin>>n; s=-1; do { if(n%10>s) s=n%10; else
ordine crescatoare” ; s=11; } while(n!=0); if(s==11) cout<<”cifrele nu
sunt in ordine crescatoare” ; else cout<<”cifrele
sunt in ordine crescatoare” ;

3. Calculează și afișează suma S=1-4+9-16+....+(-1)^n*n^2

cin>>n; if(n<0) n=-n; sum=0; for(i=1;i<=n;i++) if(i Soluție:


%2==0) sum-=i*i; else sum+=i*i; cout<<sum;
cin>>n; if(n<0) n=-n; sum=0; i=1; while(i<=n)
{ if(i%2==0) sum-=i*i; else sum+=i*i; i++; }
cout<<sum;

4. Determină și afișează cel mai mare divizor propriu al unui număr n, citit de la tastatură.

cin>>n; if(n<0) n=-1*n; d=1; for(i=2;i<=n/2;i++) Soluție:


if(n%i==0)d=i; if(i==n/2+1) cout<<”numarul nu
are divizori proprii”; else cout<<d; cin>>n; if(n<0) n=-1*n; d=n/2; while(n % d !
=0)d--; if(d==1)cout<<”numarul dat nu are divizori
proprii”; else cout<<d;

5. Determină și afișează cea mai mare cifră care apare intr-un număr întreg, citit de la tastatură.

cin>>n; max=0; do { if(max < n%10) max=n%10; Soluție:


n=n/10; } while(n!=0); cout<<max;
cin>>n; max=0; while(n!=0) { if(max < n%10)
max=n%10; n=n/10; } cout<<max;

C.Scrieți programele C++  corespunzătoare algoritmilor de rezolvare a următoarelor probleme !

Fie funcția f:R→R, definită prin f(x)={(x^2,x≤0; x+1,0<x≤10; -x^2+2,x>10. Determinați valoarea funcției într-
un punct x, dat de la tastatură.  Soluție: 

#include <iostream> using namespace std; int main() { float x, f; cin>>x; if(x<=0) f=x*x; else if(x<=10)
f=x+1;  else f=-x*x+2 cout<<”f(”<<x<<”)=”<<f; return 0; }

2. Se introduc de la tastatură patru numere reale, a, b, c, d. Se cere să se verifice dacă numerele a și b, respectiv
c și d formează intervale și, dacă da, să se verifice dacă acestea sunt disjuncte.  Soluție: 

#include <iostream> using namespace std; int main() { float a,b,c,d; if((a<b)&&(c<d)){ if((a>d)||(c>b))
cout<<”Formeaza intervale disjuncte”;   else cout<<”Intervalele nu sunt disjuncte”; } else cout<<”Nu pot
forma intervale”; return 0; }

3. Să se verifice dacă un număr natural, introdus de la tastatură, este pefect (egal cu suma divizorilor mai mici
ca el, spre exemplu 6=1+2+3).  Soluție: 

#include <iostream> using namespace std; int main() { unsigned int n, s=1, d; cin>>n; for(d=2;d<=n/2;d++)
if(n%d==0)s=s+d; }

if(s==n) cout<<”numarul este perfect !”; else cout<<” numarul nu este perfect !”; return 0; }
4. Să se calculeze și să se afișeze suma S=1+1*2+1*2*3+…+1*2*3*…*n, unde n este un număr natural, citit
de la tastatură.  Soluție: 

#include <iostream> using namespace std; int main() { unsigned int n, termen=1; unsigned long sum=0;
cin>>n; for(i=1;i<=n;i++) { termen=termen*i;  sum=sum+termen; } cout<<sum; return 0; }

5. Să se determine și să se afișeze toate numerele mai mici decât un numar întreg n, citit de la tastatură, care au
proprietatea de a fi egale cu suma pătratelor cifrelor lor.  Soluție: 

#include <iostream> using namespace std; int main() { int n, i, ic, s; cin>>n; for(i=1;i<n;i++) { s=0; ic=i;
while(ic) { s=s+(ic%10)*(ic%10); ic=ic/10; } if(s==i) cout<<”Numarul”<<i<<” este egal cu suma patratelor
cifrelor sale \n”;} return 0; }

IF

Program care va afisa numarul maxim din 2 numere intregi introduse de la tastatura.

Program If2;
var a, b : integer ;
Procedure Introducere;
begin
readln (a,b);
end;
Procedure Comparatie;
begin
If a>b then
writeln (a,' este mai mare')
else writeln (b,' este mai mare');
end;
begin
Introducere;
Comparatie;
readln
end.

Case

Alcatuiti un program care va afisa numele/ prenumele de pe locul intodus.

Program Case1;
var a:integer;
begin
writeln ('Introduce-ti a=');
readln (a);
case a of 
1: writeln ('Popa Daniela');
2: writeln ('Mircea Eliade');
else writeln('Error');
end;
readln
end.
For

Program care va calcula suma , produsul , media aritmetica


numerelor de la 1 la n , unde n<=100.

Program For2;
var sum , prod , n , i:integer; med:real;
Procedure Operatiuni;
begin
sum:=0;
i:=1;
prod:=1;
n:=100;
For i:=1 to n do begin
sum:=sum+i;
prod:=prod*i;
end;
med:=sum/n;
end;
begin
Operatiuni;
Writeln ('Suma=',sum);
Writeln ('Produsul=',prod);
Writeln ('Media Aritmetica=',med:2:2);
readln
end.
While

Program care va calcula suma, produsul si media aritmetica


numerelor de la 1 la n.

Program While1; 
var i,n,s,p:integer; m:Real;
Procedure Operatii;
begin
i:=0; p:=1; s:=0;
while i < n do begin
i:=i+1;
s:=s+i;
p:=p*i;
end;
m:=s/n;
end;
begin
writeln ('Introduceti valoare lui n');
readln (n);
Operatii;
writeln ('Suma este',s);
writeln ('Produsul este',p);
writeln ('Media este',m:2:2);
readln
end.
Repeat

Program care va calcula suma,produsul si media aritmetica


numerilor de la 1 la n ,unde n<=100.
Program Repeat2; 
Var sum, prod, n, i: integer; med:real;
Procedure Introducere;
begin
sum:=0;
i:=1;
prod:=1;
Write('n='); Readln(n);
end;
Procedure Operatii;
begin
Repeat
sum:=sum+i;
prod:=prod*i;
i:=i+1;
Until i>=n;
med:=sum/n;
end;
begin
Introducere;
Operatii;
writeln ('suma: ',sum);
writeln ('produsul: ',prod);
writeln ('media aritmetica: ',med:2:2);
readln
End.

String

Alcatuiti un program care va afisa cite caractere ‘A’,’a’ sint


intr-un string.

Program String2; 
var t:string; i,n:Integer;
Procedure Kiks;
begin
For i:=1 to Length(t) do
If ((t[i]='A') or (t[i]='a')) then n:=n+1;
end;
begin
writeln ('Introduceti textul');
readln (t);
n:=0;
Kiks;
writeln ('Am gasit ',n,' A sau a');
readln
end.
Array

Program care va calcula suma elementelor dintr-un vector.  

Program Array1;
type matrice=array [1..100] of integer;
var A:matrice;
suma,i,n:integer;
Procedure Introducere;
begin
write('introduceti lungimea vectorului=');
readln(n);
for i:=1 to n do begin
writeln ('A[',i,']=');
readln (A[i]);
end;
end;
Procedure Afisare;
begin
for i:=1 to n do begin
write (A[i]:5);
end;
end;
Procedure Sumam;
begin
suma:=0;
for i:=1 to n do
suma:=suma+a[i];
end;
begin
Introducere;
Afisare;
Sumam;
writeln (' Suma este=',suma);
readln
end.

1. Să se verifice dacă un număr este pozitiv.


#include<iostream.h>
void main()
{
int a;
//citim numarul
cout<<„a=”;cin>>a;
//verificam daca numarul este pozitiv
if(a>=0) cout<<„numar pozitiv”;
else cout<<„numarul negativ”;
}
2. Să se verifice dacă un număr aparţine intervalului [a,b]. a şi b sunt numere reale citite de la tastatură.
#include<iostream.h>
void main()
{float a,b,n;
//citim datele de intrare: a,b si numarul dat
cout<<„a=”;cin>>a;
cout<<„b=”;cin>>b;
cout<<„n=”;cin>>n;
//verificam daca numarul n apartine intervalului [a,b]
if(n>=a and n<=b)cout<<n<<” apartine intervalului [a,b]”;
else cout<<n<<” nu apartine intervalului [a,b]”;
}
3. Să se verifice daca 3 numere citite de la tastatura sunt nule.
#include<iostream.h>
void main()
{float a,b,c;
//citim datele de intrare: a,b si numarul dat
cout<<„a=”;cin>>a;
cout<<„b=”;cin>>b;
cout<<„c=”;cin>>c;
//verificam daca numerele sunt nule
if(a==0 && a==0 && c==0)cout<<” toate numerele sunt nule”;
else cout<<” nu sunt toate nule”;
}
1. Se citesc de la tastatura n elemente. Cate dintre ele fac parte din intervalul [x,y]? x si y se citesc de la
tastatura.
#include<iostream.h>
int a[100],n,x,y,c;
void main()
{
cout<<„numarul de elemente: „;cin>>n;
cout<<„elementele\n”;
for(int i=1;i<=n;i++)
{
cout<<„a[„<<i<<„]=”;cin>>a[i];
}
cout<<„\ns-au citit elementele: „;
for(i=1;i<=n;i++) cout<<a[i]<<” „;
cout<<„\nx=”;cin>>x;
cout<<„\ny=”;cin>>y;
//contor pentru numerele cautate
c=0;
for(i=1;i<=n;i++)
if(a[i]>=x&&a[i]<=y)c++;
cout<<„\nnr=”<<c<<endl;\
}
2. Se citesc de la tastatura n numere. Care sunt pozitiile din vector unde se gasesc elemente pare?
#include<iostream.h>
int a[100],n;
void main()
{
cout<<„numarul de elemente: „;cin>>n;
cout<<„elementele\n”;
for(int i=1;i<=n;i++)
{
cout<<„a[„<<i<<„]=”;cin>>a[i];
}
for(i=1;i<=n;i++)
if(a[i]%2==0)cout<<i<<” „;
}
3. Se citesc n elemente reale. Care este suma elementelor aflate pe pozitii impare in vector?
#include<iostream.h>
int a[100],n,s=0;
void main()
{
cout<<„numarul de elemente: „;cin>>n;
cout<<„elementele\n”;
for(int i=1;i<=n;i++)
{
cout<<„a[„<<i<<„]=”;cin>>a[i];
}
//suma elementelor de pe pozitii impare
for(i=1;i<=n;i++)
if(i%2==1)s=s+a[i];
cout<<„s=”<<s;
}

1. Se citeşte un text într-o variabilă de tip string, in care cuvintele se despart prin spaţii. Se cere:
a) Să se afişeze cuvintele în ordine alfabetică;
b) Să se numere cuvintele cu minim 4 vocale distincte
#include <iostream.h>
#include <conio.h>
#include <string.h>
void main()
{
char text[100],*p, separator[]=” „, cuv[10][10], cuvant[10], aux[10] ; int nrv=0,voc, nr, k, i, j;
cout<<„Dati sirul:”;cin.get(text,100);
strcpy(p,text) ;
p=strtok(p,separator) ;
while(p)
{
strcpy(cuv[++nr],p);
p=strtok(NULL,separator);
}
for(i=1;i<nr;i++)
for(j=i+1;j<=nr;j++)
if(strcmp(cuv[i],cuv[j])>0)
{
strcpy(aux,cuv[i]);
strcpy(cuv[i],cuv[j]);
strcpy(cuv[j],aux);
}
for(i=1;i<=nr;i++)
cout<<cuv[i];
for(i=1;i<=nr;i++)
{
voc=0;
strcpy(cuvant,cuv[i]);
k=strlen(cuvant) ;
for(j=0;j<k;j++)
{switch(cuvant[j])
{
case ‘a’:
case ‘e’:
case ‘i’:
case ‘o’:
case ‘u’:{voc++; break;}
}}
if (voc>=4) nrv++ ;
}
cout<<nrv;
getch();
}

2. Fişierele cuv1.txt şi cuv2.txt conţin cuvinte, câte un cuvânt pe linie în ordine alfabetică. Să se construiască
fişierul cuv3.txt care să conţină toate cuvintele din cele două fişiere, în ordine alfabetică.

#include <iostream.h>
#include <conio.h>
#include <string.h>
#include<fstream.h>
#include<stdio.h>
void main()
{char a[10], b[10], cuv[10][20], aux[10]; int i,j,nr=0;
clrscr();
fstream f(„cuv1.txt”, ios::in);
while(f.getline(a,10))strcpy(cuv[++nr],a);
ifstream g(„cuv2.txt”);
while(g.getline(b,10))strcpy(cuv[++nr],b);

for(i=1;i<nr;i++)
for(j=i+1;j<=nr;j++)
if(strcmp(cuv[i],cuv[j])>0)
{
strcpy(aux,cuv[i]);
strcpy(cuv[i],cuv[j]);
strcpy(cuv[j],aux);
}
for(i=1;i<=nr;i++)
cout<<cuv[i]<<endl;
getch();}

3. În fişierul date.in sunt scrise mai multe cuvinte câte unul pe fiecare linie din fişier. Se cere:
a) Să se determine numărul de cuvinte din fişier;
b) Să se afişeze cuvintele care încep cu o vocală.

#include<iostream.h>
#include<fstream.h>
#include<string.h>
#include<conio.h>
void main()
{
char a[10]; int k, i, nr=0;
clrscr();
fstream f(„date.in”,ios::in);
while(f.getline(a,10))
{if(a[0]==’a’||a[0]==’e’||a[0]==’i’||a[0]==’o’||a[0]==’u’) cout<<a<<endl; nr++;
}
cout<<nr;
}
La o staţie de benzină există mai multe maşini caracterizate prin număr, marcă şi culoare. Se cere:
a) Să se determine numărul maşinilor Dacia;
b) Să se ordoneze maşinile după culoare.
#include<iostream.h>
#include<string.h>
#include<conio.h>
typedef struct
{char marca[20],culoare[20],med[20];
int nr;}masina ;
masina a[20];
int n,x,k;
void citire()
{int i;
cout<<„n=”;cin>>n;
for (i=1;i<=n;i++)
{cout<<„a[i].marca: „;cin>>a[i].marca;
cout<<„a[i].culoare: „;cin>>a[i].culoare;
cout<<„a[i].numar: „;cin>>a[i].nr;
}
}
void nr_dacia()
{ int i;
int nr=0;
for (i=1;i<=n;i++)
{x=strcmp(a[i].marca,”dacia”);
if (x==0) nr=nr+1;}
cout<<„numarul de masini Dacia este „<<nr<<„\n”;
}
void sortare()
{ int i,j;masina aux;

for (i=1;i<=n-1;i++)
for (j=i+1;j<=n;j++)
{x=strcmp(a[i].culoare,a[j].culoare);
if(x>0)
{aux=a[i];
a[i]=a[j];
a[j]=aux;
}
}
for (i=1;i<=n;i++)
cout<<a[i].culoare<<” „<<a[i].marca<<” „<<a[i].nr<<endl;
}

void main()
{
citire();
nr_dacia();
sortare();
}

Pentru evidenţa produselor cosmetice dintr-un depozit, se defineşte o structură cu următoarele informaţii: codul
produsului, denumire, preţul produsului. Citiţi informaţiile tuturor produselor şi afişaţi produsele cu noile
preţuri (valoarea lui x este 7 dacă codul produsului este mai mic decât 500. Şi 11 în caz contrar). Afişaţi
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();
}

Se citesc de la tastatură numele şi media generală a n elevi. Se cere să se afişeze lista elevilor în ordinea
descrescătoare 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();
}

Suma cifrelor
#include <iostream>
using namespace std;
int main() {
int n, S=0;
cin >> n;

while(n!=0) {
S += n%10;
n=n/10;
}
cout << S;
return 0;
}
Maximul
#include
<iostream Minimul
> #include
using namespace std; <iostream
int main(){ >
int a,b,max; using namespace std;
cin >> a>> b;
max = a;
if(b>max) int main(){
max = b; int a,b,c, min;
cout << max << endl; cin >> a>> b >> c;
return 0; min = a;
} if(b<min)
min = b;
if(c<min)
min = c;
cout << min << endl;
return 0;
}
r = sqrt(n);
cout << r;
Paritate return 0;
#include
<iostream
>
using namespace std;
int main() {
int n; }
cin >> n; #include <iostream>
if(n % 2 == 0)
cout << n << " este
par";
else
cout << n << " nu
using namespace std;
este par";
return 0;
} int main() {
Scadere int a, b, R;
char operatie;
#include
cin >> a >> b >>
<iostream
operatie;
>
switch(operatie) {
case '+': {
R = a + b;
using namespace std;

cout << R;
int main() { break;
}
int a, b, diferenta=0;
cin >> a >> b; case '-': {
diferenta = a - b; if(a > b)
cout << diferenta; R = a - b;
else
return 0; R = b - a;
} cout << R;
#include<iostream>
using namespace std; break;
}
int a,b;
int main()
case '*': {
{ R = a * b;
cin>>a>>b; cout << R;
cout<<a+b<<" "<<a-b<<" "<<a*b<<" break;
"<<a/b; }
return 0; case '/': {
} if(a > b)
#include R = a / b;
<iostream else
> R = b / a;
cout << R;
break;
using namespace std; }
int main() { default : cout <<
"Operatorul nu exista!";
int a, b, c, suma=0;
}
cin >> a >> b;
suma = a+b;
c=suma%10; return 0;
cout << c; }
return 0;
}
Radical
#include
<iostream
>
#include "math.h"
using namespace std;
int main() {
int n, r;
cin >> n;
Sa se scrie un program care rezolva ecuatia de gradul I a*x+b=0.

#include <iostream>
using namespace std;
int main()
{
float a,b,x;
cout <<”a=”;   cin >> a;
cout<<”b=”;    cin >> b;
if (a)
                {
                x=-b/a;
                cout<<x;
                }
else
                if (b==0) cout<<”ecuatia are o infinitate de solutii”
                else cout<<”ecuatia nu are solutii in R”;
 return 0;
}
case '+':
printf("a+b= %d", a+b); break;
Se citeste un numar natural n. Se cere sa se case '-': printf("a-
calculeze suma cifrelor sale. b= %d", a-b); break;
#include <iostream> case '/':
using namespace std; printf("a/b=%.2f",a/(float)b);
break;
int main()
case '*':
{ int n,s=0; printf("a*b= %d", a*b); break;
cout<<”n=”; cin >>n; default:
while (n) printf("Operatie necunoscuta");
 { }
    s=s+n%10; getchar();
    n=n/10; int k;
 } scanf("%d", k);
}
cout<<s;
return 0;
}
2) Sa se scrie un program care calculeza
Sa se scrie un program care executa
suma primelor n numere naturale cu
operatia aritmetica dorita (+,-,/,*).
#include<stdio.h> "for".
void main()
{ #include<stdio.h>
int a,b; void main()
printf("Introduceti a: "); {
scanf("%d", &a); int n,s=0;
printf("Introduceti b: "); printf("Introduceti n:");
scanf("%d", &b); scanf("%d",&n);
char x; for(int i=1;i<=n;i++)
getchar(); s+=i; //s=s+i;
printf("Introduceti operatia printf("Suma primelor %d
dorita (+ - * /): "); numere naturale este: %d\n",n,s);
scanf("%c", &x);
switch(x) getchar();
{ int k;
scanf("%d", k); #include <math.h>
} void main (void)
{
int a,b,c;
float x1,x2,d;
3) Sa se scrie un program care printf("Introduceti
calculeaza suma primelor n numere coeficientii ecuatiei.\n");
printf("\ta=");
naturale cu "while". scanf("%d",&a);
#include<stdio.h> printf("\tb=");
scanf("%d",&b);
void main() printf("\tc=");
{ scanf("%d",&c);
int n, s=0, i=1; if(!a) //a==0
printf("Introduceti n:"); if(!b)
scanf("%d",&n); if(!c)

while(i<=n) printf("Ecuatia are o


{ infinitate de solutii.");
s+=i; //s=s+i; else
i++;
} printf("Ecuatia nu are nici
o solutie.");
printf("Suma primelor %d numere else
naturale este: %d\n",n,s); {
x1=-c/
getchar(); (float)b;
int k;
scanf("%d", k); printf("Solutia ec. este:
} %.2f.",x1);
}
else
x1=-c/(float)b;
4) Sa se scrie un program care printf("Solutia ec.
este: %.2f.",x1);
calculeaza suma primelor n numere
naturale cu "do while". {
#include<stdio.h> d=b*b-4*a*c;
if(d<0)
void main()
{ printf("Ec nu are solutii
int n, s=0, i=1; reale.");
printf("Introduceti n:"); else
scanf("%d",&n); {
x1=(-
do b-sqrt(d))/2*a;
{
s+=i; //s=s+i; printf("Solutiile
i++; sunt:\n\tx1 este: %.2f\n",x1);
} x2=(-
while(i<=n) b+sqrt(d))/2*a;

printf("Suma primelor %d numere printf("\tx2 este:


naturale este: %d\n",n,s); %.2f\n",x2);
}
getchar(); }
int k;
scanf("%d", k); getchar();
} int k;
scanf("%d", k);
Sa se scrie un program care rezolva }
ecuatia de gradul al II-lea.
#include <stdio.h>
6) sa se scrie un program care getchar();
int k;
calculeaza valoarea expresiei S=1-2+3- scanf("%d", k);
4+....+, folosind functii proprii. }
#include <stdio.h>
7) Sa se scrie un program care
int suma1(int n) //cu
instructiunea FOR calculeaza valoarea expresiei:
{ P=1*2*3*4*...*n.
int s=0, i=1, semn=1;
for(; i<=n; i++) #include<stdio.h>
{ int produs1(int n) //cu
s+=semn*i; instructiunea FOR
//s=s+semn*i {
semn=-semn; int P=1;
} for(int i=1; i<=n; i++)
return s; P=P*i;
} return P;
}
int produs2(int n) //cu
int suma2(int n) //cu
instructiunea WHILE
instructiunea WHILE
{
{
int s=0, i=1, semn=1;
int P=1; int i=1;
while (i<=n)
while(i<=n)
{
{
s+=semn*i;
P=P*i;
//s=s+semn*i
i++;
semn=-semn;
}
i++;
return P;
}
}
return s;
int produs3(int n) //cu
}
instructiunea DO WHILE
{
int suma3(int n) //cu int P=1; int i=1;
instructiunea DO WHILE do{
{ P=P*i;
int s=0, i=1, semn=1; i++;
do }
{ while(i<=n);
s+=semn*i; return P;
//s=s+semn*i }
semn=-semn; void main()
i++; {
} int n;
while (i<=n); printf("Introduceti n: ");
return s; scanf("%d", &n);
} printf("\n\tProdusul
calculat cu FOR are valoarea:
void main() %d.\n" , produs1(n));
{ printf("\n\tProdusul
int n; calculat cu WHILE are valoarea:
printf("Introduceti n:"); %d.\n" , produs2(n));
scanf("%d", &n); printf("\n\tProdusul
calculat cu DO WHILE are valoarea:
printf("\n\tSuma calculata %d.\n" , produs3(n));
cu FOR are valoarea: %d" ,
suma1(n)); getchar();
printf("\n\tSuma calculata
int k;
cu WHILE are valoarea: %d" ,
scanf("%d", k);
suma2(n));
printf("\n\tSuma calculata }
cu DO WHILE are valoarea: %d" ,
suma3(n));
8) Sa se scrie un program care else p=p*i; //pt
impar
calculeaza valoarea expresiei: i++;
P=1*(1/2)*3*(1/4)*5*(1/6)*...n }
while(i<=n);
#include<stdio.h>
return p;
#include<math.h>
}
float produs1(int n) //cu
void main()
instructiunea FOR
{
{
int n;
float p=1;
printf("Introduceti n: ");
float z=1;
scanf("%d", &n);
for(int i=1; i<=n; i++)
printf("\nProdusul cu FOR
{
este: %.5f\n", produs1(n));
if (!(i%2)) //se
printf("\nProdusul cu WHILE
mai putea scrie if(i%2==0) <=>
este: %.5f\n", produs2(n));
testeaza dc nu e impar
printf("\nProdusul cu DO
{
WHILE este: %.5f\n", produs3(n));
z=1/(float)i;
p=p*z;
} getchar();
int k;
scanf("%d", k);
else p=p*i; //pt
}
impar
}
return p;
} 9) Sa se scrie un program care
float produs2(int n) //cu
instructiunea WHILE calculeaza valoarea expresiei:
{ S=1+1*2+1*2*3+1*2*3*4+1*2*3*4*5+
float p=1;
float z=1; ...+1*2*...*n.
int i=1; #include<stdio.h>
while(i<=n) void main()
{ {
if (!(i%2)) //se int n;
mai putea scrie if(i%2==0) <=> int s=0;
testeaza dc nu e impar int p=1;
{
z=1/(float)i; printf("Introduceti n:");
p=p*z; scanf("%d", &n);
}
else p=p*i; //pt for(int i=1; i<=n; i++)
impar {
i++; p=p*i;
} s=s+p;
return p; }
} printf("Rezutatul este: %d",
float produs3(int n) //cu s);
instructiunea WHILE
{
getchar();
float p=1;
int k;
float z=1;
scanf("%d", k);
int i=1;
}
do
{
if (!(i%2)) //se
mai putea scrie if(i%2==0) <=> 10) Sa se scrie un program care
testeaza dc e par
{ calculeaza x la puterea y (folosind
z=1/(float)i; functia pow).
p=p*z;
} #include <math.h>
#include<stdio.h>
void main() case 'u':
{ case 'U': v+
double x, y, z; +;
break;
printf("\nIntroduceti default: c++;
coeficientul: "); }
scanf("%lf", &x); k=getchar();
printf("\nAti introdus x= //urmatorul caracter din text va fi
%.2lf", x); trimis in variabila k
}
printf("\n\nIntroduceti printf("Numarul de vocale
puterea: "); este: %u\n",v);
scanf("%lf", &y); printf("Numarul de consoane
printf("\nAti introdus y= este: %u\n",c);
%.2lf", y);

z=pow(x,y); getchar();
int z;
printf("\n\n\%.2lf^%.2lf= scanf("%d", z);
%.2lf", x,y,z); }

getchar();
int k; 12) Se citeste un text format din cuvinte
scanf("%d", k);
} ce pot fi despartite prin spatiu sau
virgula. Textul citit se termina cu punct
sau enter. Sa se contorizeze vocalele si
11) Se citeste un text format din cuvinte
consoanele din acel text. Sa se rezolve
ce pot fi despartite prin spatiu sau
problema folosind o bucla repetitiva
virgula. Textul citit se termina cu punct
conditionata posterior.
sau enter. Sa se contorizeze vocalele si #include<stdio.h>
consoanele din acel text. void main()
#include<stdio.h> {
void main() int v=0;
{ int c=0;
int v=0; printf("Introduceti textul
int c=0; dorit: ");
char k;
printf("Introduceti textul
dorit: "); do
{
k=getchar();
char k;
if (k!=',' && k!=' '
k=getchar(); //citeste un carater,
&& k!='\n' && k!='.')
care va fi primul din text, care va
switch (k)
fi trimis variabilei k
{
case 'a':
while(k!='.' && k!='\n')
case 'A':
{
case 'e':
if (k!=',' && k!='
case 'E':
')
case 'i':
switch (k)
case 'I':
{
case 'o':
case 'a':
case 'O':
case 'A':
case 'u':
case 'e':
case 'U': v+
case 'E':
+;
case 'i':
break;
case 'I':
default: c++;
case 'o':
}
case 'O':
}
{
while(k!='.' && k!='\n'); if(litera=='M')
break;
printf("Numarul de vocale printf("%c",
este %u\n",v); litera);
printf("Numarul de consoane }
este %u\n",c); getchar();
int var;
getchar(); scanf("%d", var);
int z; }
scanf("%d", z);
}
15) Sa se transforme un numar din baza
10 intr-o baza p, 2<=p<=10.
13) Sa se contorizeze numarul de vocale
si cel de consoane din alfabet, folosind /* Vom împarti succesiv pe x
(numarul dat) la p, retinând cifrele
instructiunea de salt "goto". din baza p într-un
#include<stdio.h> numar xpi, care va fi apoi
void main() rasturnat, pentru a obtine numarul
{ xp, vazut ca
int v=0; reprezentarea în baza p a lui x.
int c=0; Pentru a nu avea probleme în cazul
char litera='A'; în care prima
eticheta: cifra a lui xpi ar fi 0, folosim o
switch (litera) incrementare cu 1 a cifrelor la
transformarea
{
x->xpi, respectiv o decrementare la
transformarea xpi->xp. */
case 'A':
case 'E': #include<stdio.h>
case 'I': void main ()
case 'O': {
case 'U': v+ int x,xpi,xp,p;
+; printf ("Dati x in baza 10:");
break; scanf ("%d",&x);
default: c++; printf("Dati noua baza p:");
} scanf("%d",&p);
litera++; //un alt mod de a scrie o
if(litera<='Z') goto instructiune for
eticheta; for (xpi=0; x; xpi=10*xpi+x
printf("Numarul de vocale %p+1,x=x/p);
este %d\n",v); for (xp=0; xpi; xp=10*xp+(xpi-
printf("Numarul de consoane 1)%10,xpi=xpi/10);
este %d\n",c); printf("Numarul in baza %d este:
%d",p,xp);
getchar();
int var; getchar();
scanf("%d", var); int var;
} scanf("%d", var);
}

14) Sa se afiseze din intregul alfabet /* De remarcat, in acest exemplu,


folosirea operatorului "," in
doar literele caractere mari pana la 'M'. cadrul
Bucla se va incheia in mod voit, prin instructiunii for. De pilda, primul
for se interpreteaza astfel:
folosirea instructiunii "break". - se initializeaza xpi cu 0;
#include<stdio.h> - cat timp x este diferit de 0
void main() executa:
{ - xpi devine 10*xpi+x%p+1
for(char litera='A'; litera<='Z'; - x se imparte la p (si se face
litera++) conversia la int).*/
printf("b=
");scanf("%d",&b);
printf("c=
16) Sa se realizeze un program care ");scanf("%d",&c);
intr-o bucla "while" calculeaza suma if(triunghi(a,b,c)==1)
{
cifrelor unui numar introdus de la s=a+b+c;
tastatura si afiseaza inversul lui. printf("Perimetrul
triunghiului ABC este: %d",s);
#include<stdio.h> }
#include<math.h> else
void main() printf("Nu este triunghi");
{
int nr;
getchar();
int s=0; //suma
int var;
cifrelor
scanf("&d", var);
int inv=0;
}
//inversul numarului
printf("Introduceti numarul:
");
scanf("%d",&nr); 18) Sa se calculeze valoarea functiei f
while (nr) //sau
while(n!=0) definita pe multimea numerelor reale
{ pentru un x citit:
s=s+nr%10; | x-3, ptr. x<5
inv=inv*10+nr%10; F=| x+1, ptr. 5>x>25
nr/=10; | x-5x+6,ptr. x>25
}
/* instructiunea repetitiva de mai #include<stdio.h>
sus se mai putea scrie si asa: void main()
while(ninv*=10,ninv+=n {
%10,s+=n%10,n/=10); */ int x;
printf("Suma este: %d",s); printf("Introduceti numarul:
printf("\nInversul este: ");
%d",inv); scanf("%d",&x);

getchar(); if(x>=5&&x<=25)
int var; printf("F(x)= %d",x+1);
scanf("&d", var); else
} {
if(x<5)
printf("F(x)=
%d",x-3);
17) Fiind furnizate 3 numere intregi sa else
printf("F(x)=
se verifice daca acestea pot fi masurile %d",x-5*x+6);
unui triunghi, si in caz afirmativ sa se }
getchar();
calculeze perimetrul. int var;
#include<stdio.h> scanf("&d", var);
int triunghi(int a,int b,int c) }
{

if((a>0)&&(b>0)&&(c>0)&&(a<b+c)&&(b
<a+c)&&(c<a+b)) 19) Sa se afiseze suma cifrelor unui
return 1; numar natural dat. Indicatie: se
else
return 0; detaseaza fiecare cifra de la sfarsitul
} numarului calculand restul impartirii
void main()
{ numarului la 10; numarul ramas dupa
int a,b,c,s=0; desprinderea cifrei este catul impartirii
printf("a=
");scanf("%d",&a); la 10.
#include<stdio.h>
void main() printf("Produsul este:
{ %d",p);
int n,s=0; getchar();
printf("n= int var;
");scanf("%d",&n); scanf("&d", var);
while(n!=0) }
{
s=s+n%10;
n=n/10;
} 22) Sa se calculeze suma
printf("Suma cifrelor este: S=1^2+2^2+3^2+4^2+...+n^2.
%d",s);
#include<stdio.h>
void main()
getchar();
{
int var;
int n,s=0,i;
scanf("&d", var);
printf("n= ");
}
scanf("%d",&n);

for(i=1;i<=n;i++)
20) Sa se calculeze suma S=1!+2!+3!+ s=s+i*i;
…+n! printf("Suma este egala cu:
#include<stdio.h> %d",s);
int factorial(int n)
{ getchar();
int p=1; int var;
for(int i=1;i<=n;i++) scanf("&d", var);
p*=i; }
return p;
}
void main()
{ 23) Sa se calculeze suma S=1-
int m,i,s=0;
printf("\n\tIntroduceti nr:
1*2+1*2*3-...±1*2*3*...*n.
");scanf("%d",&m); #include<stdio.h>
for(i=1;i<=m;i++) int factorial(int n)
s=s+factorial(i); {
printf("\tSuma este: %d",s); int p=1;
getchar(); for(int i=1;i<=n;i++)
int var; p*=i;
scanf("&d", var); return p;}
}
void main()

{
21) Sa se calculeze produsul: int n,i,s=0,semn=1;
P=2*4*6*8*10*…*n, unde n=2k. printf("n=
");scanf("%d",&n);
#include<stdio.h>
for(i=1;i<=n;i++)
void main()
{
{
int n,i,p=1;
printf("Introduceti nr: "); s=s+semn*factorial(i);
scanf("%d",&n); semn=-1;
n=n*2; }
printf("Suma este egala cu:
%d",s);
for(i=2;i<=n;i++)
{
if (!(i%2)) //se getchar();
mai putea scrie if(i%2==0) <=> int var;
testeaza dc e par scanf("&d", var);
p*=i; }
}
24) Sa se transforme un numar din baza
10 în baza p<10.
#include<stdio.h>
void main()
{
int n,m,p,y=0,c;
printf("Nr in baza 10 este:
");scanf("%d",&n);
printf("Baza in care se
converteste: ");scanf("%d",&p);

while(n!=0)
{
c=n%p;
y=y*10+c;
n=n/p;
}

printf("Nr. in baza %d este:


%d",p,y);

getchar();
int var;
scanf("&d", var);
}

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