Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - [C] Problema Do-While
Forum - C/C++ - [C] Problema Do-While

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
cristian3095 (Normal User)
Pro


Messaggi: 66
Iscritto: 24/09/2010

Segnala al moderatore
Postato alle 19:44
Mercoledì, 08/12/2010
salve a tutti....ho creato un piccolo programma in C che restituisce una stringa all'inverso....ad esempio se scrivo "Ciao" mi stampa "oaiC".....fin qui tutto bene....volevo far ricominciare il programma alla pressione del tasto "1".....il programma effettivamente ricomincia....però se inserisco una parola salta tutto e va alla fine infatti mi dice "1) Riprova" qual'è il problema :-|

Ecco il codice:
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. main()
  3. {
  4.       char array_imput[100];
  5.       int b,a,i,o,stringa;
  6.       do{
  7.       b=0;a=0;i=0;o=0;stringa=1;
  8.       printf("Inserisci una stringa \n");
  9.       for (o=0;o=100;o++){
  10.       stringa=getchar();
  11.       array_imput[i]=stringa;
  12.       if (stringa==10){
  13.       i--;
  14.       break;
  15.       }i++;
  16.       }    
  17.       for(o=0;o=100;o++){
  18.       printf("%c",+ array_imput[i]);
  19.       i--;
  20.       if(i < 0){
  21.       break;
  22.       }
  23.       }
  24.       printf("\n\n1) Riprova\n2)Esci\n");
  25.       scanf("%d",&b);        
  26.       }while(b==1);
  27. }


Ultima modifica effettuata da cristian3095 il 08/12/2010 alle 19:46
PM Quote
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Segnala al moderatore
Postato alle 20:50
Mercoledì, 08/12/2010
un errore che mi è saltato subito all'occhio è la condizione logica del for...è un assegnamento e non un controllo..

io più semplicemente avrei letto la stringa e poi l'avrei stampata al contrario...


Alex=)
PM Quote
Avatar
Pitagora (Member)
Expert


Messaggi: 367
Iscritto: 12/06/2010

Segnala al moderatore
Postato alle 21:07
Mercoledì, 08/12/2010
Dichiara la variabile b non come int ma come char, modificando cosí la riga 25 26
Codice sorgente - presumibilmente Plain Text

  1. printf("\n\n1) Riprova\n2)Esci\n");
  2.       scanf("%c\n",&b);      
  3.       }while(b=='1');

:k:


Yep, I came back :P
PM Quote
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Segnala al moderatore
Postato alle 11:10
Giovedì, 09/12/2010
Testo quotato

Postato originariamente da Pitagora:

Dichiara la variabile b non come int ma come char, modificando cosí la riga 25 26
Codice sorgente - presumibilmente Plain Text

  1. printf("\n\n1) Riprova\n2)Esci\n");
  2.       scanf("%c\n",&b);      
  3.       }while(b=='1');

:k:



guarda che funziona lo stesso se la variabile è un int..non credo che sia quello il problema..


Alex=)
PM Quote
Avatar
Pitagora (Member)
Expert


Messaggi: 367
Iscritto: 12/06/2010

Segnala al moderatore
Postato alle 11:33
Giovedì, 09/12/2010
Testo quotato

Postato originariamente da Alex:

Testo quotato

Postato originariamente da Pitagora:

Dichiara la variabile b non come int ma come char, modificando cosí la riga 25 26
Codice sorgente - presumibilmente Plain Text

  1. printf("\n\n1) Riprova\n2)Esci\n");
  2.       scanf("%c\n",&b);      
  3.       }while(b=='1');

:k:



guarda che funziona lo stesso se la variabile è un int..non credo che sia quello il problema..

Prova! :k:


Yep, I came back :P
PM Quote
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Segnala al moderatore
Postato alle 11:56
Giovedì, 09/12/2010
Testo quotato

Postato originariamente da Pitagora:

Testo quotato

Postato originariamente da Alex:

Testo quotato

Postato originariamente da Pitagora:

Dichiara la variabile b non come int ma come char, modificando cosí la riga 25 26
Codice sorgente - presumibilmente Plain Text

  1. printf("\n\n1) Riprova\n2)Esci\n");
  2.       scanf("%c\n",&b);      
  3.       }while(b=='1');

:k:



guarda che funziona lo stesso se la variabile è un int..non credo che sia quello il problema..

Prova! :k:


non ho un compilatore sotto mano, ma deve per forza andare!! leggo un intero e controllo se è uguale a 1...


Alex=)
PM Quote
Avatar
cristian3095 (Normal User)
Pro


Messaggi: 66
Iscritto: 24/09/2010

Segnala al moderatore
Postato alle 21:12
Giovedì, 09/12/2010
no...non va D: sempre lo stesso problema.... :(

PM Quote
Avatar
lumo (Member)
Expert


Messaggi: 412
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 21:57
Giovedì, 09/12/2010
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2.  
  3. #define SIZE 100
  4.  
  5. main()
  6. {
  7.     int i;
  8.     int continua = 0;
  9.     char string[SIZE];
  10.     char ch;
  11.  
  12. do {  
  13.     for( i=0; i<SIZE; i++ )
  14.     {
  15.         ch = getchar();
  16.         if ( ch == '\n' )
  17.         {
  18.              i--;
  19.              break;
  20.         }
  21.         // else
  22.         string[ i ] = ch;
  23.     }
  24.  
  25.      for( ; i>= 0; i-- )
  26.      {
  27.          putchar( string[ i ] );
  28.      }
  29.      putchar( '\n' );
  30.  
  31.      printf("\n\n1) Riprova\n2)Esci\n");
  32.      scanf("%d",&continua);
  33. }while( continua == 1 );
  34.  
  35.     return 0;
  36. }


manca il primo pezzo ma metticelo tu XD
Comunque, ho usato una macro, è ho definito SIZE usandola nel sorgente.
Se non hai ancora fatto puoi benissimo togliere la riga che comincia con #define e sostituire a SIZE, nel srogente, e mettere 100. Il vantaggio di questo sarebbe che se vuoi mettere al posto di 100, che ne so, 50, allora non devi modificare in giro per il programma ma modifichi solo la macro.
Usare un indice per il for e uno per l'array in questo caso non era necessario perchè crescono in modo uguale.
Nel for, come ha già notato da Alex, hai messo o=100, mentre sarebbe o==100; io ho usato <, minore, che in questo contesto è equivalente.
Nel secondo for, oltre a semplificare, ho usato putchar(), che sarebbe il contrario di getchar(), se vuoi rimetti pure la printf.
Se hai dubbi chiedi pure :-)

ah e ATTENZIONE: è "input" non "imput". E' Inglese mica Italiano XD

Ultima modifica effettuata da lumo il 11/12/2010 alle 16:10
PM Quote
Avatar
cristian3095 (Normal User)
Pro


Messaggi: 66
Iscritto: 24/09/2010

Segnala al moderatore
Postato alle 15:16
Sabato, 11/12/2010
Niente da fare non funziona.....adesso non mi stampa nemmeno la stringa al contrario..... :( "può darsi che il problema sia che l'array non viene svuotato?".....
non so più dove metterci le mani D:

Nella foto si vede quello che succede con il codice che ho postato all'inizio....


cristian3095 ha allegato un file: Immagine.JPG (14927 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da cristian3095 il 11/12/2010 alle 15:22
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo