|
@ -7,7 +7,7 @@ |
|
|
char a[STRINGL]; |
|
|
char a[STRINGL]; |
|
|
void deleteWhitespace(); |
|
|
void deleteWhitespace(); |
|
|
op readFunction(char* data, int length); |
|
|
op readFunction(char* data, int length); |
|
|
void getnumbers(char* data, int length, calc_op* structure_ref); |
|
|
|
|
|
|
|
|
char* getnumbers(char* data, int length, calc_op* structure_ref); |
|
|
void printstruct(calc_op* formula); |
|
|
void printstruct(calc_op* formula); |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -16,10 +16,16 @@ void input() { |
|
|
fgets(a, STRINGL, stdin); //fgets statt scanf, holt den kompletten String inkl. Whitespace |
|
|
fgets(a, STRINGL, stdin); //fgets statt scanf, holt den kompletten String inkl. Whitespace |
|
|
deleteWhitespace(); |
|
|
deleteWhitespace(); |
|
|
calc_op temp; |
|
|
calc_op temp; |
|
|
|
|
|
char data[STRINGL]; |
|
|
|
|
|
memcpy(data,a,STRINGL); |
|
|
temp.formel = a; |
|
|
temp.formel = a; |
|
|
temp.funktionstyp = readFunction(a, 10); |
|
|
|
|
|
getnumbers(a,STRINGL, &temp); |
|
|
|
|
|
|
|
|
temp.funktionstyp = readFunction(data, 10); |
|
|
|
|
|
if (getnumbers(data,STRINGL, &temp) == NULL){ |
|
|
printstruct(&temp); |
|
|
printstruct(&temp); |
|
|
|
|
|
} else { |
|
|
|
|
|
printf("Formular %s not supported", temp.formel); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//Leerzeichen löschen |
|
|
//Leerzeichen löschen |
|
@ -48,8 +54,9 @@ op readFunction(char* data, int length){ |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//Zahlen auslesen (+) |
|
|
//Zahlen auslesen (+) |
|
|
void getnumbers(char* data, int length, calc_op* structure_ref){ //input sind: string, länge vom String, berechnungsstruct |
|
|
|
|
|
char tmp[length]; |
|
|
|
|
|
|
|
|
char* getnumbers(char* data, int length, calc_op* structure_ref){ //input sind: string, länge vom String, berechnungsstruct |
|
|
|
|
|
// char tmp[length]; |
|
|
|
|
|
char* splitPnt; |
|
|
int i = 0; |
|
|
int i = 0; |
|
|
char delimiter; |
|
|
char delimiter; |
|
|
switch (structure_ref->funktionstyp) { |
|
|
switch (structure_ref->funktionstyp) { |
|
@ -65,16 +72,22 @@ void getnumbers(char* data, int length, calc_op* structure_ref){ //input sind: s |
|
|
case opMult: |
|
|
case opMult: |
|
|
delimiter = '*'; |
|
|
delimiter = '*'; |
|
|
break; |
|
|
break; |
|
|
default: return; |
|
|
|
|
|
|
|
|
default: return NULL; |
|
|
} |
|
|
} |
|
|
memcpy(tmp, data, length); //string kopiert |
|
|
|
|
|
char *token = strtok(tmp, &delimiter); //An der Stelle von dem ersten Plus wird ein NULL (Stringende) gesetzt |
|
|
|
|
|
|
|
|
// memcpy(tmp, data, length); //string kopiert |
|
|
|
|
|
char *token = strtok(data, &delimiter); //An der Stelle von dem ersten Plus wird ein NULL (Stringende) gesetzt |
|
|
while (token != NULL) { |
|
|
while (token != NULL) { |
|
|
structure_ref->array[i]=atof(token); // String zu double konvertiert |
|
|
|
|
|
|
|
|
structure_ref->array[i] = atof(token); // String zu double konvertiert |
|
|
i++; |
|
|
i++; |
|
|
|
|
|
splitPnt = token; |
|
|
token = strtok(NULL, "+"); //Sucht von der letzten Plus-Stelle an weiter |
|
|
token = strtok(NULL, "+"); //Sucht von der letzten Plus-Stelle an weiter |
|
|
} |
|
|
} |
|
|
structure_ref->arraylength=i; //Länge des Arrays (also zu berechnende Zahlen) gespeichert |
|
|
structure_ref->arraylength=i; //Länge des Arrays (also zu berechnende Zahlen) gespeichert |
|
|
|
|
|
if (readFunction(splitPnt, strlen(splitPnt)!=opNotSupported)){ |
|
|
|
|
|
return splitPnt; |
|
|
|
|
|
} else { |
|
|
|
|
|
return NULL; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void printstruct(calc_op* formula){ |
|
|
void printstruct(calc_op* formula){ |
|
|