Visualizzazione dei risultati da 1 a 8 su 8

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    La if che controlla lo spazio funziona, quello che poi non ha molto senso è la for seguente, quando confronti v[] e v1[] ... ricorda che in v[] gli spazi ci sono ancora.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2015
    residenza
    Firenze
    Messaggi
    18
    Quote Originariamente inviata da oregon Visualizza il messaggio
    La if che controlla lo spazio funziona, quello che poi non ha molto senso è la for seguente, quando confronti v[] e v1[] ... ricorda che in v[] gli spazi ci sono ancora.
    Guarda, ti ringrazio! Mi stavo svercellando per capire dove sbagliassi, alla fine era un errore stupidissimo... (che tra l'altro conosco anche, bah!)
    Ahahaha sono riuscito a completarlo, adesso riesce a verificare se è palindrome anche con le frasi

    Ecco il codice finale:

    codice:
    #include<iostream>
    #include <string.h>
    #include <conio.h>
    
    
    using namespace std;
    
    
    int main()
    {
        int c=50, lung, max, i, k=0, lung1;
        char v[c], v1[c], v2[c] ;
        bool uguale=true;
        cout<<"Inserisci la parola da verificare: ";
        gets(v);
        
        lung= strlen(v); //calcola lunghezza stringa//    
        for(i=0;i<lung;i++) //se il carattere è diverso da " ", lo copia in un vettore che conterrà tutte le parole senza " " //
        {
             if(v[i] != ' ') 
            {
            v1[k]= v[i];
             k++;
            }    
        }
        lung1=strlen(v1);
        max=lung1-1;
        for(i=0;i<lung1;i++) //ribalta i caratteri nel vettore dove sono contenuti tutti i caratteri senza " " //
        {
            v2[max]= v1[i];
            max--; 
        }
    
    
        for(i=0; (i<lung1) && (uguale==true); i++ ) //confronto ogni carattere del primo vettore con il secondo, se il carattere è diverso, esce dal for //
        {
            if (v1[i] !=v2[i]) uguale=false;
            
        }
    
    
       if(uguale==true ) cout<<"La parola e' palindroma \n";
       else cout<<"La parola non e' palindroma \n";
    
    
    system("pause");
    return 0;
    }
    Ultima modifica di light95; 07-03-2015 a 00:05

  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Non ti serve copiare la stringa e invertirla, né eliminare spazi e/o punteggiatura.
    Prova a vedere se capisci come funziona questo spezzone di codine:
    codice:
    #include <iostream>
    #include <cstring>
    #include <cctype>
    
    
    using namespace std;
    
    
    int main() {
        char s[256];
        cout << "Inserisci una frase: ";
        cin.getline(s, 256);
        bool pal = true;
        for(int i = 0, j = strlen(s) - 1; pal && (i < j); ) {
            bool si = isalpha(s[i]), sj = isalpha(s[j]);
            if(si && sj) {
                pal = pal && (toupper(s[i]) == toupper(s[j]));
                /* in questo caso sarebbe equivalente
                    pal = toupper(s[i]) == toupper(s[j]);
                    in quanto nella condizione d'uscita compare pal.
                    Se così non fosse la forma in questo commento
                    sarebbe scorretta. */
                ++i; --j;
            } else {
                if(!si) ++i;
                if(!sj) --j;
            }
        }
        cout << (pal ?  "Palindromi": "Non palindromi") << endl;
        return 0;
    }
    Ultima modifica di Scara95; 07-03-2015 a 11:44 Motivo: precisazione sul codice
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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.