Programmatori di C a me

Collapse
X
 
  • Filter
  • Ora
  • Show
Clear All
new posts
  • Sam Fisher
    Bodyweb Advanced
    • Jan 2006
    • 4257
    • 576
    • 583
    • Ministero della Pubblica Istruzione
    • Send PM

    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.
  • Dave Clark's attacks
    PHEEGA LOVER
    • Mar 2007
    • 14815
    • 1,220
    • 1,814
    • Say hello to my little Friend
    • Send PM

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

    Commenta

    • Dave Clark's attacks
      PHEEGA LOVER
      • Mar 2007
      • 14815
      • 1,220
      • 1,814
      • Say hello to my little Friend
      • Send PM

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

      system pause;
      return 0;
      }

      Commenta

      • Sam Fisher
        Bodyweb Advanced
        • Jan 2006
        • 4257
        • 576
        • 583
        • Ministero della Pubblica Istruzione
        • Send PM

        #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

        • Dave Clark's attacks
          PHEEGA LOVER
          • Mar 2007
          • 14815
          • 1,220
          • 1,814
          • Say hello to my little Friend
          • Send PM

          #5
          pardon sam

          Commenta

          • laplace
            Bodyweb Advanced
            • Dec 2005
            • 7982
            • 960
            • 1,370
            • Send PM

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

            Commenta

            • Sam Fisher
              Bodyweb Advanced
              • Jan 2006
              • 4257
              • 576
              • 583
              • Ministero della Pubblica Istruzione
              • Send PM

              #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

              • laplace
                Bodyweb Advanced
                • Dec 2005
                • 7982
                • 960
                • 1,370
                • Send PM

                #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

                • laplace
                  Bodyweb Advanced
                  • Dec 2005
                  • 7982
                  • 960
                  • 1,370
                  • Send PM

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

                  Commenta

                  • Sam Fisher
                    Bodyweb Advanced
                    • Jan 2006
                    • 4257
                    • 576
                    • 583
                    • Ministero della Pubblica Istruzione
                    • Send PM

                    #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

                    • laplace
                      Bodyweb Advanced
                      • Dec 2005
                      • 7982
                      • 960
                      • 1,370
                      • Send PM

                      #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

                      • Sam Fisher
                        Bodyweb Advanced
                        • Jan 2006
                        • 4257
                        • 576
                        • 583
                        • Ministero della Pubblica Istruzione
                        • Send PM

                        #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

                        • laplace
                          Bodyweb Advanced
                          • Dec 2005
                          • 7982
                          • 960
                          • 1,370
                          • Send PM

                          #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

                          • Sam Fisher
                            Bodyweb Advanced
                            • Jan 2006
                            • 4257
                            • 576
                            • 583
                            • Ministero della Pubblica Istruzione
                            • Send PM

                            #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

                            • laplace
                              Bodyweb Advanced
                              • Dec 2005
                              • 7982
                              • 960
                              • 1,370
                              • Send PM

                              #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