Jump to content

Problema Tablou Intrari C (Structura)


Alexandra Andora

Recommended Posts

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!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • 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.