Documente Academic
Documente Profesional
Documente Cultură
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; }
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; }
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.
4. Determină și afișează cel mai mare divizor propriu al unui număr n, citit de la tastatură.
5. Determină și afișează cea mai mare cifră care apare intr-un număr întreg, citit de la tastatură.
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
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 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 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
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 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. 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 #include <iostream>
>
using namespace std;
int main() {
int n;
cin >> n; using namespace std;
if(n % 2 == 0)
cout << n << " este int main() {
par"; int a, b, R;
else char operatie;
cout << n << " nu cin >> a >> b >>
este par"; operatie;
return 0; switch(operatie) {
} case '+': {
Scadere R = a + b;
#include
<iostream
> cout << R;
break;
}
using namespace std;
case '-': {
if(a > b)
int main() { R = a - b;
else
R = b - a;
int a, b, diferenta=0; cout << R;
cin >> a >> b;
diferenta = a - b; break;
cout << diferenta; }
return 0;
using namespace std; }
int main() {
int a, b, c, suma=0;
cin >> a >> b;
suma = a+b;
c=suma%10;
cout << c;
return 0;
}
Radical
#include
<iostream
>
#include "math.h"
using namespace std;
int main() {
int n, r;
cin >> n;