Documente Academic
Documente Profesional
Documente Cultură
RAPORT
la lucrarea de laborator nr. 3
la Programarea Calculatoarelor
Chişinău 2022
Scopul lucrării
1
Scopul lucrării este de a familiariza studentul cu scrierea și utilizarea funcțiilor și a
recursiei, utilizînd limbajul C.
Obiectivele temei
Scrierea și utilizarea funcțiilor și a recursiei, utilizînd limbajul C.
⦁ Rezolvare
int main(){
int a;
int b;
printf ("Introdu numarul:\n");
scanf("%d", &a);
cub(a, b);
printf("Numarul %d la cub este %d", a, cub(a, b));
return 0;
}
2
⦁ Scrieți un program C pentru a găsi diametrul, circumferința și aria cercului folosind
funcțiile.
#include <stdio.h>
#include <math.h>
int diametr(int a, int b){
b=2*a;
return b;
}
double aria(int a, double c){
c=pow(a, 2)*3,14;
return c;
}
double circ(int a, double d){
d=2*a*3,14;
return d;
}
int main(){
int a;
3
double b;
double c;
double d;
⦁ Scrieți un program C pentru a găsi maxim și minim între două numere folosind
funcții.
#include <stdio.h>
#include <math.h>
void rar(int a, int b){
if (a>b)
{
printf("Numarul max este:%d\nIar numarul min este:%d", a, b);
}
4
else{
printf("Numarul max este:%d\nIar numarul min este:%d", b, a);
}
}
int main(){
int a;
int b;
printf("Introdu cele doua numere\n");
scanf("%d", &a);
scanf("%d", &b);
rar(a, b);
return 0;
}
⦁ Scrieți un program C pentru a verifica dacă un număr este par sau impar folosind
funcțiile.
#include <stdio.h>
#include <math.h>
5
void vfv(int a){
if (a%2!=0)
{
printf("Numarul %d este impar", a);
}
else{
printf("Numarul %d este par", a);
}
}
int main(){
int a;
printf("Introdu numarul\n");
scanf("%d", &a);
vfv(a);
return 0;
}
⦁ Scrieți un program C pentru a verifica dacă un număr este prim, Armstrong sau un
6
număr perfect folosind funcții.
#include <stdio.h>
#include <math.h>
7
else{
printf("Numarul nu este numar Armstrong\n");
}
}
void tyt(int a, int f, int g){
for (int i = 1; i < a; i++)
{
f=a%i;
if (f<1)
{
g+=i;
}
}
if (g==a)
{
printf("Numarul este perfect\n");
}
else{
printf("Numarul nu este perfect\n");
}
}
int main(){
int a;
int b;
int c;
int d;
int e;
int f;
int g;
8
printf("Introdu numarul:\n");
scanf("%d", &a);
ouo(a, b);
klk(a, c, e, d);
tyt(a, f, g);
return 0;
}
⦁ Scrieți un program C pentru a găsi toate numerele prime între intervalul dat folosind
funcțiile.
#include <stdio.h>
#include <math.h>
int mnm(int a){
for (int i=2; i<=a/2 ; i++){
if (a%i==0){
return 0;
}
else{
return 1;
9
}
}
}
void pop(int a, int b, int c){
printf("Numerele prime din sir sunt:\n");
while(a <= b){
if(mnm(a)){
printf("%d\n", a);
}
a++;
}
}
int main(){
int a;
int b;
int c;
printf("Introdu inceputul si sfarsitul intervalului:\n");
scanf("%d", &a);
scanf("%d", &b);
pop(a, b, c);
return 0;
}
10
⦁ Scrieți un program C pentru a imprima toate numerele puternice între intervalul dat
folosind funcțiile.
#include <stdio.h>
#include <math.h>
void ygy(int a, int b){
int c;
int d;
while(a != b){
c = 0;
d = a;
while(d != 0){
c+= fact(d % 10);
d /= 10;}
if(a == c){
printf("%d, ", a);}
a++;}
}
int fact(int e){
if(e == 0)
11
return 1;
else
return (e * fact(e-1));
}
int main(){
int a;
int b;
printf("Introdu un nr puternic minim: ");
scanf("%d", &a);
printf("Introdu un nr puternic maxim ");
scanf("%d", &b);
printf("Toate nr puternice de la %d la %d sunt: \n", a, b);
ygy(a, b);
return 0;
}
12
d = a;
s = 0;
while(d != 0){
e = d % 10;
s += e * e * e;
d /= 10;
}
if(a == s)
return 1;
else
return 0;
}
void mnm(int a, int b, int c, int d, int e, int s){
while(a <= b){
if(lol(a, d, e, s)){
printf("%d, ", a);
}
a++;
}
}
int main(){
int a;
int b;
int c;
int d;
int e;
int s;
printf("Indica intervalul de numere:\n");
scanf("%d", &a);
scanf("%d", &b);
printf("Toate numerele Armstrong din interval sunt:\n");
13
mnm(a,b,c,d,e,s);
return 0;
}
⦁ Scrieți un program C pentru a imprima toate numerele perfecte între intervalul dat
folosind funcțiile.
#include <stdio.h>
14
return 0;
}
int main(){
int a;
int b;
int c;
int i;
int s;
printf("Indica intervalul de numere:\n");
scanf("%d", &a);
scanf("%d", &b);
printf("Toate numerele Armstrong din interval sunt:\n");
vbv(a, b, c, s);
return 0;
}
15
Probleme pentru utilizarea funcțiilor recursive:
⦁ Scrieți un program C pentru a găsi puterea oricărui număr folosind recursivitatea.
#include <stdio.h>
int main(){
double a;
double c;
int b;
printf("Introdu baza si exponentul\n");
16
scanf("%lf", &a);
scanf("%d", &b);
c = alk(a, b);
printf("%.2lf ^ %d = %f", a, b, c);
return 0;
}
int main(){
int a;
17
int b;
printf("Limita minima:");
scanf("%d", &a);
printf("Limita maxima:");
scanf("%d", &b);
printf("Nr naturale de la %d la %d sunt:", a, b);
olo(a, b);
return 0;
}
⦁ Scrieți un program C pentru a imprima toate numerele pare sau impare în intervalul
dat folosind recursivitatea.
#include <stdio.h>
void gtg(int c, int b){
if(c > b)
return;
printf("%d, ", c);
gtg(c + 2, b);
}
int main(){
18
int a;
int d;
printf("Introdu nr minim a limitei: ");
scanf("%d", &a);
printf("Introdu nr maxim a limitei: ");
scanf("%d", &d);
printf("Nr pare de la %d la %d sunt: ", a, d);
gtg(a, d);
return 0;
}
⦁ Scrieți un program C pentru a găsi suma tuturor numerelor naturale cuprinse între 1
și n folosind recursivitatea.
#include <stdio.h>
int iji(int n){
if (n != 0)
return n + iji(n - 1);
else
return n;
}
19
int main(){
int a;
printf("Introdu un iji: ");
scanf("%d", &a);
printf("Sum = %d", iji(a));
return 0;
}
⦁ Scrieți un program C pentru a găsi suma tuturor numerelor pare sau impare în
intervalul dat folosind recursivitatea.
#include <stdio.h>
int nbn(int a, int b){
if(a > b)
return 0;
else
return (a + nbn(a + 2, b));
}
int main(){
int a;
int b;
20
int c;
printf("Introdu nr par minim: ");
scanf("%d", &a);
printf("Introdu nr par maxim: ");
scanf("%d", &b);
printf("Suma nr pare de la %d la %d = %d\n", a, b, nbn(a, b));
return 0;
}
21
int main(){
int a;
int b;
printf("Introdu un nr: ");
scanf("%d", &a);
b = eae(a);
printf("Inversa este %d = %d", a, b);
return 0;
}
22
int k = (int)log10(a);
if(a == 0)
return 0;
else
return ((a%10 * pow(10, k)) + tgt(a/10));
}
int main(){
int a;
printf("Introdu un nr: ");
scanf("%d", &a);
if(aln(a) == 1){
printf("%d este palindrom.\n", a);}
else{
printf("%d nu este palindrom.\n", a);}
return 0;
}
⦁ Scrieți un program C pentru a găsi suma cifrelor unui număr dat folosind
recursivitatea.
#include <stdio.h>
23
int uju(int a){
if(a == 0)
return 0;
return ((a % 10) + uju(a / 10));
}
int main(){
int a;
int b;
printf("Introdu un numarul: ");
scanf("%d", &a);
b = uju(a);
printf("Suma nr %d = %d", a, b);
return 0;
}
24
return 1;
return(b*fact(b-1));
}
int main(){
int a;
int b;
printf("Introdu nr :");
scanf("%d",&b);
a=fact(b);
printf("Factorial de %d este %d",b,a);
return 0;
}
25
return 1;}
return iji(b-1)+iji(b-2);
}
int main(){
int b;
printf("Introdu nr:");
scanf("%d",&b);
printf("Al %d termen din sirul Fibonace este: %d ",b,iji(b));
}
Concluzie
26