Nume/Prenume………………………………………………… · Web viewX2 -> o variabila...

4
Nume/Prenume…………………………………………………. Grupa…………………. 1. Scrieţi o schemă logică pentru calculul radicalului unui număr folosind algoritmul lui Newton: rx nou = 0.5 ( x / rx + rx) Raspuns://30 puncte 2. Ce obiecte se declară în secvenţa float *rp, x2, f1(int a, int *ip);? Raspuns: *rp -> pointer la float; //5 puncte X2 -> o variabila de tip float // 5 puncte f1 -> o functie cu doi parametri, functia returnand o valoare de tip float; //5 puncte Functia avand primul parametru de tip intreg iar al doilea parametru este un pointer la int//5 puncte 3. Declaraţi o constanta lui Boltzmann ca şi o constantă simbolică. Raspuns: #define Boltzmann 1.3806488e-23 //10 puncte 4. Ce se va afişa pe ecran în urma apelului printf("\n%g\t%g\t%d",a,b,(a>b)*10); ştiind că a=5 şi b=9? Raspuns : 5 9 0 //20 puncte Daca se va raspunde partial, adica numai 5 sau 9 // 5 puncte ; daca se va raspunde 5 si 9 // 10 puncte 5. Determinaţi relaţia prin care se calculează indicele elementelor unui şir în care sunt păstrate elementele unei matrici dreptunghiulare cu n linii şi m coloane. Elementele şirului vor fi stocate ca şi secvenţa: a 00 , a 01 , …, a 10,... a 20…, a n-1m-1. Raspuns: k(ij)=m*i+j //25 de puncte 6. Care bibliotecă trebuie inclusă dacă se doreşte folosirea funcţiei strcpy într-un program C? Raspuns: “string.h” //5 puncte 7. Fie declaraţiile: float x=-12.257; int i=21, v=8; char antet[20]="Test Anul 1 Fizica"; Ce se va tipări în urma apelurilor: printf("\n1. %-5.2f\t%d",x,i/2); printf("\n2. %.13s\b",antet); printf("\n3. %13s",antet); printf("\n4. %d",v>>1); Raspuns: 1. -12.26 10 // 5 puncte 2. Test Anul 1 F // 5 puncte 3. Test Anul 1 Fizica // 5 puncte 4. 4 // 5 puncte

Transcript of Nume/Prenume………………………………………………… · Web viewX2 -> o variabila...

Page 1: Nume/Prenume………………………………………………… · Web viewX2 -> o variabila de tip float // 5 puncte f1 -> o functie cu doi parametri, functia returnand o valoare

Nume/Prenume………………………………………………….Grupa………………….

1. Scrieţi o schemă logică pentru calculul radicalului unui număr folosind algoritmul lui Newton: rxnou= 0.5 ( x / rx + rx)

Raspuns://30 puncte

2. Ce obiecte se declară în secvenţa float *rp, x2, f1(int a, int *ip);?Raspuns: *rp -> pointer la float; //5 puncte

X2 -> o variabila de tip float // 5 puncte f1 -> o functie cu doi parametri, functia returnand o valoare de tip

float; //5 puncteFunctia avand primul parametru de tip intreg iar al doilea parametru este un

pointer la int//5 puncte3. Declaraţi o constanta lui Boltzmann ca şi o constantă simbolică.Raspuns: #define Boltzmann 1.3806488e-23 //10 puncte4. Ce se va afişa pe ecran în urma apelului printf("\n%g\t%g\t%d",a,b,(a>b)*10); ştiind că a=5 şi b=9?Raspuns : 5 9 0 //20 puncte

Daca se va raspunde partial, adica numai 5 sau 9 // 5 puncte ; daca se va raspunde 5 si 9 // 10 puncte5. Determinaţi relaţia prin care se calculează indicele elementelor unui şir în care sunt păstrate elementele

unei matrici dreptunghiulare cu n linii şi m coloane. Elementele şirului vor fi stocate ca şi secvenţa: a00, a01, …, a10,... a20…,an-1m-1.

Raspuns: k(ij)=m*i+j //25 de puncte6. Care bibliotecă trebuie inclusă dacă se doreşte folosirea funcţiei strcpy într-un program C?Raspuns: “string.h” //5 puncte7. Fie declaraţiile:

float x=-12.257; int i=21, v=8; char antet[20]="Test Anul 1 Fizica";Ce se va tipări în urma apelurilor:printf("\n1. %-5.2f\t%d",x,i/2); printf("\n2. %.13s\b",antet);printf("\n3. %13s",antet); printf("\n4. %d",v>>1);

Raspuns: 1. -12.26 10 // 5 puncte2. Test Anul 1 F // 5 puncte3. Test Anul 1 Fizica // 5 puncte4. 4 // 5 puncte

8. Scrieţi o funcţie care să deseneze un pătrat pe ecran, având ca şi parametri coordonatele centrului pătratului şi latura acestuia. Desenarea unui punct pe ecran se face cu funcţia putpixel care are 3 parametri şi anume cele două coordonate x şi y ale punctului şi culoarea punctului (de ex. GREEN).

Raspuns: int patrat(float xg,float yg, float l){

rectangle(int(xg-l/2.),int(yg-l/2.),int(xg+l/2.),int(yg+l/2.));return 0;

} //30 puncteSau varianta cu „putpixel”int patrat(float xg,float yg, float l)

