linux user group brescia

immagine del castello

Archivio della mailing list

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