Documente Academic
Documente Profesional
Documente Cultură
REPUBLICII MOLDOVA
Universitatea Tehnică a Moldovei
Facultatea Calculatoare, Informatică şi Microelectronică
Departamentul Informatică şi Ingineria Sistemelor
Raport
pentru lucrarea de laborator Nr.3
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
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:
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:
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:
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
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:
#include <stdio.h>
#include <math.h>
int main() {
int R1,R2,T1,T2,C1,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