Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - codice in c che si blocca a metà
Forum - C/C++ - codice in c che si blocca a metà

Avatar
morcomucchia (Normal User)
Newbie


Messaggi: 9
Iscritto: 28/07/2010

Segnala al moderatore
Postato alle 10:23
Venerdì, 30/07/2010
ciao a tutti! io ho scritto questo codice che acquisisce dei codici alfanumerici di 12 caratteri. premetto che per compilare uso Dev-C++. l'inserimento del primo codice non mi da problemi, ma quando devo inserire il secondo il programma mi si blocca il programma...mi potreste aiutare??

Codice sorgente - presumibilmente C++

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include <string.h>
  4.  
  5.  
  6.  
  7. int main(void)    
  8. {
  9.     /*chiedi il numero di codici*/
  10.  int num_codici,
  11.      index,
  12.      *p_codice;
  13.  int i=0,
  14.      j=0;
  15.   char  car;
  16.   int   num;
  17.      
  18.    
  19.  
  20.      printf("Digita il numero codici da inserire:\t");
  21.      scanf("%d",&num_codici);
  22.      int *codice;
  23.      
  24.  do
  25.    {
  26.      codice=(int*)malloc(12*sizeof(int));
  27.      
  28.       printf("digita il codice alfanumerico da inserire:");
  29.  
  30.       do
  31.       {
  32.        scanf("%c", &car);
  33.         num = car - '0';
  34.          codice[i]=num;
  35.           i++;
  36.        }
  37.       while (i<12);
  38.     }
  39.     while(j<num_codici);
  40.  
  41.      system("pause");
  42.      return(0);
  43.      }


PM Quote
Avatar
totipianurese (Member)
Pro


Messaggi: 168
Iscritto: 24/06/2008

Segnala al moderatore
Postato alle 10:42
Venerdì, 30/07/2010
scusa, ma io del tuo codice non ho capito niente.
Cmq prima di tutto, credo che devi azzerare la variabile "i" prima del secondo Do While
cosi:
Codice sorgente - presumibilmente C++

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include <string.h>
  4.  
  5.  
  6.  
  7. int main(void)    
  8. {
  9.     /*chiedi il numero di codici*/
  10. int num_codici,
  11.      index,
  12.      *p_codice;
  13. int i=0,
  14.      j=0;
  15.   char  car;
  16.   int   num;
  17.    
  18.  
  19.  
  20.      printf("Digita il numero codici da inserire:\t");
  21.      scanf("%d",&num_codici);
  22.      int *codice;
  23.    
  24. do
  25.    {
  26.      codice=(int*)malloc(12*sizeof(int));
  27.    
  28.       printf("digita il codice alfanumerico da inserire:");
  29.  
  30.       i=0; // COSI
  31.       do
  32.       {
  33.        scanf("%c", &car);
  34.         num = car - '0';
  35.          codice[i]=num;
  36.           i++;
  37.        }
  38.       while (i<12);
  39.     }
  40.     while(j<num_codici);
  41.  
  42.      system("pause");
  43.      return(0);
  44.      }



Ora dovrei porti una domanda, da questo confronto "while(j<num_codici);" non si uscira mai, sai perche??.
PErche' si esce da un ciclo do while, quando la condizione e' falsa.
Cosi come hai fatto tu, j è sempre uguale a zero e di conseguenza e' sempre minore di num_codici.  Credo che sia un loop infinito

Ultima modifica effettuata da totipianurese il 30/07/2010 alle 10:43
PM Quote
Avatar
morcomucchia (Normal User)
Newbie


Messaggi: 9
Iscritto: 28/07/2010

