Wczytywnie danych do scanf

0

Witam moim zadaniem jest stworzenie kalkulatora dla liczb zespolonych.
Dane mają być wprowadzane w ten sposób: 9.981724+i2.605530
Moje pytanie brzmi jak wydobyć wartość zmiennej urojonej przy pomocy scanf.

0

Przecież scanf przyjmuje format więc możesz zrobić coś w stylu:

scanf ("%f+%fi", &re, &im);
0

To co napisałeś jest częściowo dobre przerobiłem to na
scanf("%f+i%f",&re ,&im);
Jednak to ciągle nie rozwiązuje problemu bo co jeśli liczba wprowadzana będzie równa:
7.110011-i7.945866

0

No to trzeba spytać kogoś mądrzejszego. To co mi na teraz przychodzi do głowy to dołożyć tam wczytanie znaku - %c a następnie go zignorować albo wczytać całą linijkę jako stringa i użyć regexa.

2
  float re, im;
  char sign;
  scanf ("%f%ci%f", &re, &sign, &im);
  if(sign == '-')
    im = -im;

Chyba warto wiedzieć czy część urojona jest ujemna czy nie.

0

http://www.cplusplus.com/reference/cstdio/scanf/

    float re, im;
    char sign[2];
    while (3 == scanf("%f%1[-+]i%f", &re, sign, &im)) {
        if (sign[0] == '-') {
            im = - im;
        }
        printf("%g %gi\n", re, im);
    }

https://wandbox.org/permlink/R68QJyOVIjuOJElz

1 użytkowników online, w tym zalogowanych: 0, gości: 1