{xg-=(l+1)/2.;yg-=(l+1)/2.;for(i=0;i<=l-1;i++)

Page 2: Nume/Prenume………………………………………………… · Web viewX2 -> o variabila de tip float // 5 puncte f1 -> o functie cu doi parametri, functia returnand o valoare

{ putpixel(xg+i,yg,GREEN); putpixel(xg+l,yg+i, GREEN); putpixel(xg+l-i,yg+l, GREEN); putpixel(xg,yg+l-i, GREEN);}

return 0;} //30 puncte

9. Transformaţi numărul 0.645 în baza 2, reţinând primele 4 cifre binare apoi faceţi transformarea inversă. Care este diferenţa dintre numărul iniţial şi cel obţinut prin transformarea inversă?

Raspuns: 0.645(10) ->0.101001...(2) //5 puncte 0.1010(2) ->0.625(10) //5 puncte

Diferenta= 0.02(10) //5 puncte10. Pentru ce se foloseşte funcţia fread, câţi parametri are şi ce reprezintă fiecare dintre aceşti parametri?Raspuns: “fread” citeşte date dintr-un fişier binar şi le pune într-un bloc de

memorie. // 5 puncteAre 4 parametri iar forma de apelare este: fread( ptr, size, n, f) // 5 puncte

unde:- ptr este un pointer la blocul de memorie în care se vor prelua datele citite din fişierul binar - size reprezintă lungimea în octeţi a blocului citit- n reprezintă numărul de itemi citiţi- f reprezintă un pointer la fişierul din care se face citirea //5 puncte

OBS: A se vedea cursul 8 pagina 4.11. Fie secvenţa de program de mai jos. În ce situaţii va fi tipărit mesajul de eroare?

f1=fopen("c:\\windows\\system.ini","r"); if(!f1) printf("Eroare la deschiderea fisierului!");

Raspuns: In situatiile când fişierul nu există sau dacă fişierul este protejat întrun anume fel şi este interzis accesul la respectivul fişier.//10 puncteOBS: A se vedea cursul 8 pagina 312. Care este avantajul folosirii fişierelor binare într-un program C? Raspuns: -un timp de acces mai mic la informatia din fisierul binar comparativ cu cel txt.

-o stocare mult mai compacta a informatiilor numerice pe disk -posiblitatea de a accesa aleatoriu un fisier si implicit de al modifica.

OBS: Curs 8 pag 1-2 // 10 puncte13. Apelarea unui program cu parametri în linia de comandă se face prin următoarea secvenţă:

"calcul.exe date.in date.out". Precizaţi valoarea lui argv[0] şi argv[argc].Raspuns: calcul.exe // 5 puncte NULL //5 puncte14. Fie: a=10; b=6; Ce se va tipări în urma apelului: printf("%d",(a^b)+(a|b));?Raspuns : 26

// 10: 00001010 5 puncte//6: 00000110 5 puncte//10^6: 00001100 ->12 5puncte//10|6: 00001110 ->14 5puncte

15. Definiţi o structură care să conţină informaţiile pentru un punct material: masa şi coordonatele X,Y,Z.Raspuns: typedef struct { // sau struct punct_material{

double mass;double x;double y;double z ;

} punct_material; 20 puncte16. Scrieţi o secvenţă de program pentru alocarea unui bloc de memorie care sa stocheze 20 valori de tip

double, să iniţializeze toate valorile cu zero şi apoi să elibereze blocul respectiv.Raspuns: float *A; A=(double *)malloc(n*sizeof(double));//10 puncte for(i=0; i<20 ; i++) { A[i]=0.0; A++; }//5 puncte free(A); //5 puncte

Page 3: Nume/Prenume………………………………………………… · Web viewX2 -> o variabila de tip float // 5 puncte f1 -> o functie cu doi parametri, functia returnand o valoare

Sau varianta:double *A, *A0; A=(double *)malloc(n*sizeof(double)); //10 puncte A0=A; for(i=0; i<n ; i++) { *A=0.0; A++; }//5 punctefree(A0); //5 puncte17. Pentru ce se foloseşte funcţia ftell, ce returnează, câţi parametri are şi ce reprezintă fiecare dintre aceşti

parametri?Raspuns: Funcţia ftell determină poziţia curentă a capului de citire/scriere şi are prototipul:long ftell(FILE *pf)// 10 puncteFuncţia returnează o valoare care reprezintă deplasamentul în octeţi al poziţiei capului de citire/scriere faţă de începutul fişierului. //5 puncteAre 1 singur parametru pointer de tipul FILE // 5 puncteOBS: A se vedea pag 5 cursul 8 18. Deduceţi relaţia de calcul a integralei unei funcţii folosind metoda lui Simpson.Raspuns: A se vedea cursul 12 pag 4-5 //25 puncte19. Scrieţi secvenţa de instrucţiuni necesară pentru determinarea valorii zero a maşinii de calcul şi a valorii ε

necesară calculului derivatelor funcţiilor, pentru metoda diferenţelor centrale.Raspuns: //Calculul preciziei masinii si a valorii eps prin metoda diferentelor centrale

do p=p/2.0; while(p+1.0!=1.0); //5 puncte eps=pow(p,1/3.0); // 10 puncteprintf("p= %.20lf\teps= %.20lf",p,eps);

20. Ce se urmăreşte prin pivotare în cazul metodei Gauss şi în ce constă acest proces?Raspuns: A se vedea cursul 12 pagina 2-5 // 10 puncte

PunctajOficiu 30 10 15 20 10

1 30 11 10

2 20 12 10

3 10 13 10

4 20 14 20

5 25 15 20

6 5 16 20

7 20 17 20

8 30 18 25

9 15 19 15 Total 380