Annuncio

Collapse
No announcement yet.

Programmatori di C a me

Collapse
X
 
  • Filter
  • Ora
  • Show
Clear All
new posts

    Programmatori di C a me

    ragazzi ho un problema non riesco ad ordinare gli elementi del dato strutturato.Io vorrei che acquisito un file i suoi elementi vengano ordinati in base al voto crescente e non ci riesco
    Vedete se trovate errori nel listato.

    p.s. non fate caso ad eventuali commenti

    #include<stdio.h>
    #include<conio.h>

    struct studente { char cognome[20];char sesso[2];int voto;};
    /*il penultimo ; puoi anche toglierlo ma ti da un warning*/
    int acquisisci(FILE*,struct studente*);
    void ordina (int,struct studente*);

    main()
    {
    FILE *fpi;

    int N,i;
    struct studente classe [20];
    fpi=fopen("studenti.txt","r");
    if(fpi==NULL)
    printf("Il file non esiste");
    else
    {
    N=acquisisci(fpi,classe);
    void ordina(N,classe);
    }
    getch();
    }

    int acquisisci(FILE *A,struct studente *B)

    {
    int i=0;
    while(fscanf(A,"%s%s%d",B[i].cognome,B[i].sesso,&B[i].voto)!=EOF)
    {
    printf("cognome= %s sesso= %s voto= %d \n\n" ,B[i].cognome,B[i].sesso,B[i].voto);
    i++;
    }
    fclose(A);
    return i;

    }

    void ordina (int A,struct studente *B)
    {
    int i,j,imin,temp;
    /* struct studente temp; */
    for (i=0;i<A-1;i++)
    {
    imin=i;
    for(j=i+1;j<A;j++)
    {
    if(B[j].voto<B[imin].voto)
    imin=j;
    }
    temp=B[i].voto;
    B[i].voto=B[imin].voto;
    B[imin].voto=temp;
    for(i=0;i<A;i++)
    printf("%d",B[i].voto);
    }
    }
    Pillola rossa o pillola blu ????

    La risposta è dentro te.

    #2
    sti cazzi il 19 ho la prova intercorso di C e sn arrivato solamente ai cicli for

    Commenta


      #3
      a me hanno imparato che alla fine di ogni programma mettiamo

      system pause;
      return 0;
      }

      Commenta


        #4
        Originariamente Scritto da Dave Clark's attacks Visualizza Messaggio
        a me hanno imparato che alla fine di ogni programma mettiamo

        system pause;
        return 0;
        }
        non centra una mazza.
        Il problema sta nella funzione ordina che non va perchè l'acqusizione da file va bene.
        Pillola rossa o pillola blu ????

        La risposta è dentro te.

        Commenta


          #5
          pardon sam

          Commenta


            #6
            certo che anche tu vieni a chiedere ste cose alle una di notte...adesso controllo cmq

            Commenta


              #7
              Originariamente Scritto da laplace Visualizza Messaggio
              certo che anche tu vieni a chiedere ste cose alle una di notte...adesso controllo cmq
              tvb laplace
              Pillola rossa o pillola blu ????

              La risposta è dentro te.

              Commenta


                #8
                Originariamente Scritto da Sam Fisher Visualizza Messaggio
                ragazzi ho un problema non riesco ad ordinare gli elementi del dato strutturato.Io vorrei che acquisito un file i suoi elementi vengano ordinati in base al voto crescente e non ci riesco
                Vedete se trovate errori nel listato.

                p.s. non fate caso ad eventuali commenti

                #include<stdio.h>
                #include<conio.h>

                struct studente { char cognome[20];char sesso[2];int voto;};
                /*il penultimo ; puoi anche toglierlo ma ti da un warning*/
                int acquisisci(FILE*,struct studente*);
                void ordina (int,struct studente*);

                main()
                {
                FILE *fpi;

                int N,i;
                struct studente classe [20];
                fpi=fopen("studenti.txt","r");
                if(fpi==NULL)
                printf("Il file non esiste");
                else
                {
                N=acquisisci(fpi,classe);
                void ordina(N,classe);
                }
                getch();
                }

                int acquisisci(FILE *A,struct studente *B)

                {
                int i=0;
                while(fscanf(A,"%s%s%d",B[i].cognome,B[i].sesso,&B[i].voto)!=EOF)
                {
                printf("cognome= %s sesso= %s voto= %d \n\n" ,B[i].cognome,B[i].sesso,B[i].voto);
                i++;
                }
                fclose(A);
                return i;

                }

                void ordina (int A,struct studente *B)
                {
                int i,j,imin,temp;
                /* struct studente temp; */
                for (i=0;i<A-1;i++)
                {
                imin=i;
                for(j=i+1;j<A;j++)
                {
                if(B[j].voto<B[imin].voto)
                imin=j;
                }
                temp=B[i].voto;
                B[i].voto=B[imin].voto;
                B[imin].voto=temp;
                for(i=0;i<A;i++)
                printf("%d",B[i].voto);
                }
                }
                innanzitutto togli sto void da li...

                Commenta


                  #9
                  se il file non esiste la funzione deve terminare....cosi come hai fatto tu viene eseguita getch....

                  Commenta


                    #10
                    Originariamente Scritto da laplace Visualizza Messaggio
                    se il file non esiste la funzione deve terminare....cosi come hai fatto tu viene eseguita getch....
                    getch a me serve solo per bloccare a video il programma eseguito altrimenti sparirebbe.
                    Pillola rossa o pillola blu ????

                    La risposta è dentro te.

                    Commenta


                      #11
                      Originariamente Scritto da Sam Fisher Visualizza Messaggio
                      getch a me serve solo per bloccare a video il programma eseguito altrimenti sparirebbe.
                      se il file non esiste non ha senso andare avanti...è un errore concettuale che devi sistemare...
                      capisco quello che dici ma ad un esame scritto cosi ti storgono il naso...

                      Commenta


                        #12
                        Originariamente Scritto da laplace Visualizza Messaggio
                        se il file non esiste non ha senso andare avanti...è un errore concettuale che devi sistemare...
                        capisco quello che dici ma ad un esame scritto cosi ti storgono il naso...
                        ok corretto .
                        Ho appena rimosso il void cm mi avevi detto (che errore di distrazione che ho fatto) e la funzione ordina viene eseguita ma in maniera non corretta nel senso che vedo i voti inseriti ma non sono in ordine.
                        Last edited by Sam Fisher; 30-12-2008, 01:19:16.
                        Pillola rossa o pillola blu ????

                        La risposta è dentro te.

                        Commenta


                          #13
                          Originariamente Scritto da Sam Fisher Visualizza Messaggio
                          ok corretto .
                          Ho appena rimosso il void cm mi avevi detto (che errrore di distrazione che ho fatto) e la funzione ordina viene eseguita ma in maniera non corretta nel senso che vedo i voti inseriti ma non sono in ordine.
                          si ma io non ho capito.
                          tu devi solo stampare a video i voti ordinati??

                          Commenta


                            #14
                            Originariamente Scritto da laplace Visualizza Messaggio
                            si ma io non ho capito.
                            tu devi solo stampare a video i voti ordinati??
                            li devo ordinare per voto e stamparli a video però deve comparire anche il nome ed il sesso della persona .
                            Pillola rossa o pillola blu ????

                            La risposta è dentro te.

                            Commenta


                              #15
                              Originariamente Scritto da Sam Fisher Visualizza Messaggio
                              li devo ordinare per voto e stamparli a video però deve comparire anche il nome ed il sesso della persona .
                              quindi il problema consiste nell'ordinare non un array di numeri (problema classico) ma bensi un array di strutture contenenti un campo numerico...

                              Commenta

                              Working...
                              X
                              😀
                              🥰
                              🤢
                              😎
                              😡
                              👍
                              👎