Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C]Problema sull'output

    Ciao,
    ho scritto un programma che serve per capire se la parola inserita dall'utente è palindroma, il programma funziona è solo che quando stampa l'output della parola priama e dopo di essa appaiono dei simboli che variano a seconda di ciò che metto come input.

    per esempio quando scrivo vvv
    mi da come output di prova: (una specie di croce ma, che non è un più)vvv(freccià rivolta verso l'alto)""

    Come posso risolvere questo problema?
    codice:
    //Numero di parole in una frase
    #include <stdio.h> 
    #include <string.h> 
    int main() 
    { 
       char parola [25], prova[25];
       int cnt=0, i=0;
       printf("Scrivi una parola: \n");
       gets(parola);
       for(cnt=0; cnt < strlen(parola); cnt++)
       {
                  parola[cnt] = tolower (parola[cnt]);
       }  
       i=cnt;
       cnt=0;
       while(i!=0)
       {
                  prova[i]=parola[cnt];
                  i--;
                  cnt++;
       } 
       if (strstr(prova,parola)) // Equivale a scrivere if (strstr(s1,s2) != 0) ovvero se il valore di ritorno della funzione non è NULL (cioè che ha trvato qualcosa)
               printf("La parola inserita %s e\' palindroma in quanto letta al contrario e\' %s\n", parola, prova);
       else //Entra nell'else se il valore di ritorno della funzione è NULL (cioè che non ha trovato niente)
            printf ("La parola inserita %s non e\' palindroma in quanto letta al contrario e\' %s\n", parola, prova);
       system ("pause");
       return 0;
    }
    Ciao e grazie mille in anticipo
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: [C]Problema sull'output

    Originariamente inviato da 21Edoardo96
    il programma funziona
    No, veramente il programma non funziona ... dato che ci sono degli errori logici ...

    Nel codice, devi apportare le modifiche in rosso, spostando e aggiungendo le righe indicate.

    codice:
       while(i!=0)
       {
    	   i--;
    	   prova[i]=parola[cnt];
               cnt++;
       } 
       prova[cnt]=0;
    e per il confronto di due stringhe devi usare la strcmp non la strstr

    codice:
       if (strcmp(prova,parola)==0)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ok,
    ho apportato le modifiche mi ha detto di fare solo che non ho capito e cose:
    1)Perchè ho dovuto inserire
    codice:
     prova[cnt]=0;
    e cambiare la posizione di
    codice:
     i--;
    2)Inoltre la funzione che hai usato
    codice:
     if (strcmp(prova,parola)==0)
    so che è quella giusta da usare ma, non ho ben capito perchè non si possa usare la strstr?

    codice:
    //Parola palindroma
    #include <stdio.h> 
    #include <string.h> 
    int main() 
    { 
       char parola [25], prova[25];
       int cnt=0, i=0;
       printf("Scrivi una parola: \n");
       gets(parola);
       for(cnt=0; cnt < strlen(parola); cnt++)
       {
                  parola[cnt] = tolower (parola[cnt]);
       }  
       i=cnt;
       cnt=0;
       while(i!=0)
       {
                  i--;
                  prova[i]=parola[cnt];
                  cnt++;
       } 
       prova[cnt]=0;
       if (strcmp(prova,parola)==0)
       printf("La parola  inserite e\' palindroma, perche\' letta al contrario e\' %s", prova);
       else
       printf("La parola inserita non e\' palindroma perche\' letta al contrario e\' %s", prova);
       printf("\n");
       system ("pause");
       return 0;
    }
    Ciao e grazie
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da 21Edoardo96
    1)Perchè ho dovuto inserire
    codice:
     prova[cnt]=0;
    e cambiare la posizione di
    codice:
     i--;
    Speravo ci pensassi un po' su e capissi da solo ... è questo il bello della programmazione ... se non ci sbatti un po' la testa da solo, non impari nulla ...

    Prova a riflettere ancora un po' e cerca delle spiegazioni ...

    Per quanto riguarda la strcmp e la strstr, non è che non puoi usare la strstr (non l'ho mai detto) ma quello che ti serve "logicamente" alla fine del programma è *confrontrare* due stringhe il confronto tra stringhe si fa con la strcmp.

    Se avessi dovuto cercare una stringa all'interno di un'altra, funzionalità più complessa, allora avresti dovuto usare la strstr. E' un caso il fatto che anche questa funzione, in questo caso, possa essere utilizzata ma non è una cosa sensata.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.