• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z funkcją wczytującą liczby zespolone

0 głosów
141 wizyt
pytanie zadane 29 kwietnia 2020 w C i C++ przez Hubertius Bywalec (2,970 p.)

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 ?

komentarz 30 kwietnia 2020 przez j23 Mędrzec (177,880 p.)
A jak wywołujesz tę funkcję?
komentarz 30 kwietnia 2020 przez Hubertius Bywalec (2,970 p.)
@j23 Dziękuję za cenną wskazówkę. Tak, przy wywołaniu funkcji był błąd. Aby oszczędzić sobie wstydu nie opublikuje tego co tam wcześniej napisałem.   ;D

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 114 wizyt
pytanie zadane 28 kwietnia 2020 w C i C++ przez Hubertius Bywalec (2,970 p.)
+1 głos
1 odpowiedź 71 wizyt
pytanie zadane 20 stycznia w C i C++ przez Krzysztofs1234 Początkujący (290 p.)
0 głosów
1 odpowiedź 170 wizyt
pytanie zadane 2 maja 2020 w C i C++ przez Hubertius Bywalec (2,970 p.)

88,721 zapytań

137,332 odpowiedzi

306,822 komentarzy

58,907 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...