Jump to content

Recommended Posts

Posted

Buna :) !

 

Am niste nelamuriri privind o problema.

 

Aceasta e problema: Trebuie să scrii într-un fișier binar datele introduse de la tastatură ale unor persoane. Datele sunt de tip structură cu char nume și int nota. Trebuie scrise în fișier astfel încât să mai poată fi adăugate informații ulterior, apoi datele trebuie citite si afisate pe ecran. Verifica dacă există dubluri și realizeaza un tablou cu intrările pentru care nu există dubluri și apoi sorteaza tabloul în ordinea descrescătoare a notei.

 

Tabloul pe care trebuie sa-l construiesc este tot o structura?

 

Aici este rezolvarea mea (merge pana la aflarea dublurilor, unde imi da eroare ca egalez un integer cu un pointer):

 

#include<stdio.h>
typedef struct
{
    char nume[30];
    int nota;
} Elev;
void main()
{   Elev e,a;
    FILE *f;
    int n,k=0,nr,i,j,ok;
    printf("Nr de elevin");
    scanf("%d",&n);
    if((f=fopen("lucru.bin","wb"))==NULL)
       {
            puts("Fisierul nu poate fi deschis n ");
            exit (1 );
           }
       while ( k<n )    
         {   printf("Introduceti nume elevn");
             fflush(stdin);
             gets(e.nume);
             printf("Introduceti nota elevn");
             scanf("%d",&e.nota);
             fwrite(&e,sizeof( Elev ),1,f);
             k++;
             
         }
    fclose(f);
    if((f=fopen("lucru.bin","rb"))==NULL)
       {
            puts("Fisierul nu poate fi deschis n ");
            exit (1 );
           }
   while(fread(&e,sizeof(Elev),1,f)==1)
       printf("Elevul %s are nota %d n",e.nume,e.nota);
   read(&e,sizeof(Elev),1,f);
   nr=0;
   strcpy(a[nr++].nume,e.nume);
   a[nr++].nota=e.nota ;
   for(i=1;i<n;i++)
       { fread(&e,sizeof(Elev),1,f);
         ok=1;
         for(j=0;j<nr;j++)
               if(e.nota==a[j].nota)
                   if(strcmp(e.nume,a[j].nume)==0)
                      {ok=0; break;}
        if(ok==1) a[nr++]=e;
       }
   for(i=0;i<nr;i++)    
           
  printf("Elevul %s are nota %d n",a.nume,a.nota);
}
 

Va multumesc anticipat!

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.