Hej :)
Mam problem z poniższą funkcją, która ma wczytać dwie liczby zespolone zaraz po sobie
int read_complex(void *a, void *b)
{
if( a == NULL || b == NULL )
{
return 1;
}
struct complex_t * pointer_on_a=(struct complex_t *)a;
char znak_operatora;
char znak_i;
if(scanf("%f%c%c%f",&(pointer_on_a->re),&znak_operatora,&znak_i,&(pointer_on_a->im))!=4)
{
return 1;
}
if( pointer_on_a->im < 0)
{
return 1;
}
switch(znak_operatora)
{
case '-':
(pointer_on_a->im) *= -1;
break;
case '+':
break;
default:
return 1;
}
switch(znak_i)
{
case 'i':
break;
default:
return 1;
}
printf("\n%f i %f\n",(pointer_on_a->re),(pointer_on_a->im));
struct complex_t * pointer_on_b=(struct complex_t *)b;
if(scanf(" %f%c%c%f",&(pointer_on_b->re),&znak_operatora,&(pointer_on_b->im))!=4)
{
return 1;
}
if( (pointer_on_b->im) < 0)
{
return 1;
}
switch(znak_operatora)
{
case '-':
(pointer_on_b->im) *= -1;
break;
case '+':
break;
default:
return 1;
}
switch(znak_i)
{
case 'i':
break;
default:
return 1;
}
printf("\n%f i %f\n",pointer_on_a->re,pointer_on_a->im);
printf("\n%f i %f\n",pointer_on_b->re,pointer_on_b->im);
return 0;
}
Wartości wprowadzane przeze mnie:
0.168847+i0.142800 5.174851+i1.480399
Efekt końcowy ukazany przez dwa printf-y przed końcem funkcji:
0.168847 i 1.480399
1.480399 i 0.000000
Skąd takie wyniki? Ponadto, wcześniej po wczytaniu pierwszej liczby umieściłem printf-a, aby sprawdzał jakie wartości są pod re i im. Oto co się pokazuje:
0.168847 i 0.142800
Czyli dla pierwszej liczby wtedy jest okej. Co jest grane :O ?