dubbio in c..
Nicola De Filippo
webmaster a seminariobn.it
Mar 5 Nov 2002 20:17:20 UTC
L'errore è qui:
for(min=0;min!=max;max-- && min++)
DEVE ESSERE
for(min=0;min<=max;max-- && min++)
Michele Tameni wrote:
>stavo facendo un piccolo compito che mi è stato assegnato a scuola..
>
>server a verificare che le frasi, lette al contrario senza tener conto
>degli spazi, siano le stesse...
>un esempio...
>
>"o mordo tua nuora o aro un autodromo" ..:)
>
>con questa il programmino funziona..ma ad esempio se metto la parola
>otto mi da un Segmentation fault... da buon principiante in c non riesco
>a risolvere il prblema anche se ho capito che è nel controllo
>if(a[min]!=a[max]) ok=1;
>qualcuno sa come posso risolvere e ha qualche consiglio su come
>migliorare questo alquanto inutile programma?
>
>ciao e grazie!!
>
>==================================================================
>
>#include <stdio.h>
>
>char a[80];
>char t;
>int i,c,m,l,s,min,max,ok;
>main()
> {
> s=0;
> printf("Dammi la stringa da esaminare:\n");
> fgets(a, 80, stdin);
> printf("La stringa è:\n");
> for(i=0;a[i]!=0;i++) printf("%c", a[i]);
> /* tolgo gli spazi dalla stringa */
> for(i=0;a[i]!=0;i++)
> {
> //printf("analisi lettera %c\n", a[i]);
> if(a[i]==32){
> //printf("spazio vuoto nella posizione %d\n",i);
> s++;
> m=i;
> for(c=i+1;a[c]!=0;m++ && c++)
> {
> a[m]=a[c];
> }
> }
> }
> printf("la stringa senza spazi è:\n");
> for(i=0;a[i]!=0;i++) printf("%c", a[i]);
>
> /* controllo se leggendola al contrario è la stessa */
> l=strlen(a);
> max=l-(s+2);
> for(min=0;min!=max;max-- && min++)
> {
> if(a[min]!=a[max]) ok=1;
> }
> if(ok==0) printf("Si, la frase corrisponde alla richieste\n");
> if(ok==1) printf("No, la frase non corrisponde\n");
> }
>
>
>
>
>
Maggiori informazioni sulla lista
Lug
|