Documente Academic
Documente Profesional
Documente Cultură
/*
Fie a si b 2 numere intregi date de la tastatura.
sa se realizeze in C++ 2 programe (cu functii si fara functii) care afiseaza:
a) suma lor;
b) diferenta lor;
c) produsul lor;
d) catul impartirii lui a la b;
e) restul impartirii lui a la b;
f) care este cel mai mic numar (cu mesaj);
g) care este cel mai mare numar.
*/
/* VARIANTA FARA FUNCTII */
#include<iostream.h>
#include<conio.h>
int a,b;
void main(void) {
clrscr();
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
// afisam suma celor 2 numere
cout<<"suma celor 2 numere este : "<<a+b<<endl;
// afisam diferenta lor
cout<<"diferenta celor 2 numere este: "<<a-b<<endl;
// afisam produsul lor
cout<<"produsul celor 2 numere este: "<<a*b<<endl;
// afisam catul impartirii lui a la b
cout<<"catul impartirii celor 2 numere este: "<<(int)(a/b)<<endl;
// afisam restul impartirii lui a la b
cout<<"restul impartirii celor 2 numere este: "<<a%b<<endl;
if (a>b){
cout<<"b este mai mic decat a"<<endl;
cout<<"cel mai mare numar este a= "<<a<<endl;
} else if (a<b){
cout<<"a este mai mic ca b"<<endl;
cout<<"cel mai mare numar este b= "<<endl;
} else cout<<"a este egal cu b"<<endl;
cout<<"Apasati o tasta....";
getch();
}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
/*
Fie a si b 2 numere intregi date de la tastatura.
sa se realizeze in C++ 2 programe (cu functii si fara functii) care afiseaza:
a) suma lor;
b) diferenta lor;
c) produsul lor;
d) catul impartirii lui a la b;
e) restul impartirii lui a la b;
f) care este cel mai mic numar (cu mesaj);
g) care este cel mai mare numar.
*/
/* VARIANTA CU FUNCTII */
#include<iostream.h>
#include<conio.h>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
/*
Sa se calculeze valoarea expresiei
E(x)= ax*x+b, pentru x<0
= 2, pentru x=0
= 5x-7, pentru x>0
*/
#include<iostream.h>
#include<conio.h>
int a,b,x;
int E(int x) {
if (x<0) return (a*x*x+b); else if (x==0) return 2; else return (5*x-7);}
void main(void) {
clrscr();
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
cout<<"x="; cin>>x;
cout<<"E(x)= "<<E(x)<<endl;
cout<<"Apasati o tasta....";
getch();
}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
/*
Se citeste un sir de numere pana la intalnirea numarului 4.
Sa se realizeze un program in C++ care afiseaza:
a) numerele;
b) suma lor;
c) media aritmetica a numerelor;
d) cate numere sunt mai mici ca 6;
e) suma numerelor divizibile cu 3;
f) media aritmetica a numerelor care sunt divizibile cu 3
sau care dau restul 2 la impartirea cu 4
*/
#include<iostream.h>
#include<conio.h>
int nr_citit, total_numere, suma_numere, numere_sub_6, suma_div_3, media_art,//
i,j, numar[100];
void main(void) {
clrscr();
total_numere=0;
suma_numere=0;
numere_sub_6=0;
suma_div_3=0;
media_art=0;
j=0;
do {
cout<<"intruduceti numarul : "; cin>>nr_citit;
numar[total_numere]=nr_citit;
suma_numere+=nr_citit;
if (nr_citit<6) numere_sub_6++;
if (!(nr_citit%3)) suma_div_3+=nr_citit;
if ((!(nr_citit%3)) || ((nr_citit%4)==2)) {media_art+=nr_citit;j++;}
total_numere++;
} while (nr_citit!=4);
cout<<"Numerele introduse sunt: ";
return produs;
}
/* returneaza suma elementelor negative aflate pe pozitii impare
in cazul in care acestea exista , altfel returneaza 0 */
int suma_elemete_negative(void){
int suma=0;
for(int i=0;i<n;i++) if ((X[i]<0)&&(i%2)) suma+=X[i];
return suma;
}
/* returneaza media aritmetica a elementelor care dau rest 2
la impartirea cu 5 , altfel returneaza 0 */
float media_aritmetica_rest2(void){
float ma=0;
int nr_elemente=0;
for(int i=0;i<n;i++) if ((X[i]%5)==2) {ma+=X[i];nr_elemente++;}
if (nr_elemente) return (ma/nr_elemente); else return 0;
}
/* returneaza numarul de elemente mai mici ca 6 */
int nr_elemente_sub6(void){
int nr_elemente=0;
for(int i=0;i<n;i++) if ((X[i]<6)==2) nr_elemente++;
return (nr_elemente);
}
/*verifica daca al p-lea element din sirul X este divizibil cu 4*/
void element_p_div6(void){
int nr_elem=0;
do{
cout<<"Numarul elementului pt verificarea diviziunii cu 4 (0 - "<<n-1<<"), p
= ";cin>>nr_elem;
} while ((nr_elem<0)||(nr_elem>n-1));
if (X[nr_elem]%4) cout<<"f) Elementul X["<<nr_elem<<"] NU este divizibil cu 4";
else cout<<"f) Elementul X["<<nr_elem<<"] este divizibil cu 4";
}
void main(void) {
n=0;
do{
clrscr();
cout<<"Introduceti numarul de elemente ale sirului X (2-50), n= ";cin>>n;
} while ((n<2)||(n>50));
cout<<"Introduceti elementele sirului X"<<endl;
for(int i=0;i<n;i++) {
cout<<"X["<<i<<"] = ";cin>>X[i];
}
int suma_ep=suma_elemete_pozitive();
if (!suma_ep) cout <<"a) Nu exista elemente pozitive"<<endl; else
cout<<"a) Suma elementelor pozitive este: "<<suma_ep<<endl;
int prod_ep=produs_elemete_pare();
if (prod_ep== 1) cout <<"b) Nu exista elemente pare"<<endl; else
cout<<"b) Produsul elementelor pare este: "<<prod_ep<<endl;
int suma_en=suma_elemete_negative();
if (!suma_en) cout <<"c) Nu exista elemente negative aflate pe pozitii impare"
<<endl; else
cout<<"c) Suma elementelor negative aflate pe pozitii impare este: "<<suma_
en<<endl;
float media_r2=media_aritmetica_rest2();
if (!media_r2) cout<<"d) Nu exista elemente care dau restul 2 la impartirea cu
5"<<endl; else
cout<<"d) Media aritm. a elementelor care dau rest 2 la impartirea cu 5 est
e: "<<media_r2<<endl;
cout<<"e) Numarul elementelor mai mici ca 6 este : "<<nr_elemente_sub6()<<endl
;
element_p_div6();
cout<<endl<<"Apasati o tasta....";
getch();
}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
/*
Se da o matrice A cu n linii si n coloane
a) Sa se afiseze matricea;
b) Sa se calculeze suma elementelor de pe coloanele impare
c) Sa se afiseze numarul elementelor negative din matrice
d) Sa se afle elementul maxim de pe linia k
e) Sa se afle elementul maxim al matricii
*/
#include<iostream.h>
#include<conio.h>
const MAX_RANG=10; /*Rangul maxim pe care il poate avea matricea*/
int matrice[MAX_RANG][MAX_RANG],n;
void afisare_matrice(void){
cout<<"a) Afisare matrice introdusa"<<endl;
for(int i=0; i<n;i++) {
for(int j=0;j<n;j++)
cout<<matrice[i][j]<<" ";
cout<<endl;}
}
int suma_elemente_col_impare(void){
int suma=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j+=2)
suma+=matrice[i][j];
return suma;
/* coloana 0 a fost considerata ca fiind prima coloana impara a matricii */
}
int numar_elemente_negative(void){
int nr=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if (matrice[i][j]<0) nr++;
return nr++;
}
int elementul_maxim_al_liniei(int k){
int max=matrice[k-1][0];
for(int j=0;j<n;j++)
if (max<matrice[k-1][j]) max=matrice[k-1][j];
return max;
program ecuatie;
var a,b,c,d:real;
BEGIN
write('a=');readln(a);
write('b=');readln(b);
write('c=');readln(c);
if a=0 then
if b=0 then
if c=0 then
writeln('Ecuatie nedeterminata, S=R')
else writeln('Ecuatia nu are solutii.')
else writeln('Ecuatie de gradul I cu solutia x=',-c/b:6:2)
else
begin
d:=b*b-4*a*c;
if d>=0 then
begin
writeln('x1=',(-b-sqrt(d))/(2*a):6:2);
writeln('x2=',(-b+sqrt(d))/(2*a):6:2);
end
else writeln('Ecuatia nu are solutii reale.');
end;
readln;
END.
#include <stdio.h>
#include <math.h>
Sa se determine daca trei numere reale pot reprezenta laturile unui triunghi. Da
ca da, sa se calculeze perimetrul si aria sa.
program arie;
var a,b,c:integer;
s,p:real;
function laturi_ok:boolean;
begin
laturi_ok:= (a>0) and (b>0) and (c>0) and (a+b>c) and (a+c>b) and (b+c>a) ;
end;
BEGIN
write('introduceti laturile');readln(a,b,c);
P:=(a+b+c)/2;
IF laturi_ok then
begin s:=sqrt(p*(p-a)*(p-b)*(p-c));
writeln('s=',s:5:2);
writeln('p=',p*2:5:2);
end
else writeln('laturi negative sau prea mari');
readln;
END.
// solutia in limbajul C
#include <stdio.h>
#include <math.h>
float a,b,c;
float s,p;
int laturi_ok(void)
void main(void)
else printf("laturi negative sau prea mari");
}
program medii;
var a,b,c,ma,mg,mh:real;
BEGIN
write('a=');readln(a);
write('b=');readln(b);
write('c=');readln(c);
writeln('ma=',(a+b+c)/3:6:2);
if (a=0) or (b=0) or (c=0) then writeln('mg=0')
else
if a*b*c>0 then writeln('mg=',exp(1/3*ln(a*b*c)):6:2)
else writeln('Nu putem calcula media geometrica ,nr negative .');
if (a=0) or (b=0) or (c=0) then writeln('Nu putem calcula media hiperbolica')
else writeln('mh=',3/(1/a+1/b+1/c):6:2);
readln;
END.
// solutia in limbajul C
#include <stdio.h>
#include <math.h>
float a,b,c,ma,mg,mh;
program suma;
var s,i:word;
BEGIN
writeln('Introduceti limita n=');readln(n);
s:=0;
for i:=1 to n do s:=s+i;
writeln('s=',s);
readln;
END.
// solutia in limbajul C
#include <stdio.h>
unsigned s,i;
void main(void)
-pentru a verifica daca un numar este patrat perfect calculam radacina patrata a
numarului
-daca numarul este patrat perfect radacina lui este un numar intreg altfel este
un numar cu zecimale
-verificam daca patratul partii intregii a radacinii numarului este egal cu numa
rul dat ,daca da numarul este patrat perfect altfel numarul nu este patrat perfe
ct
-la fel procedam pentru a verifica daca un numar este cub perfect .
program patrat_si_cub_perfect;
var n:longint;
BEGIN
write('n=');readln(n);
if n=trunc(sqrt(n))*trunc(sqrt(n)) then
writeln(n,' este patrat perfect')
else
writeln(n,' nu este patrat perfect');
if n=trunc(exp(1/3*ln(n)))*trunc(exp(1/3*ln(n)))*trunc(exp(1/3*ln(n))) then
writeln(n,' este cub perfect')
else
// solutia in limbajul C
#include <stdio.h>
#include <math.h>
void main(void)
-observam ca daca abordam solutia la "prima mna" numarul pasilor n cadrul ciclului
for este de 8999, pentru ca valoarea de intrare in ciclul for este 1000 iar
valoarea de iesire este 9999.
-re-analiznd problema putem stabili un numar foarte mic de pasi care este egal cu
numarul de numere formate din patru cifre divizibile cu n .
program nr_divizibile;
var n,i:word;
BEGIN
write('n=');readln(n);
// solutia in limbajul C
#include <stdio.h>
unsigned n,i;
void main(void)
-suma cifrelor numarului citit se obtine adunnd de fiecare data ultima cifra c
e este restul impartirii lui n la 10 (n mod 10) iar ceea ce ramine eliminind ul
tima cifra este dat de impartirea lui n la 10 (n div 10).
program suma_cifre;
var n,s:word;
BEGIN
write('n=');readln(n);
s:=0;
while n<> 0 do
begin
s:=s+n mod 10;
n:=n div 10;
end;
writeln('s=',s);
readln;
END.
// solutia in limbajul C
#include <stdio.h>
unsigned n,s;
void main(void)
printf("s=%u",s);
}
1
1 2
1 2 3
......
1 2 3 ..n
program triunghi;
var i,j,n:word;
BEGIN
write('n=');readln(n);
for i:=1 to n do
begin
for j:=1 to i do
write(j,' ');
writeln;
end;
readln;
END.
// solutia in limbajul C
#include <stdio.h>
int n,i,j;
void main(void)
}
Pentru rezolvarea problemei folosim sirul convergent dat (metoda lui Newton) car
e consta in etapele:
-pornind cu x0=1 se genereaza recursiv urmatorul sir de numere reale
xn=1/2(xn-1+x/xn-1)
-cand diferenta intre xn si xn-1 este foarte mica(mai mica decat o limita data)p
rocesul de generare a lui xn inceteaza
var x,xn,xn_1:real;
BEGIN
write('Introduceti valoarea:');readln(x);
xn:=1;
repeat
xn_1:=xn;
xn:=0.5*(xn_1+x/xn_1);
until abs(xn-xn_1)<1e-5;
writeln('radical din ',xn:6:2,'=',sqrt(x):10:5);
readln;
END.
// solutia in limbajul C
#include <stdio.h>
#include <math.h>
float x,xn,xn_1;
program nr_perfecte;
var n,d,i:word;
BEGIN
write('n=');readln(n);
while n>1 do
begin
dec(n);
d:=0;
for i:=1 to n-1 do
if n mod i=0 then d:=d+i;
if n=d then writeln(n);
end;
readln;
END.
// o varianta C
#include <conio.h>
#include <stdio.h>
main()
while(sum!=i);
printf("%ld ",i);
}
while(k<n);
}
care l
program transf_in_baza_2;
var n,n2,i,j:word;
n2inv:array[1..20] of word;
BEGIN
write('n=');readln(n);
i:=1;
while n>0 do
begin
n2:=n mod 2;
n2inv[i]:=n2;
n:=n div 2;
i:=i+1;
end;
for j:=i-1 downto 1 do
write(n2inv[j]);
readln;
END.
#include <stdio.h>
typedef unsigned char pointer[4];
void afiseaza(pointer px,int dim,char* format)
printf(" adica ");printf(format,*px);
}
float y;
long x;
void main(void)
program dist_elem;
var n,i:word;
max:real;
x:array[1..50] of real;
BEGIN
write('n=');readln(n);
for i:=1 to n do
begin
write('x[',i,']=');
readln(x[i]);
end;
max:=x[2]-x[1];
for i:=2 to n-1 do
if x[i+1]-x[i]>max then max:=x[i+1]-x[i];
writeln('max=',max:6:2);
readln;
END.
program polinom;
var n,i :integer;
p,x:real;
a:array[0..20] of integer;
BEGIN
Se cites
write('n=');readln(n);
for i:=0 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
write('x=');readln(x);
p:=0;
for i:=n downto 0 do
p:=p*x+a[i];
writeln('P(',x,')=',p:6:2);
readln;
END.
program nr_consoane_si_vocale;
var c:char;
i,nv,nc:word;
sir:string[25];
BEGIN
write('Introduceti propozitia:');readln(sir);
i:=1; nv:=0; nc:=0;
repeat
case sir[i] of
'a','e','i','o','u': nv:=nv+1;
'b','c','d','f','g','h','j','k','l','m','n','p','r','s','t','x','y','w' :
nc:=nc+1;
end;
i:=i+1;
until sir[i]='.';
writeln('Nr de vocale=',nv);
writeln('Nr de consoane=',nc);
readln;
END.
// varianta C
#include <stdio.h>
#include <ctype.h>
int i,vocale=0,consoane=0;
char c,sir[80];
void main(void)
printf("Vocale:%i, Consoane:%i, Alte car.:%i", vocale, consoane, i-vocale-cons
oane);
}
program matrice3;
var m,n,i,j:word;
a:array[1..50,1..50] of real;
sl,sc:array[1..50] of real;
BEGIN
write('Introduceti nr de linii m=');readln(m);
write('Introduceti nr de coloane n=');readln(n);
for i:=1 to m do
begin
for j:=1 to n do
begin
write('a[',i,',',j,']=');
read(a[i,j]);
end;
writeln;
end;
for i:=1 to m do
begin
for j:=1 to n do
sl[i]:=sl[i]+a[i,j];
writeln('suma elementelor de pe linia ',i,'=',sl[i]:6:2);
end;
for j:=1 to n do
begin
for i:=1 to m do
sc[j]:=sc[j]+a[i,j];
writeln('suma elementelor de pe coloana ',j,'=',sc[j]:6:2);
end;
readln;
END.
// varianta C
#include <stdio.h>
unsigned m,n,i,j;
float a[50][50];
float sl[50],sc[50];
void main(void)
putchar('\n');
};
for (i=0;i<m;i++) sl[i]=0;
for (j=0;j<n;j++) sc[j]=0;
for (i=0;i<m;i++)
for (j=0;j<n;j++)
}
program matrice1;
type matrice= array[1..3,1..3] of real;
var a,b,p: matrice;
n,i,j,k,l:word;
procedure atribuire(a:matrice);
begin
for i:=1 to n do
for j:=1 to n do
b[i,j]:=a[i,j];
end;
procedure inmultire ;
begin
for i:=1 to n do
for j:=1 to n do
p[i,j]:=0;
for i:=1 to n do
for j:=1 to n do
for l:=1 to n do
p[i,j]:=p[i,j]+a[i,l]*b[l,j];
end;
BEGIN
write('Introduceti puterea lui A ,k=');readln(k);
write('Introduceti dimensiunea matricii n=');readln(n);
for i:=1 to n do
begin
for j:=1 to n do
begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
writeln;
end;
if k=1 then
for i:=1 to n do
for j:=1 to n do
p[i,j]:=a[i,j]
else
if k=2 then
begin
atribuire(a);
inmultire;
end
else
begin
atribuire(a);
inmultire;
k:=k-1;
while k>1 do
begin
atribuire(p);
inmultire;
k:=k-1;
end;
end ;
for i:=1 to n do
begin
for j:=1 to n do
write('p[',i,',',j,']=',p[i,j]:6:2,' ');
readln;
end;
readln;
END.
#include <stdio.h>
void main(void)
#include <stdio.h>
void main(int argc,char *argv[])
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
struct articol
inreg;
FILE *fagenda,*ftemp;
char mod[3]="wb";
void creare(void)
while(toupper(temp)!='N'); // ciclu infinit ? NU!
fclose(fagenda); /* close file */
}
void listare(void)
void main(void)
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define XMAX 6
#define YMAX 6
char a[XMAX+1][YMAX+1]=;
int x0=1,y0=2;
void print(void)
getchar();clrscr();
}
void main(void)
- de exemplu, daca n=3 putem avea siruri de forma abc, cab, bcb, etc. dar nu si
siruri de forma aab; pentru n=4 nu putem genera siruri de forma abab, baac, etc.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define byte unsigned char
void main(void)
Sa se afiseze toate descompunerile unei sume s ntr-un numar minim de monezi ale u
nui sistem monetar de n valori.
#include <stdio.h>
int m[10],a[10],a_final[10],s,n,nrmin=32000,kmin;
void main(void)
#include <stdio.h>
int a[10],s,n,contor=0;
void main(void)
- aceasta este o varianta a problemei dinainte; puteti sesizati unde apare difer
enta n rezolvare ?
#include <stdio.h>
int a[10],s,n,contor=0;
void main(void)