Obliczanie części rzeczywistej i urojonej w programie do liczenia liczb zespolonych

0

witam zaledwie 2 tygodnie temu rozpocząłem programowanie z C na studiach a materiał bardzo szybko leci i nie nadążam wszystkiego ogarnąć. Poniżej mam napisany program do oddzielania części liczby rzeczywistej od zespolonej zgodnie z szablonem, jednak gdzieś jest błąd tylko nie wiem gdzie proszę o pomoc w korekcie. Problem polega na tym że co bym nie wpisał wywala mi zawsze "Incorrect input".

int main(void)
{
    int re, im;
    char op;
    printf("liczba zespolona: ");
    int c = scanf("%d%ci%d", &re, &op, &im);
    if (c |= 3 || (op != '+' && op != '-')) {
        printf("incorrect input\n");
        return 1;
    }
    int sgn = 1;
    if (op == '-')
        sgn = -1;
    printf("Czesc rzeczywista: %d\n", re);
    prinft("Czesc urojona: %d\n", sgn * im);

    return 0;
}
4

https://dsp.krzaq.cc/post/445/jak-zadawac-pytania-na-forum/ Nie napisałeś co to za błąd i co się dzieje, a nie powinno (lub odwrotnie).

c |= 3 - | i ! to różne znaki.

0

zmieniłem na c != 3 i teraz podczas kompilacji wyskakuje błąd "Id returned 1 exit status", okienko do wprowadzania danych w ogóle się nie otwiera, a kompilacja wywala taki błąd.

0

Zrób sobie strukturę i operuj na części rzeczywistej oraz urojonej za pomocą kropki:

#include <stdio.h>

typedef struct zespolona
{
	int im;
	int re;
} zespolona;

int main(void) {
	zespolona z = { 12, 13 };
	printf("Zespolona: %d + %di", z.im, z.re);
	return 0;
}

Trochę prościej wtedy zapanować nad kodem.

0

Po poprawieniu prinft na printf, u mnie działa: https://wandbox.org/permlink/ImjJ6k9uzdpuRgmD

Chociaż pierwsze widzę, aby ktoś wpisywał 4+i3

0
kq napisał(a):

Chociaż pierwsze widzę, aby ktoś wpisywał 4+i3

Można w scanf dać 'i' na końcu.

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