Segnala al moderatore
Postato alle 11:41
Venerdì, 30/07/2010
Codice sorgente - presumibilmente C++

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include <string.h>
  4.  
  5.  
  6.  
  7. int main(void)    
  8. {
  9.     /*chiedi il numero di codici*/
  10. int num_codici,
  11.      index,
  12.      *p_codice;
  13. int i=0,
  14.      j=0;
  15.   char  car;
  16.   int   num;
  17.    
  18.  
  19.  
  20.      printf("Digita il numero codici da inserire:\t");
  21.      scanf("%d",&num_codici);
  22.      int *codice;
  23.    
  24. do
  25.    {
  26.      codice=(int*)malloc(12*sizeof(int));
  27.    
  28.       printf("digita il codice alfanumerico da inserire:");
  29.  
  30.       do
  31.       {
  32.        scanf("%c", &car);
  33.         num = car - '0';
  34.          codice[i]=num;
  35.           i++;
  36.        }
  37.       while (i<12);
  38.     j++;
  39.     }
  40.     while(j<num_codici);
  41.  
  42.      system("pause");
  43.      return(0);
  44.      }



ora ho aggiunto l'incremento della j dopo il primo do while, ma il problema c'è lo stesso. io non è che non riesco ad uscire dal ciclo, non riesco ad inserire il secondo codice perchè il programma va in errore di esecuzione e non riesco a capire il perchè...
comunque è c non c++.
poi posso chiderti perchè non hai capito niente dal mio codice??

PM Quote
Avatar
Ultimo (Member)
Guru


Messaggi: 877
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 12:03
Venerdì, 30/07/2010

dovrebbe esserci un errore logico, :-|


If ok Then GOTO Avanza else GOTO Inizia

PM Quote
Avatar
totipianurese (Member)
Pro


Messaggi: 168
Iscritto: 24/06/2008

Segnala al moderatore
Postato alle 13:00
Venerdì, 30/07/2010
fai un esempio di codici da inserire

PM Quote
Avatar
crash outside control (Normal User)
Expert


Messaggi: 217
Iscritto: 12/02/2008

Segnala al moderatore
Postato alle 15:36
Venerdì, 30/07/2010
Codice sorgente - presumibilmente C++

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int main(void) {
  5.  
  6.    /*chiedi il numero di codici*/
  7.    int num_codici, index, *p_codice;
  8.    int i=0, j=0;
  9.    char  car;
  10.    char *codice;
  11.    
  12.    printf("Digita il numero codici da inserire:\t");
  13.    scanf("%d",&num_codici);
  14.    
  15.    do {
  16.      
  17.       codice=(char*)malloc(12*sizeof(char));
  18.       printf("digita il codice alfanumerico da inserire:");
  19.       i=0;
  20.       do {
  21.          scanf("%c", &car);
  22.          codice[i]=car;
  23.          i++;
  24.       } while (i<12);
  25.       j++;
  26.    } while(j<num_codici);
  27.  
  28.    system("pause");
  29.    return(0);
  30. }


PM Quote
Avatar
morcomucchia (Normal User)
Newbie


Messaggi: 9
Iscritto: 28/07/2010

Segnala al moderatore
Postato alle 10:12
Domenica, 01/08/2010
il codice è un codice alfanumerico di 15 elementi...

PM Quote
Avatar
morcomucchia (Normal User)
Newbie


Messaggi: 9
Iscritto: 28/07/2010

Segnala al moderatore
Postato alle 10:16
Domenica, 01/08/2010
Testo quotato

Postato originariamente da crash outside control:

Codice sorgente - presumibilmente C++

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int main(void) {
  5.  
  6.    /*chiedi il numero di codici*/
  7.    int num_codici, index, *p_codice;
  8.    int i=0, j=0;
  9.    char  car;
  10.    char *codice;
  11.    
  12.    printf("Digita il numero codici da inserire:\t");
  13.    scanf("%d",&num_codici);
  14.    
  15.    do {
  16.      
  17.       codice=(char*)malloc(12*sizeof(char));
  18.       printf("digita il codice alfanumerico da inserire:");
  19.       i=0;
  20.       do {
  21.          scanf("%c", &car);
  22.          codice[i]=car;
  23.          i++;
  24.       } while (i<12);
  25.       j++;
  26.    } while(j<num_codici);
  27.  
  28.    system("pause");
  29.    return(0);
  30. }





:rotfl: grazie!!!:k:

PM Quote