linux user group brescia

immagine del castello

Archivio della mailing list

dubbio in c..

Michele Tameni michele a amdplanet.it
Mar 5 Nov 2002 18:26:10 UTC
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