Sunteți pe pagina 1din 3

Să se scrie programul care creează un fişier secvenţial cu date despre studenţii unei facultăţi.

Articolele au următoarea structură: număr matricol, nume, anul, grupa, numărul de note,
notele (maxim 15). Datele se preiau de la tastatură, sfârşitul introducerii fiind marcat
standard. (expl. de creare)

#define _CRT_SECURE_NO_WARNINGS //în cazul în care apar avertismente de securitate


#include<stdio.h>
typedef struct {
int nr;
char nume[30];
int an;
int grupa;
int n;
int note[15];
}Student;

void main()
{
FILE* f;
char s1[20];
Student s;
int i;
printf("\nFisier: "); gets(s1);
f = fopen(s1, "wb");
printf("Nr.matricol: "); scanf("%d", &s.nr);
while (!feof(stdin))
{
printf("Nume: ");
getchar();
gets(s.nume);
printf("An: "); scanf("%d", &s.an);
printf("Grupa: "); scanf("%d", &s.grupa);
printf("Nr.note:(<15)"); scanf("%d", &s.n);
for (i = 0; i < s.n; i++)
{
printf("Nota %d: ", i + 1);
scanf("%d", &s.note[i]);
}
fwrite(&s, sizeof(Student), 1, f);
printf("Nr.matricol: "); scanf("%d", &s.nr);
}
fclose(f);
}

/*Să se scrie programul care afişează datele despre studenţii ale căror numere matricole se introduce de la tastatură.
Sfârşitul introducerii este marcat standard.*/
#define _CRT_SECURE_NO_WARNINGS //în cazul în care apar avertismente de securitate
#include<stdio.h>

typedef struct {
int nr;
char nume[30];
int an;
int grupa;
int n;
int note[15];
}Student;

void main()
{
FILE* fisier;
char numefisier[30];
int nr;
printf("Introduceti numele fisierului: ");
scanf("%s", numefisier);
//deschidem fisierul
fisier = fopen(numefisier, "rb");
//verificam daca s-a putut deschide fisierul pe calculator
if (!fisier)
printf("Eroare!");
else
{
//sa cautam studentul cu numarul matricol de la tastatura
printf("\nNr. matricol: ");
scanf("%d", &nr);

while (!feof(stdin) ) {
//dupa fiecare cautare incepem de la inceputul fisierului
fseek(fisier, 0, 0); //deplaseaza-te cu 0 octeti de la inceput
int gasit = 0;
fread(&s, sizeof(Student), 1, fisier);
//atata timp cat mai sunt articole in fisier
while (!feof(fisier) && gasit == 0)
{
//prelucare
if (nr == s.nr) {
gasit = 1; //pt a iesi din bucla while
printf("%d %s %d %d ", s.nr, s.nume, s.an, s.grupa);
for (int i = 0; i < s.n; i++)
{
printf("%d ", s.note[i]); //pentru afisarea notelor
}
}
fread(&s, sizeof(Student), 1, fisier);
}
if (gasit == 0)
{
printf("Nu s-a gasit!");
}
printf("\nNumar matricol = ");
scanf("%d", &nr);
}
fclose(fisier);
}

}
/*Să se scrie programul care listează, într-un fişier text,
sub formă de tabel, conţinutul fişierului creat la problema 1.*/

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

typedef struct {
int nr;
char nume[30];
int an;
int grupa;
int n;
int note[15];
}Student;

void main()
{
FILE* f, * g;
char fisierBinar[20];
char fisierText[20];
Student s;
int i, n;
printf("\nNumele fisierului binar: ");
gets(fisierBinar);
f = fopen(fisierBinar, "rb");
if (!f)
printf("Eroare");
else
{
printf("\Numele fisierului text: ");
gets(fisierText);
g = fopen(fisierText, "w");
fprintf(g, "\Nr. Nume %25s An Grupa Note ", " ");
fread(&s, sizeof(Student), 1, f);
n = 0;
while (!feof(f))
{
fprintf(g, "\n%3d %-30s %2d %4d ", ++n, s.nume, s.an, s.grupa);
for (i = 0; i < s.n; i++)
fprintf(g, "%3d", s.note[i]);
fread(&s, sizeof(Student), 1, f);
}
fclose(g);
fclose(f);
}
}

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