Sunteți pe pagina 1din 2

#include <stdio.

h>
#include <string.h>

typedef struct {
int is;
int nr_mat;
char nume[25];
int an;
int grupa;
struct {
int c;
int s;
}abs[15];
}art; //creem structura obiectului

void afisare()
{
FILE *f, *g;
f = fopen("Absente_relativ.bin", "rb"); //deschidem fisierul pentru citire
g = fopen("List.txt", "w");

if (!f)
printf("Fisierul nu s-a putut deschis");
else
{
art x;
int i;
fprintf(g, "%-7s%-20s%-7s%-7s%-25s\n", "NR", "NUME", "GRUPA", "AN",
"ABSENTE"); //punem titlurile coloanelor tabelelor ; %-7s inseamna pe o lungime
de 7 caractere incepand din stanga

while (!feof(f))
{
fread(&x, sizeof(x), 1, f);
if (x.is == 1) // se sterge la secvential
{
fprintf(g, "%-7d%-20s%-7d%-7d", x.nr_mat, x.nume, x.an,
x.grupa); //ca mai sus, afisarea identata a elementelor; spatiem elementele
for (i = 0; i < 14; i++)
{
fprintf(g, "%-1d %-1d ", x.abs[i].c, x.abs[i].s);
}

fprintf(g, "\n");
}
}

fclose(f);
fclose(g);
}
}

void main()
{
FILE *f;
f = fopen("Absente_relativ.bin", "rb+");
if (!f)
printf("Fisierul nu s-a putut deschis");
else
{
art x;
int cod;
printf("Introdu nr. mat. student cautat:");
scanf("%d", &cod); // codul pe care vrem sa il cautam

while (!feof(stdin)) //cat timp citim de la tastatura


{
int k = 0; //variabila pentru a verifica daca am gasit elem.
sau nu
int sum = 0;
while (!feof(f) && k == 0) //cat timp nu suntem la sf
fisierului si nu am gasit elementul
{
fread(&x, sizeof(x), 1, f); //citim element cu element
if (x.nr_mat == cod) //daca cod = nr matricol student
(daca l-am gasit)
{
int j;
printf("Introdu activitatea (1-15) pentru care doriti
sa aflati procentaj absente pentru studentul %d:", cod);
scanf("%d", &j);

printf("\n\nStudent %d\nProcentaj absente la cursul


%d: %.2f%%\n", cod, j, ((float)x.abs[j - 1].c / 14) * 100); //j-1 pentru ca vrem
disciplina 1-15, dar vectorul este 0-14; x.abs[j-1]/14 pentru ca ne raportam la
nr total de activitati; %% = primul % pentru a putea folosi simbolul % in printf

k = 1; //am gasit elementul


}
}

if (k == 0)
printf("\nStudentul cu nr. matr. cautat nu exista.");

printf("\n\nIntrodu nr. mat. student cautat:");


scanf("%d", &cod); //introducem cod nou

rewind(f); //ne mutam cu f inapoi la inceputul fisierului pentru


eventualele urmatoarele coduri introduse
}

fclose(f);
}

afisare();
}

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