Cześć mam problem robię kalkulator liczb zespolonych, program ma przyjmować dane w takiej postaci
24.627593+i77.449112
Próbuje wczytać w następujący sposób
scanf("%f%c%[^ij]f",&real,&tmp,&imagine);
Jednak zmienna imagine pozostaje zerem
Cześć mam problem robię kalkulator liczb zespolonych, program ma przyjmować dane w takiej postaci
24.627593+i77.449112
Próbuje wczytać w następujący sposób
scanf("%f%c%[^ij]f",&real,&tmp,&imagine);
Jednak zmienna imagine pozostaje zerem
W C jest typ liczb zespolonych: https://en.wikipedia.org/wiki/Complex.h
sscanf(input, "%f+%*1[ij]%f",&re, &im);
Ten fragment jest zły: %[^ij]f
i kompilator na pewno cię o tym ostrzega.
Ten format string oznacza wczytaj napis zawierający wszystko poza i
lub j
a potem wczytaj literę f
.
pewnie miało być:
float real, imagine;
char signBuff[2];
int count = scanf("%f %1[+-] %*1[ij]%f", &real, signBuff, &imagine);
if (cout == 3) {
// wczytano pełną liczbę urojoną
} else if (count == 1) {
// wczytano liczbę rzeczywistą
} else if (count == 2) {
// błąd: bo napis wygląda np tak: 313-23
} else {
// błąd nic nie wczytano.
}
Po kolei:
+
lub -
i
lub j
i go zignorujWszystko jest opisane np tu