Programmatori di C a me

Collapse
X
 
  • Filter
  • Ora
  • Show
Clear All
new posts
  • laplace
    Bodyweb Advanced
    • Dec 2005
    • 7984
    • 962
    • 1,370
    • Send PM

    concordo con blood, è piu logico e corretto che il programma termini del tutto...

    Commenta

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

      Originariamente Scritto da BLOOD black Visualizza Messaggio
      ascolta laplace,chiudi due volte il file

      cmq io farei cosi':

      Codice:
          
      #include<stdlib.h>
       if(A==NULL){
           printf("IL file non esiste\n");
           system("PAUSE");
           exit(0);
           }
      perchè se il file non esiste il programma deve terminare
      blood io uso le isctruzioni che conosco system pause ed altre non le conosco .
      Figurati che fclose lo uso io che lo ho letto sul deitel altri del mio corso non sanno manco cosa sia.


      P.s. Blood cosa studi ??
      Pillola rossa o pillola blu ????

      La risposta è dentro te.

      Commenta

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

        Originariamente Scritto da Sam Fisher Visualizza Messaggio
        blood io uso le isctruzioni che conosco system pause ed altre non le conosco .
        Figurati che fclose lo uso io che lo ho letto sul deitel altri del mio corso non sanno manco cosa sia.


        P.s. Blood cosa studi ??
        allora devi eliminare la system("pause") ed al posto di exit(0) devi mettere return 1 ,return 2, return n per l'ennesimo errore che potrebbe capitare...

        studio ing inf

        Commenta

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

          blood o chiunque altro possa togliermi questo dubbio.

          Codice:
          void ordina (int C,struct studente *D)
          { 
               int i,imin,j;
               struct studente temp;
               for(i=0;i<(C-1);i++)
                  {
                   imin=i;
                   for(j=i+1;j<C;j++)
                       {
                        if (D[j].voto<D[imin].voto)
                        imin=j;
                       }
               temp=D[i];
               D[i]=D[imin];
               D[imin]=temp;
                  }
          vedete lo swap nelle ultime righe ???praticamente parlando cn il prof mi ha detto che è possibile sostituirlo mediante l'invocazione di una funzione swap all'interno della funzione ordina.
          La chiamata della funzione swap : swap(&D[i],&D[imin])

          mentre la dichiarazione
          Codice:
          void scambia (struct studente *A,struct studente *B)
          {
          
          struct studente temp ;
          temp=*A;
          *A=*B;
          *B=temp;
          
          }
          ora vorrei sapere l'uso dell'& nell'invocazione della funzione swap è dovuto al fatto che questa non può accedere al vettore che usa la funzione ordina??Quindi l'unico modo per accederci è mediante la chiamata per indirizzo ??
          Pillola rossa o pillola blu ????

          La risposta è dentro te.

          Commenta

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

            Originariamente Scritto da Sam Fisher Visualizza Messaggio
            blood o chiunque altro possa togliermi questo dubbio.

            Codice:
            void ordina (int C,struct studente *D)
            { 
                 int i,imin,j;
                 struct studente temp;
                 for(i=0;i<(C-1);i++)
                    {
                     imin=i;
                     for(j=i+1;j<C;j++)
                         {
                          if (D[j].voto<D[imin].voto)
                          imin=j;
                         }
                 temp=D[i];
                 D[i]=D[imin];
                 D[imin]=temp;
                    }
            vedete lo swap nelle ultime righe ???praticamente parlando cn il prof mi ha detto che è possibile sostituirlo mediante l'invocazione di una funzione swap all'interno della funzione ordina.
            La chiamata della funzione swap : swap(&D[i],&D[imin])

            mentre la dichiarazione
            Codice:
            void scambia (struct studente *A,struct studente *B)
            {
            
            struct studente temp ;
            temp=*A;
            *A=*B;
            *B=temp;
            
            }
            ora vorrei sapere l'uso dell'& nell'invocazione della funzione swap è dovuto al fatto che questa non può accedere al vettore che usa la funzione ordina??Quindi l'unico modo per accederci è mediante la chiamata per indirizzo ??

            perchè la funzione swap deve agire sui vettori originali, quindi modificare la posizione degli elementi degli stessi ...per questo ha bisogno di sapere dove prenderli dalla memoria tramite l'operatore indirizzo & ..

            Commenta

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

              Originariamente Scritto da BLOOD black Visualizza Messaggio
              perchè la funzione swap deve agire sui vettori originali, quindi modificare la posizione degli elementi degli stessi ...per questo ha bisogno di sapere dove prenderli dalla memoria tramite l'operatore indirizzo & ..

              scusa ma i vettori non vengono passati in automatico per indirizzo ???
              Pillola rossa o pillola blu ????

              La risposta è dentro te.

              Commenta

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

                Originariamente Scritto da Sam Fisher Visualizza Messaggio
                scusa ma i vettori non vengono passati in automatico per indirizzo ???
                &D[i] è l'indirizzo dell'elemento i esimo del vettore D, mentre D è l'indirizzo del suo primo elemento... la funzione swap agisce sugli elementi i-esimi

                Commenta

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

                  Originariamente Scritto da BLOOD black Visualizza Messaggio
                  &D[i] è l'indirizzo dell'elemento i esimo del vettore D, mentre D è l'indirizzo del suo primo elemento... la funzione swap agisce sugli elementi i-esimi
                  ecco.
                  Quindi se avessi passato solo D cosa sarebbe accaduto ????
                  Pillola rossa o pillola blu ????

                  La risposta è dentro te.

                  Commenta

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

                    Originariamente Scritto da Sam Fisher Visualizza Messaggio
                    ecco.
                    Quindi se avessi passato solo D cosa sarebbe accaduto ????
                    che la swap avrebbe cambiato la posizione dei primi elementi e basta

                    Commenta

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

                      cio' perchè chi scorre gli indici è la funzione ordina non la swap...

                      mettiamola cosi': ORDINA decide quali elementi puntare e SWAP decide quale dei due viene prima...ma agisce in modo "statico" (non curandosi degli indici) su due elementi statici che visti dalla sua visuale potrebbero anche non appartenere ad un array...

                      Commenta

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

                        Originariamente Scritto da BLOOD black Visualizza Messaggio
                        che la swap avrebbe cambiato la posizione dei primi elementi e basta
                        capisco.
                        Quindi quando io passo un vettore ad una funzione questa del vettore conoscere l'indirizzo del primo elemento e la lunghezza dello stesso ??
                        Pillola rossa o pillola blu ????

                        La risposta è dentro te.

                        Commenta

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

                          Originariamente Scritto da Sam Fisher Visualizza Messaggio
                          capisco.
                          Quindi quando io passo un vettore ad una funzione questa del vettore conoscere l'indirizzo del primo elemento e la lunghezza dello stesso ??
                          se passi un vettore ad una funzione devi passare anche il limite... perchè la funzione non ha modo di capire la dimensione del vettore...
                          cio' che tu non capisci è che la swap non ha bisogno del limite perchè chi decide quando terminare l'iterazione non è lei ma chi si trova ad un livello superiore (la funzione ordina,infatti è lei che ha i for)... se dovessi fare qualche errore con gli indici , la swap se ne frega e continua a swappare gli elementi di overflow che le verranno passati (questo accadrà finchè non avrai un errore in tempo di esecuzione) momento in cui ti apparirà la finestrella che ti consiglia di inviare l'errore a microsoft ...

                          Commenta

                          • Tristan
                            Papəete Beach
                            • Oct 2007
                            • 16642
                            • 547
                            • 588
                            • AS Roma
                            • Send PM

                            Originariamente Scritto da BLOOD black Visualizza Messaggio
                            se passi un vettore ad una funzione devi passare anche il limite... perchè la funzione non ha modo di capire la dimensione del vettore...
                            cio' che tu non capisci è che la swap non ha bisogno del limite perchè chi decide quando terminare l'iterazione non è lei ma chi si trova ad un livello superiore (la funzione ordina,infatti è lei che ha i for)... se dovessi fare qualche errore con gli indici , la swap se ne frega e continua a swappare gli elementi di overflow che le verranno passati (questo accadrà finchè non avrai un errore in tempo di esecuzione) momento in cui ti apparirà la finestrella che ti consiglia di inviare l'errore a microsoft ...


                            Commenta

                            • laplace
                              Bodyweb Advanced
                              • Dec 2005
                              • 7984
                              • 962
                              • 1,370
                              • Send PM

                              void scambia (struct studente *A,struct studente *B)

                              swap è questa vero?
                              nella dichiarazione dei parametri formali c'è scritto che prende due puntatori...ovvero due indirizzi...quando la chiami è evidente che devi passare scambia(&a, &b). e tutto questo a prescindere dal significato che c'è dietro...

                              Commenta

                              • laplace
                                Bodyweb Advanced
                                • Dec 2005
                                • 7984
                                • 962
                                • 1,370
                                • Send PM

                                e questo lo dico perchè è utile abituarsi fin da subito a notare e impostare la giusta corrispondenza fra quello che si è dichiarato e quello che si passa. anche per evitare strane o inaspettate conversioni implicite.

                                Commenta

                                Working...
                                X