Programmatori di C a me

Collapse
X
 
  • Filter
  • Ora
  • Show
Clear All
new posts
  • XVII
    Bodyweb Advanced
    • Nov 2007
    • 595
    • 48
    • 75
    • Send PM

    #61
    Originariamente Scritto da Sam Fisher Visualizza Messaggio
    Adesso ho scoperto un 'altra cosa fantastica che non mi riconosce iol carattere M nel file acquisito.
    In pratica considera tutte femmine infatti facendo questa prova mi escono che ha contato tutte femmine.
    Codice:
    void maschi(int C, struct studente *D)
    {    
         FILE *fpm,*fpf;
         int i,j,k;
         struct studente maschio[20],femmina[20];
         
         j=k=0;
         
         for(i=0;i<C;i++)
         {
         printf("%s \n",D[i].sesso);
         if(D[i].sesso=='M')
             {
                D[i]=maschio[j];
                j++;
             }
             
             else
             {
                D[i]=femmina[k];
                k++;
             } 
         
         }
         printf("%d %d\n",j,k);
    Allora, se non hai fatto la malloc metti semplicemente gli array maschi e femmine grandi come il vettore sorgente D e ti togli ogni problema Per quanto riguarda il riconoscere i maschi, mi pare che tu abbia dichiarato D[i].sesso come stringa e non come carattere quindi devi usare la funzione di libreria strcmp, scrivendo così if(strcmp(D[i].sesso,M) == 0) blabla avendo cura di fare #include <string.h>
    what?

    Commenta

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

      #62
      Originariamente Scritto da XVII Visualizza Messaggio
      Allora, se non hai fatto la malloc metti semplicemente gli array maschi e femmine grandi come il vettore sorgente D e ti togli ogni problema
      gia fatto

      [/quote]Per quanto riguarda il riconoscere i maschi, mi pare che tu abbia dichiarato D[i].sesso come stringa e non come carattere quindi devi usare la funzione di libreria strcmp, scrivendo così if(strcmp(D[i].sesso,M) == 0) blabla avendo cura di fare #include <string.h> [/quote]

      D[i].sesso è stato dichiarato cm struct cambia qualcosa ?Inoltre nemmeno <string.h> abbiamo fatto.
      Ho capito che avendo fatto malloc e string.h mi sarei semplificato di molto la vita.
      Pillola rossa o pillola blu ????

      La risposta è dentro te.

      Commenta

      • XVII
        Bodyweb Advanced
        • Nov 2007
        • 595
        • 48
        • 75
        • Send PM

        #63
        Originariamente Scritto da Sam Fisher Visualizza Messaggio
        D[i].sesso è stato dichiarato cm struct cambia qualcosa ?Inoltre nemmeno <string.h> abbiamo fatto.
        Ho capito che avendo fatto malloc e string.h mi sarei semplificato di molto la vita.
        Ho visto come hai dichiarato D.sesso ed è a tutti gli effetti una stringa, quindi devi fare la strcmp....fai quell'include e fregatene di quel che ti dice la prof, string.h ti semplifica la vita (la malloc no )

        Edit: se proprio la prof non vuole che usiate string.h ti scrivo la strcmp adesso e la usi tu nel file (tanto è una funzione molto semplice)
        what?

        Commenta

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

          #64
          Originariamente Scritto da XVII Visualizza Messaggio
          Ho visto come hai dichiarato D.sesso ed è a tutti gli effetti una stringa, quindi devi fare la strcmp....fai quell'include e fregatene di quel che ti dice la prof, string.h ti semplifica la vita (la malloc no )

          Edit: se proprio la prof non vuole che usiate string.h ti scrivo la strcmp adesso e la usi tu nel file (tanto è una funzione molto semplice)
          ok proviamo con la funzione strcmp ..passa il listato.
          Pillola rossa o pillola blu ????

          La risposta è dentro te.

          Commenta

          • XVII
            Bodyweb Advanced
            • Nov 2007
            • 595
            • 48
            • 75
            • Send PM

            #65
            ecco, scritto ora al volo, per quello che serve in questa funzione dovrebbe bastare
            Codice:
            int strcmp(char* a, char* b)
            {
            	while(*a != '\0')
            	{
            		if(*a == *b)
            		{
            			a++;
            			b++;
            		}
            		else
            		{
            			return 1;
            		}
            	} 
            	return 0; 
            }
            dopo fai if( strcmp(D[i].sesso, "M") == 0) {} else {} ecc
            what?

            Commenta

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

              #66
              non succederà nulla, ma sarebbe più corretto chiamare strcmp in un altro modo...sebbene non sia parola riservata

              Commenta

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

                #67
                Originariamente Scritto da XVII Visualizza Messaggio
                ecco, scritto ora al volo, per quello che serve in questa funzione dovrebbe bastare
                Codice:
                int strcmp(char* a, char* b)
                {
                    while(*a != '\0')
                    {
                        if(*a == *b)
                        {
                            a++;
                            b++;
                        }
                        else
                        {
                            return 1;
                        }
                    } 
                    return 0; 
                }
                dopo fai if( strcmp(D[i].sesso, "M") == 0) {} else {} ecc
                si mi sa che è la stessa soluzione che mi ha detto il prof però il maledetto non ha detto che è si chiama strcmp .
                Infatti adesso il numero di maschi è riconosciuto bene :
                int acquisisci(FILE *A,struct studente *B,int *C)

                {
                int i=0; *C=0 /* M=0 è la stessa cosa perchè &M=C */;
                while(fscanf(A,"%s%s%d",B[i].cognome,B[i].sesso,&B[i].voto)!=EOF)
                {
                if(B[i].sesso[0]=='M')
                *C=*C+1;
                printf("cognome= %s sesso= %s voto= %d \n\n" ,B[i].cognome,B[i].sesso,B[i].voto);
                i++;

                }
                printf("In numero di maschi presenti vale =%d",*C);
                fclose(A);
                return i;

                }
                Pillola rossa o pillola blu ????

                La risposta è dentro te.

                Commenta

                • XVII
                  Bodyweb Advanced
                  • Nov 2007
                  • 595
                  • 48
                  • 75
                  • Send PM

                  #68
                  Originariamente Scritto da Sam Fisher Visualizza Messaggio
                  si mi sa che è la stessa soluzione che mi ha detto il prof però il maledetto non ha detto che è si chiama strcmp .
                  Infatti adesso il numero di maschi è riconosciuto bene :
                  In questo modo infatti vai a prendere il primo valore e lo confronti a M, però questo modo funziona solo se hai a che fare con una stringa "monocarattere", appena hai 2 o più caratteri ti conviene usare l'altra funzione . Piccola curiosità, cosa studi?
                  what?

                  Commenta

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

                    #69
                    Originariamente Scritto da XVII Visualizza Messaggio
                    In questo modo infatti vai a prendere il primo valore e lo confronti a M, però questo modo funziona solo se hai a che fare con una stringa "monocarattere", appena hai 2 o più caratteri ti conviene usare l'altra funzione . Piccola curiosità, cosa studi?
                    io ingegneria elettrica e questo è l'esame di fondamenti di informatica.
                    Senti ma te fai ingegneria informatica o cosa ?
                    Pillola rossa o pillola blu ????

                    La risposta è dentro te.

                    Commenta

                    • XVII
                      Bodyweb Advanced
                      • Nov 2007
                      • 595
                      • 48
                      • 75
                      • Send PM

                      #70
                      Originariamente Scritto da Sam Fisher Visualizza Messaggio
                      io ingegneria elettrica e questo è l'esame di fondamenti di informatica.
                      Senti ma te fai ingegneria informatica o cosa ?
                      Si faccio ing info
                      what?

                      Commenta

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

                        #71
                        Originariamente Scritto da XVII Visualizza Messaggio
                        Si faccio ing info
                        adesso conoscendo il numero di maschi e di femmine all'interno della funzione inserisci posso creare il file dei maschi in ordine crescente e quello femmine in ordine decrescente ?
                        Pillola rossa o pillola blu ????

                        La risposta è dentro te.

                        Commenta

                        • XVII
                          Bodyweb Advanced
                          • Nov 2007
                          • 595
                          • 48
                          • 75
                          • Send PM

                          #72
                          Originariamente Scritto da Sam Fisher Visualizza Messaggio
                          adesso conoscendo il numero di maschi e di femmine all'interno della funzione inserisci posso creare il file dei maschi in ordine crescente e quello femmine in ordine decrescente ?
                          in che senso? Cioè, ora che conosci il numero dei maschi puoi creare l'array della dimensione esattamente necessaria, poi copi i dati dall'array sorgente agli array maschi e femmine e dopo agisci ordinando tali array prima di scriverli sul file .txt
                          what?

                          Commenta

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

                            #73
                            Originariamente Scritto da XVII Visualizza Messaggio
                            in che senso? Cioè, ora che conosci il numero dei maschi puoi creare l'array della dimensione esattamente necessaria, poi copi i dati dall'array sorgente agli array maschi e femmine e dopo agisci ordinando tali array prima di scriverli sul file .txt
                            io provo a fare poi vediamo il risultato
                            Pillola rossa o pillola blu ????

                            La risposta è dentro te.

                            Commenta

                            • BLOOD black
                              Bodyweb Advanced
                              • Aug 2008
                              • 8344
                              • 497
                              • 299
                              • Nella mia testa
                              • Send PM

                              #74
                              hai sbagliato una cosa fondamentale

                              questo è il codice errato:


                              Codice:
                                   for(i=0;i<C;i++)
                                   {    
                                            
                                       if(!strcmp(D[i].sesso,"M"))
                                       {
                                          D[i]=maschio[j];
                                          j++;
                                       }
                                       
                                       else
                                       {
                                          D[i]=femmina[k];
                                          k++;
                                       } 
                                   }
                              questo è il codice giusto

                              Codice:
                                   for(i=0;i<C;i++)
                                   {    
                                            
                                       if(!strcmp(D[i].sesso,"m"))
                                       {
                                         [B] maschio[j]=D[i];[/B]
                                          j++;
                                       }
                                       
                                       else
                                       {
                                         [B] femmina[k]=D[i];[/B]
                                          k++;
                                       } 
                                   }
                              l'assegnamento...

                              Commenta

                              • alessandrocar88
                                Bodyweb Advanced
                                • Jul 2005
                                • 3095
                                • 273
                                • 177
                                • Send PM

                                #75
                                Originariamente Scritto da Dave Clark's attacks Visualizza Messaggio
                                sti cazzi il 19 ho la prova intercorso di C e sn arrivato solamente ai cicli for
                                io a fine gennaio ho il progetto...
                                sappiamo a chi rivolgerci, vero dave?

                                Commenta

                                Working...
                                X