Sunteți pe pagina 1din 9

MINISTERUL EDUCAȚIEI ȘI CERCETĂRII AL

REPUBLICII MOLDOVA
Universitatea Tehnică a Moldovei
Facultatea Calculatoare, Informatică şi Microelectronică
Departamentul Informatică şi Ingineria Sistemelor

Nume, prenume student Grupa-ID :


Guțenco Vladislav IA-21

Raport
pentru lucrarea de laborator Nr.3

la cursul de “Programarea calculatoarelor”

Verificat:
Burlacu Natalia, doctor, conf. univ.
Departamentul Informatică şi IS,
Facultatea FCIM, UTM

Chișinău – 2021

1
1. Scopul lucrării de laborator
Lucrul cu funcțiile
Rezolvarea problemelor cu ramificări
Lucrul cu switch / if / if ternar
2. Condiția / condițiile prolemelor
Nivel intermediar

Nivel de bază

Sarcină:
A scrie un program C pentru rezolvarea problemei date și a desena
schema-bloc corespunzătoare problemei rezolvate.
− După soluționarea problemei prin utilizarea tipologiei instrucțiunilor IF arescrie codul*,
utilizând instrucțiunea SWITCH.

*După caz a reformula problema astfel încât a face posibilă soluționareaacesteia, utilizând
instrucțiunea SWITCH.

3. Codul programului

Nivel intermediar: Lucru cu Funcțiile


/*sa se scrie un program C pentru expresia aritmetica data,

Diagrama/Flow Chart:

2
Raspuns:
#include <stdio.h>
#include <math.h>
int main() {
float a,x,b,c,y,q,v;
/* float denota virgula mobila, adica numerele care pot avea
parte intreaga*/
a= 3.5;
b= -0.73;
c= 2.5;
printf("x="); /* converteste, formateaza si tipareste
argumentele sale la iesire*/
scanf("%f", &x); /*citeste caracterele de la intrare*/
v=cos(pow(b,2));

3
/*folosim variabilele externe pentru a optimiza dupa
posibilitate expresia matematica*/
q=(a*x)-pow(v,3)*x+(5.1*pow(c,2));
/*Folosim functia if(x3) pentru a rezolva ecuatia*/
if(fabs(1-pow(x,2))==a+c){
y= sqrt(fabs(q));
}
if(fabs(1-pow(x,2)) > a+c){
y=exp(0.04*x)+log(fabs(pow(b,3)*cos(x)));
}
if(fabs(1-pow(x,2)) < a+c){
y=pow(cos(pow(b,3)*pow(x,2)),2)+log((fabs(b*x-pow(a,2))));
}
printf("Y= %f\n",y);
return 0;
/*return 0 este considerat ca "o stare de succes" a
functionarii programului*/
}

Rezultat:

Raspuns: ( problema rezolvată prin if ternar)


#include <stdio.h>
#include <math.h>
int main() {
float a,x,b,c,y,q,v;
a= 3.5;

4
b= -0.73;
c= 2.5;
printf("x="); /* converteste, formateaza si tipareste
argumentele sale la iesire*/
scanf("%f", &x); /*citeste caracterele de la intrare*/
v=cos(pow(b,2));
/*folosim variabilele externe pentru a optimiza dupa
posibilitate expresia matematica*/
q=(a*x)-pow(v,3)*x+(5.1*pow(c,2));
/*folosim if ternar*/
(fabs(1-pow(x,2))==a+c) ? (y=sqrt(fabs(q))) : (fabs(1-
pow(x,2)) > a+c) ? (y=exp(0.04*x)
+log(fabs(pow(b,3)*cos(x)))) : (fabs(1-pow(x,2)) < a+c) ?
(y=pow(cos(pow(b,3)*pow(x,2)),2)+log((fabs(b*x-pow(a,2))))) :
(y=0);
printf("Y= %.2f\n",y);
/* %.2f pentru a afisa rezultatul cu 2 numere dupa virgula*/
return 0; }
/*return 0 este considerat ca "o stare de succes" a
functionarii programului*/
Rezultat:

(problema precedentă nu poate fi rezolvata prin switch)

5
Condiția problemei nr.2:
De la tastieră sunt introduse rezistența și tensiunea a două
secțiuni de circuit electric care nu sunt conectate între ele.
Prin ce secțiune circulă curentul mai mic?
Răspunsul va fi afișat la ecran într-un mesaj corespunzător.
Diagrama/Flow Chart:

Raspuns: ( problema rezolvată prin if)


#include <stdio.h>
#include <math.h>
int main() {
float R1,R2,T1,T2,C1,C2;
//R=rezistența
//T=tensiunea
//C=circuit electric
printf("T1= "); /* converteste, formateaza si tipareste
argumentele sale la iesire*/
scanf("%f", &T1); /*citeste caracterele de la intrare*/

6
printf("R1= "); scanf("%f", &R1);
printf("T2= "); scanf("%f", &T2);
printf("R2=: "); scanf("%f", &R2);
C1=T1/R1;
C2=T2/R2;
printf("\nCurentul circuit 1: %.2f\n", C1);
printf("Curentul circuit 2: %.2f\n", C2); /*Calcularea
curentului in fiecare circuit după formulă*/
if (C1<C2)
printf("Curentul mai mic circula in C1: %.2f\n",C1);
else
printf("Curentul mai mic circula in C2: %.2f\n", C2);
/*Afișarea rezultatelor*/
}
Rezultat

( problema rezolvată prin ‘if ternar’)


#include <stdio.h>
#include <math.h>
int main() {
float R1,R2,T1,T2,C1,C2;
printf("T1= "); scanf("%f", &T1);
printf("R1= "); scanf("%f", &R1);
printf("T2= "); scanf("%f", &T2);
printf("R2=: "); scanf("%f", &R2);
C1=T1/R1;
C2=T2/R2;

7
printf("\nCurentul circuit 1: %.2f\n", C1);
printf("Curentul circuit 2: %.2f\n", C2);
(C1<C2)?printf("Curentul mai mic: %.2f\n",C1) :
printf("Curentul mai mic: %.2f\n",C2);
}
Rezultat:

( problema rezolvată prin ‘switch’)

#include <stdio.h>
#include <math.h>
int main() {
int R1,R2,T1,T2,C1,C2;

printf("T1= "); scanf("%i", &T1);


printf("R1= "); scanf("%i", &R1);

printf("T2= "); scanf("%i", &T2);


printf("R2= "); scanf("%i", &R2);
C1=T1/R1;
C2=T2/R2;
printf("\nCurentul circuit 1: %i\n", C1);
printf("Curentul circuit 2: %i\n", C2);

switch (C1<C2){
case 1:
printf("Curentul mai mic circula in C1: %i\n",C1);

8
break;
default:
printf("Curentul mai mic circula in C2: %i\n", C2);
break;
}}
Rezultat:

5.Concluzie

În cadrul acestei lucrari de laborator am studiat sintaxa sistemului in limbaj C


(CodeBlocks). Am însușit comenzile de bază ale programului și am căpătat
deprinderi de scriere a expresiilor in Limbajul C (prog. CodeBlocks). Am
învățat sa ne folosim de variabilele intermediare pentru a simplifica (după
posibilități) expresia matematică. Am analizat și am înțeles ordinea de calcul a
expresiei.Am folosit mai multe exemple de raspuns pentru a demonsta ca între-
adevăr programul rulează corect. Am obținut erori si le-am corectat.

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