S5 - Recapitulare - Lucrul Cu Fisiere [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Seminar 5 Lucrul cu fișiere text și fișiere binare – probleme economice

Probleme propuse: 1. Fie un fişier organizat secvențial, cu date referitoare la punctele obținute de studenți la disciplina Algoritmi și tehnici de programare. Articolele au următoarea structură: Puncte teme (0-1) Nume şi Gru Puncte proba practică Nr. matricol Puncte examen (0-50) prenume pa (0-30) 1 2 … 10 cha cha cha cha int char[30] int char char r r r r Scrieți programul care înregistrează în fișier punctajul obținut de un student la examen. Studentul este identificat prin numărul matricol. Programul trebuie să ofere posibilitatea repetării, pentru înregistrarea punctajelor mai multor studenți. Includeți în program un subprogram care generează, într-un fișier text, o listă cu toate datele din fișierul binar. Lista trebuie să apară ca tabel, cu coloanele corect aliniate. 2. Fie un fişier organizat secvențial, cu date referitoare la punctele obținute de studenți la disciplina Algoritmi și tehnici de programare. Articolele au următoarea structură: Puncte teme (0-1) Nume şi Gru Puncte proba practică Nr. matricol Puncte examen (0-50) prenume pa (0-30) 1 2 … 10 cha cha cha cha int char[30] int char char r r r r Scrieți programul care înregistrează înmatricularea unui nou student (punctajele vor avea valori nule). Includeți în program un subprogram care generează, într-un fișier text, o listă cu toate datele din fișierul binar. Lista trebuie să apară ca tabel, cu coloanele corect aliniate. 3. Fie un fişier organizat relativ, cu date referitoare la absențele studenților de la cursuri și seminarii/laboratoare pentru fiecare dintre cele 15 discipline specifice fiecărui an de studiu. Cheia relativă este numărul matricol al studentului (domeniul de valori pentru numerele matricole începe de la 0). Articolele au următoarea structură: A Absențe (0-14) Nr. Nume şi Gru n Indicator de stare (0/1) matricol prenume pa (11 2 … 15 5) C S C S C S ch c char int char[25] int ar h char char char char char ar Numărul de activități la fiecare disciplină este 14. Scrieţi un program care înregistrează exmatricularea unui student. Studentul este identificat prin numărul matricol. Includeți în program un subprogram care generează, într-un fișier text, o listă cu toate datele din fișierul binar. Lista trebuie să apară ca tabel, cu coloanele corect aliniate. 4. Fie un fişier organizat relativ, cu date referitoare la absențele studenților de la cursuri și seminarii/laboratoare pentru fiecare dintre cele 15 discipline specifice fiecărui an de studiu. Cheia relativă este numărul matricol al studentului (domeniul de valori pentru numerele matricole începe de la 0). Articolele au următoarea structură: Absențe (0-14) Nr. Nume şi Gru A Indicator de stare (0/1) matricol prenume pa n 1 2 … 15

1

(1char

int

char[25]

int

ch ar

C c h ar

S

C

S

C

S

char

char

char

char

char

Numărul de activități la fiecare disciplină este 14. Scrieţi un program care înregistrează o nouă absență a unui student la o activitate. Studentul este identificat prin numărul matricol, activitatea este identificată prin poziția în vector (1-15) și tip (Curs/Seminar). Includeți în program un subprogram care generează, într-un fișier text, o listă cu toate datele din fișierul binar. Lista trebuie să apară ca tabel, cu coloanele corect aliniate. Exemple de rezolvare: Observatii:  Fisierul binar trebuie sa se regaseasca in directorul proiectului  În Visual Studio versiuni mai noi extensia fișierului sursă trebuie să fie .c (nu .cpp) – (dacă aveți eroare legată de funcția gets)  #define _CRT_SECURE_NO_WARNINGS //în cazul în care apar avertismente legate de securitate 1. Problema 1 //Fisierul binar se numeste Puncte.dat #include typedef struct{int nr; char nume[30]; int grupa; char pp; char teme[10]; char examen; }STUDENT; void lista_studenti(FILE *f) { char nume[30]; STUDENT s; FILE *g; int n,i; printf("\nFisier rezultat (text): ");gets(nume); g=fopen(nume,"w"); fprintf(g,"\nNr. Nr. mat Nume %15s Grupa PP Punctaj teme fread(&s,sizeof(STUDENT),1,f); n=0; while(!feof(f)) { fprintf(g,"\n%3d %8d %-30s %2d %2d ",++n,s.nr, s.nume,s.grupa, s.pp); for(i=0;i