Differences

This shows you the differences between two versions of the page.

Link to this comparison view

programare-ca:laboratoare:lab13 [2012/12/18 08:25]
florin.pop
— (current)
Line 1: Line 1:
-===== Laboratorul 13. Recapitulare ===== 
  
-**Responsabili:​** ​ 
-  * [[florin.pop@cs.pub.ro|Florin Pop]], [[george.popescu@cs.pub.ro|George Popescu]] 
- 
-==== Obiective ==== 
- 
-În urma parcurgerii acestui laborator, studentul va fi capabil: 
-  * să-şi estimeze gradul de acoperire al cunoştinţelor la Programare; 
-  * să-şi facă o privire de ansamblu mai bună asupra noţiunilor învăţate la laborator şi a modului în care acestea sunt legate între ele; 
- 
-==== Exerciţii de Laborator ==== 
- 
- 
-==== Teste recapitulative ==== 
- 
-=== Testul 1 === 
- 
- 
-1. (task1.c) Fie funcţiile definite astfel: ​ 
-<code c> 
-int functie(void);​ 
-int functie(); 
-</​code>​ 
- 
-Sunt cele două definiţii echivalente?​ Scrieţi un program C care să justifice răspunsul dat.  
- 
-2. (task2.c) Scrieţi un program care să afişeze propriul cod sursă. 
- 
-3. (task3.c) Rezolvaţi următoarele cerinţe: 
- 
-  * 3.1 Definiţi structura <​tt>​Numar_Complex</​tt>,​ cu câmpurile parte reală, parte imaginară. 
- 
-  * 3.2. Definiţi funcţia <​tt>​Numar_Complex* citire (char *filename,​int *n)</​tt>,​ care să citească din fişierul dat ca parametru numărul natural n, după care să aloce un vector de n numere complexe, care se vor citi apoi de pe următoarele n linii ale fişierului. 
- 
-Formatul fisierului: 
- 
- n 
- x1 y1 
- x2 y2 
- ... 
- xn yn 
- 
-  * 3.3 Scrieţi un program care citeşte un vector de n numere complexe folosind funcţia de la punctul precedent, şi apoi afişează numărul de modul maxim şi poziţia acestuia în vector. 
- 
-4. (task4.c) Scrieţi un program care poate primi (ca argumente în linia de comandă) opţiunile “-a” şi “-p”. Programul primeşte ca prim parametru în linia de comandă un număr întreg n.  
- 
-*Opţiunea “-a” va avea ca efect afişarea adresei variabilei din program în care se reţine numărul. ​ 
-*Opţiunea “-p” va avea ca efect afişarea pătratului numarului. Pentru a calcula pătratul numărului se va folosi o macroinscructiune. ​ 
-*Se permite rularea executabilului cu ambele opţiuni, caz în care se va afişa atât adresa variabilei cât şi pătratul valorii. La rularea executabilului fără opţiuni, nu se va afiţa nimic. ​ 
-*Se va afişa un mesaj de eroare în oricare dintre cazurile: lipsa parametrului n, parametrii nu sunt cei specificaţi mai sus, număr prea mare de parametri. ​ 
- 
-5. (task5.c) Scrieţi un program care interschimbă două variabile x şi y, fără a folosi o variabilă auxiliară. 
- 
-6. Modificaţi următorul fişier makefile, astfel încât executabilul de la problema 4 să se numească task6. 
-<code c> 
- #​makefile 
-  
- ​CC=gcc ​ 
- ​CFLAGS=-Wall 
-  
- all: task1 task2 task3 task4 task5  
-  
- ​task1:​ task1.c ​ 
- ​task2:​ task2.c ​ 
- ​task3:​ task3.c 
- ​task4:​ task4.c ​ 
- ​task5:​ task5.c ​ 
-</​code>​ 
- 
-=== Testul 2 === 
- 
-1. (task1.c) De ce urmatorul program nu afişează rezultatul corect/​aşteptat?​ 
- 
-<code c> 
-#include <​stdio.h>​ 
- 
-int main() 
-{ 
-  float f=0.0f; 
-  int i; 
-  for(i=0;​i<​10;​i++) 
-    f = f + 0.1f; 
-  ​ 
-  if(f == 1.0f) 
-    printf("​f is 1.0 \n"); 
-  else 
-    printf("​f is NOT 1.0\n"​);​ 
- 
-  return 0; 
-} 
-</​code>​ 
- 
-2. (task2.c) Scrieţi un program care să afişeze câţi biţi dintr-un număr reprezentat pe 4 octeţi sunt 1.  
- 
-3. (task3.c) Rezolvaţi următoarele cerinţe: 
- 
-  * 3.1 Definiţi structura Numar_Real, cu câmpurile parte întreagă, parte fracţionară. 
- 
-  * 3.2 Definiţi funcţia <tt> Numar_Real* citire(char *filename,​int *n)</​tt>,​ care să citească din fişierul dat ca parametru dimensiunea vectorului v, să îl aloce dinamic, apoi să citeasca n numere reale, şi să le reţină într-un vector, sub formă de structuri definite ca la punctul precedent. 
- 
-Formatul fişierului:​ 
- 
- n 
- nr_1 
- nr_2 
- ... 
- nr_n 
- 
-  * 3.3 Scrieţi un program care să testeze funcţia de citire de la punctul precedent, afişând numerele din vector în ordinea crescătoare a părţii fracţionare. Afişarea se va face în forma: 
-i1 f1 
-i2 f2 
-... 
-in fn, 
-unde i reprezintă partea întreagă, iar f partea fracţionară. 
- 
-4. (task4.c) Scrieţi un program care primeşte (ca argumente în linia de comandă) două numere ''​a''​ şi ''​b'',​ şi poate primi una dintre opţiunile: “-m” sau “-f”. ​ 
-* Veţi defini un macro care calculează minimul dintre a şi b, precum şi o funcţie cu acelaşi scop: <​tt>​int minim(int a, int b)</​tt>​. ​ 
-* Dacă este apelat cu optiunea “-m”, programul va afisa minimul dintre a si b,  folosind macrodefinitia. ​ 
-* Dacă este apelat cu optiunea “-f”, programul va afişa adresa funcţiei <​tt>​minim</​tt>​. Dacă este apelat cu ambele optiuni, vor fi afişate ambele informaţii. 
-* Programul va afişa un mesaj de eroare în oricare dintre următoarele cazuri: nu sunt daţi parametrii a şi b (sau unul dintre ei), parametrii nu sunt cei specificaţi mai sus, număr prea mare de parametri. ​ 
- 
-5. (task5.c) Scrieţi un program care afişează caracterul ';'​ (cod ASCII: 59), fără a folosi '''​deloc'''​ ';'​ în sursa C. (task5.c) ​ 
- 
-6. Modificaţi următorul fişier makefile, adăugând o regulă <​tt>​clean</​tt>,​ care să şteargă fişierele executabile,​ precum şi fisierele temporare, ale căror nume se termină cu '​~'​. 
-<code c> 
- #​makefile 
-  
- ​CC=gcc ​ 
- ​CFLAGS=-Wall ​ 
-  
- all: task1 task2 task3 task4 task5  
-  
- ​task1:​ task1.c ​ 
- ​task2:​ task2.c ​ 
- ​task3:​ task3.c ​ 
- ​task4:​ task4.c ​ 
- ​task5:​ task5.c ​ 
-</​code>​ 
programare-ca/laboratoare/lab13.1355811906.txt.gz · Last modified: 2012/12/18 08:25 by florin.pop
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0