|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2006
Messaggi: 71
|
[c++] stringa palindroma
Salve a tutti!
Allora, sono due giorni che peno su un programma sulla carta semplicissimo, ossia controllare se una parola/frase inserita dall'utente sia palindroma o meno. Be', cercato su internet, controllato discussioni vecchie di anni, non sono riuscito a compilare un codice funzionante :|. Va be' che programmo si e no da un mese , ma due giorni...il codice e' il seguente, se provo a compilarlo (dev c++) il programma mi parte ma al primo ciclo for mi crasha ![]() Codice:
/*Questo programma acquisisce da tastiera una stringa e determina se è palindroma o meno.*/
#include<stdio.h>
#include<stlib.h>
#include<string.h>
main()
{
int i, j, lenght, flag=0;
char str1[20];
printf("Inserire la parola o frase (max 20 caratteri, spazi inclusi): ");
gets(str1);
lenght = strlen(str1);
for(i=0; i<lenght; i++)
for (j=lenght-1; j>=0; j++)
{
if (str1[i] == str1[j])
flag = 0;
else if (str1[i] != str1[j])
flag = 1;
}
if (flag = 1)
printf("La stringa non e' palindroma!");
else if (flag = 0)
printf("La stringa e' palindroma!");
system("PAUSE");
}
dove sbaglio? almeno, è possibile fare quello che mi serve in questo modo? chiedo perche' l'idea originale era di copiare il contenuto della prima stringa in una seconda stringa, però al contrario, e poi attraverso lo strcmp vedere se le cose corrispondevano...mi sono bloccato, non riuscendo a fargli copiare la stringa al contrario :|. usavo due cicli for annidati, in teoria dovrebbe essere giusto no? grazie mille |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 5206
|
Quote:
Io comunque farei una cosa molto molto più semplice. Una stringa è palindroma se la stringa invertita coincide con la stringa originale. Quindi farei così: - Prendo la lunghezza della stringa es. in 'len'. - Faccio un ciclo for con 'i' da 0 a < len/2. - Confronto str[i] con str[len-i-1] - Al primo confronto che fallisce, so già che la stringa non è palindroma
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%) Java Versions Cheat Sheet |
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Nov 2006
Messaggi: 71
|
concettualmente quella j doveva decrescere
, ho sbagliato a scrivere . La soluzione che proponi te l'avevo trovata suggerita anche da qualche altra parte, ma non l'avevo tenuta in considerazione perchè mi piantavo sull'idea che, se in teoria il mio codice funziona, non vedo perchè non deve in pratica comunque ora provo a vedere se riesco a compilare quello che hai suggerito te! gracias!
Ultima modifica di Doriän : 21-11-2006 alle 23:04. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1454
|
l'ho fatto nell'ora di esercitazione all'uni, 20 secondi netti.
Codice:
char flag = 0; for(int i = 0; i < lenght/2 && !flag; i++) if (str1[i] != str1[lenght-i-1]) flag = 1; l'idea della copia della stringa sarebbe valida, ma poco efficiente. Ultima modifica di Furla : 21-11-2006 alle 23:46. |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Nov 2006
Messaggi: 71
|
asd come smontare una persona e vivere felici
. bho, grazie mlle per l'aiuto e per i suggerimenti, ora cerco di scrivere un programma che finalmente funzioni!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:55.










, ma due giorni...








