Doriän
21-11-2006, 21:34
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 :asd:, 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 :asd:
/*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 :)
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 :asd:, 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 :asd:
/*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 :)