Stringa palindorma

di il
29 risposte

29 Risposte - Pagina 2

  • Re: Stringa palindorma

    In effetti la mancanza di indentazione, unitamente al fatto che il codice non è completo, mi ha tratto in inganno.

    In ogni caso posta il codice completo e dicci quale problema riscontri.
  • Re: Stringa palindorma

    Nippolo ha scritto:


    In effetti la mancanza di indentazione, unitamente al fatto che il codice non è completo, mi ha tratto in inganno.

    In ogni caso posta il codice completo e dicci quale problema riscontri.
    
    #include<iostream>
    #include<cstring>
    using namespace std;
    
    bool
    palindroma (char a[])
    {
      int cont = strlen (a) - 1;
    
    
      for (int i = strlen (a) - 1; i > cont; i--)
        {
    
          if (a[i] != a[cont])
    	return false;
          cont++;
        }
      return true;
    }
    
    
    int
    main ()
    {
      char stringa[100];
      cin.getline (stringa, 99);
      cout << palindroma (stringa);
    
    
      return 0;
    
    
    
    }
    
    Il problema è che restituisce sempre 1
  • Re: Stringa palindorma

    Presumo ti stampi sempre 1, giusto?
  • Re: Stringa palindorma

    Nippolo ha scritto:


    Presumo ti stampi sempre 1, giusto?
    giusto
  • Re: Stringa palindorma

    Ma l'hai editato il precedente messaggio?

    In ogni caso il problema è che il for non viene mai eseguito in quanto la condizione risulta falsa.
  • Re: Stringa palindorma

    Nippolo ha scritto:


    Ma l'hai editato il precedente messaggio?

    In ogni caso il problema è che il for non viene mai eseguito in quanto la condizione risulta falsa.
    Si l'ho editato perchè mi ero dimenticato di scrivere cosa non andava
    perchè risulta sempre falsa?
  • Re: Stringa palindorma

    Quanto valgono inizialmente i e cont?
  • Re: Stringa palindorma

    I vale la lunghezza della stringa-1, cont vale 0
  • Re: Stringa palindorma

    Mi prendi in giro?
    Guarda bene a quanto hai inizializzato la variabile cont...
  • Re: Stringa palindorma

    Nippolo ha scritto:


    Mi prendi in giro?
    Guarda bene a quanto hai inizializzato la variabile cont...
    Non ci credo non me ne ero accorto .
    Comunque ormai per oggi non accendo più il PC, domani mattina provo inizializzando cont a 0. Perdonami per le mie distrazioni.
  • Re: Stringa palindorma

    Le tue distrazioni hanno portato questa discussione dalle 19 aall'1,30 quando avresti potuto risolvere in 10 minuti... tieni conto dell'importanza dell'attenzione quando si scrive codice...
  • Re: Stringa palindorma

    Okay ho risolto, grazie mille ad entrambi per la pazienza. Purtroppo ieri è stata una giornata impegnativa e non ero lucidissimo, scusatemi per l'inutile perdita di tempo e buona giornata.
  • Re: Stringa palindorma

    Nessun problema ... era solo un consiglio ... del resto anche io a volte rispondo con fretta e con pochi dettagli a causa delle giornate di lavoro e degli impegni a volte "delicati" (dal punto di vista "istituzionale"). Comunque buono studio.
  • Re: Stringa palindorma

    Giusto per chiarezza:

    Nippolo ha scritto:


    - perchè non dichiari anche cont, come i, all'interno del for?
    bool palindroma(char a[])
    {
        for(int sx = 0, dx = strlen(a) - 1; sx < dx; ++sx, --dx)
        {
            if(a[sx] != a[dx])
            {
                return false;
            }
        }
        return true;
    }

    Nippolo ha scritto:


    - ti faccio inoltre notare che l'esercizio può essere risolto utilizzando un solo indice... basta ragionare sul fatto che una stringa palindroma coincide con un array simmetrico rispetto al proprio "centro";
    bool palindroma(char a[])
    {
        int dim = strlen(a);
        for(int i = 0; i < dim / 2; ++i)
        {
            if(a[i] != a[dim - i - 1])
            {
                return false;
            }
        }
        return true;
    }
  • Re: Stringa palindorma

    Grazie per la comprensione Oregon
    per quanto riguarda Nippolo ti ringrazio per il tempo che hai perso per mostrarmi come ottimizzare l'algoritmo, effettivamente così è molto più ordinato ed efficiente, probabilmente da solo non ci sarei arrivato. grazie mille ad entrambi!
Devi accedere o registrarti per scrivere nel forum
29 risposte