cecce88
28-05-2008, 11:26
Questo programma dovrebbe svolgere una funzione simile all'ATOI, quindi prende un stringa di numeri e la trasforma in intero! Il fatto è che non accetta la stringa, mi da errore come se leggesse dei caratteri! Sapete aiutarmi?
#include<stdio.h>
int potenza(int);
int main()
{ char s[101],c;
int i=0,in=0,j,p,aux,end;
/*Inserimento stringa*/
printf("Inserisci stringa: ");
while((c=getchar()!='\n')||(i<100))
{ if ((c>=48)&&(c<=57)||(c==' '))
{ s[i]=c;
i++;
}
else
{ printf("Inserito carattere errato!! esci");
return 0;
}
}
s[i]='\0';
end=i;
/* eliminazione spazi vuoti */
for(i=0;i<end;i++)
{ if(s[i]==' ')
{ for(j=i;j<end;j++)
s[j]=s[j+1];
}
}
/*trasformazione intero*/
for(i=0;i<end;i++,end--)
{ aux=s[i];
s[i]=end;
s[end]=aux;
}
for(i=0;i<end;i++)
{ p=potenza(i);
in=in+((s[i]-48)*p);
}
printf("\n L'intero è: %d", in);
return 0;
}
int potenza(int x)
{ int y,pot=1;
if(x==0) return pot;
for(y=1;y<=x;y++)
pot=pot*10;
}
#include<stdio.h>
int potenza(int);
int main()
{ char s[101],c;
int i=0,in=0,j,p,aux,end;
/*Inserimento stringa*/
printf("Inserisci stringa: ");
while((c=getchar()!='\n')||(i<100))
{ if ((c>=48)&&(c<=57)||(c==' '))
{ s[i]=c;
i++;
}
else
{ printf("Inserito carattere errato!! esci");
return 0;
}
}
s[i]='\0';
end=i;
/* eliminazione spazi vuoti */
for(i=0;i<end;i++)
{ if(s[i]==' ')
{ for(j=i;j<end;j++)
s[j]=s[j+1];
}
}
/*trasformazione intero*/
for(i=0;i<end;i++,end--)
{ aux=s[i];
s[i]=end;
s[end]=aux;
}
for(i=0;i<end;i++)
{ p=potenza(i);
in=in+((s[i]-48)*p);
}
printf("\n L'intero è: %d", in);
return 0;
}
int potenza(int x)
{ int y,pot=1;
if(x==0) return pot;
for(y=1;y<=x;y++)
pot=pot*10;
}