Mam taki problem. Otóż chcę wczytać liczbę zespoloną wprowadzoną w postaci wykładniczej tj. Aexp([-]jBpi) i zapisać A do jednej tablicy, a B razem z opcjonalnym znakiem do drugiej. Niestety poniższy kod nie działa i nie mam pojęcia gdzie jest błąd. Byłbym bardzo wdzięczy za odpowiedź.
Kod: Zaznacz cały
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
int sprawdz_zawartosc(char *tablica, int i);
int main()
{
char pobierz[100];
char A[100];
char B[100];
int stan=1;
int i=0;
int j=0;
memset(pobierz, 0, 100);
memset(A,0,100);
memset(B, 0, 100);
gets(pobierz);
while(stan!=0)
{
switch (sprawdz_zawartosc(pobierz,i))
{
case 0: stan=0; break;
case 1:
if(stan==1)
A[i]=pobierz[i];
if(stan==3) /*skladnik B wykladnika*/
{
B[j]=pobierz[i];
j++;
}
else if(stan==5)
B[j]=1;
case 2: stan=2; B[0]=pobierz[i];
case 3: stan=3;
case 5: stan=5;
case 6: stan=6;/*wystepuje e,x,p,(,i,)*/
}
i++;
}
printf("\n%f", atof(A));
printf("\n%f", atof(B));
return 0;
}
int sprawdz_zawartosc(char *tablica, int k)
{
int zwrot;
zwrot=-1;
if(isdigit(tablica[k]) || tablica[k]=='.') zwrot=1;
if(tablica[k]=='e' || tablica[k]=='x' || tablica[k]=='p' || tablica[k]=='(' || tablica[k]=='i'|| tablica[k]==')') zwrot=6;
if(tablica[k]=='-' || tablica[k]=='+') zwrot=2;
if(tablica[k]=='j') zwrot=3;
if(tablica[k]=='j' && tablica[k+1]=='p') zwrot=5;/*jezeli po j jest p to B=1*/
if(tablica[k]=='\0') zwrot=0;/*koniec tablicy*/
return zwrot;
}