Dr.Speed
24-01-2007, 13:47
ho un problema con l'ultima parte di questo programmino che deve farmi scrivere a schermo una stringa con i numeri che gli dico io e poi trasformarla in un numero reale, il problema si pone sulle ultime 10 righe, 
il problema credo sia qui:
numero=numero+((v[i]-48)/j);
#include <stdio.h>
#include <conio.h>
void main()
{
const char INVIO=13;
char c, v[11];
int i=0, oldx, oldy, segno=1, spia=0;
float numero=0;
do
{
c=getche();
switch(c)
{
case '0':
v[i]=c;
i++;
v[i]='\0';
break;
case '1':
v[i]=c;
i++;
v[i]='\0';
break;
case '2':
v[i]=c;
i++;
v[i]='\0';
break;
case '3':
v[i]=c;
i++;
v[i]='\0';
break;
case '4':
v[i]=c;
i++;
v[i]='\0';
break;
case '5':
v[i]=c;
i++;
v[i]='\0';
break;
case '6':
v[i]=c;
i++;
v[i]='\0';
break;
case '7':
v[i]=c;
i++;
v[i]='\0';
break;
case '8':
v[i]=c;
i++;
v[i]='\0';
break;
case '9':
v[i]=c;
i++;
v[i]='\0';
break;
case '-':
if(i==0)
segno=-1;
break;
case ',':
if(spia==0)
{
v[i]=c;
spia=1;
i++;
v[i]='\0';
}
break;
case INVIO:
			
break;
		
case '+':
			
if(i==0)
segno=1;
break;
default:
oldx=wherex();
oldy=wherey();
gotoxy(1,25); //Va a fine schermo
printf("Carattere sbagliato! Premi un tasto per continuare...");
getch();
gotoxy(1,25); //Va a fine schermo
printf(" ");
gotoxy(oldx-1, oldy); //Torna indietro al numero errato inserito
printf("%c\b", 32); //Cancella con back space
}
}while(c!=INVIO);
printf("\nVisual string ");
printf("%s", v);
printf("\nStringa convertita ");
int spia2=0;
float numero2=0;
i=0;
int j=1;
do
{ //Conversione di una stringa in numero
if(v[i]!=',' && spia==0)
{
numero = numero*10+(v[i]-48);
			
}
if(v[i]==',')
{
spia=1;
i++;
}
if(spia==1)
{
j=j*10;
numero=numero+((v[i]-48)/j); //qui credo sia il problema!!
}
i++;
}while(v[i]!=0);
numero=numero*segno;
printf("%f", numero);
}
il problema credo sia qui:
numero=numero+((v[i]-48)/j);
#include <stdio.h>
#include <conio.h>
void main()
{
const char INVIO=13;
char c, v[11];
int i=0, oldx, oldy, segno=1, spia=0;
float numero=0;
do
{
c=getche();
switch(c)
{
case '0':
v[i]=c;
i++;
v[i]='\0';
break;
case '1':
v[i]=c;
i++;
v[i]='\0';
break;
case '2':
v[i]=c;
i++;
v[i]='\0';
break;
case '3':
v[i]=c;
i++;
v[i]='\0';
break;
case '4':
v[i]=c;
i++;
v[i]='\0';
break;
case '5':
v[i]=c;
i++;
v[i]='\0';
break;
case '6':
v[i]=c;
i++;
v[i]='\0';
break;
case '7':
v[i]=c;
i++;
v[i]='\0';
break;
case '8':
v[i]=c;
i++;
v[i]='\0';
break;
case '9':
v[i]=c;
i++;
v[i]='\0';
break;
case '-':
if(i==0)
segno=-1;
break;
case ',':
if(spia==0)
{
v[i]=c;
spia=1;
i++;
v[i]='\0';
}
break;
case INVIO:
break;
case '+':
if(i==0)
segno=1;
break;
default:
oldx=wherex();
oldy=wherey();
gotoxy(1,25); //Va a fine schermo
printf("Carattere sbagliato! Premi un tasto per continuare...");
getch();
gotoxy(1,25); //Va a fine schermo
printf(" ");
gotoxy(oldx-1, oldy); //Torna indietro al numero errato inserito
printf("%c\b", 32); //Cancella con back space
}
}while(c!=INVIO);
printf("\nVisual string ");
printf("%s", v);
printf("\nStringa convertita ");
int spia2=0;
float numero2=0;
i=0;
int j=1;
do
{ //Conversione di una stringa in numero
if(v[i]!=',' && spia==0)
{
numero = numero*10+(v[i]-48);
}
if(v[i]==',')
{
spia=1;
i++;
}
if(spia==1)
{
j=j*10;
numero=numero+((v[i]-48)/j); //qui credo sia il problema!!
}
i++;
}while(v[i]!=0);
numero=numero*segno;
printf("%f", numero);
}