Dualrechnung
-
Hallo,
ich hab mal wieder ein kleines Problem, und zwar lesse ich zwei Dualzahlen und einen Operator <dualzahl> <operator> <dualzahl> ein und möchte dann folgende operationen durchführen + - * / && ||, mein Problem is nur das er die eingelesenen Zahlen nicht als dual sondern dezimalzahlen versteht, und die und bzw oder operation erkennt er gar nicht, kann mir da evtl jemand helfen?!
hier is mal mein kurzen code
int main (int argc, char *argv[]) { int zahl_eins = 0, zahl_zwei = 0, ergebniss = 0; zahl_eins = atoi(argv[1]); zahl_zwei = atoi(argv[3]); switch(*argv[2]) { case'+': ergebniss = zahl_eins + zahl_zwei; break; case'-': ergebniss = zahl_eins - zahl_zwei; break; case'*': ergebniss = zahl_eins * zahl_zwei; break; case'/': ergebniss = zahl_eins / zahl_zwei; break; case'&&': ergebniss = zahl_eins && zahl_zwei; break; case'||': ergebniss = zahl_eins || zahl_zwei; break; default: printf("Richtiger Aufruf: dualrech <operand> <operator> <operand>\n"); break; } printf("%s %s %s = %d\n",argv[1], argv[2], argv[3], ergebniss); return(0); }
-
Alex += Alex schrieb:
mein Problem is nur das er die eingelesenen Zahlen nicht als dual sondern dezimalzahlen versteht,
Schlag ich Deiner Doku nochmal atoi nach. Und dann strtol.
und die und bzw oder operation erkennt er gar nicht, kann mir da evtl jemand helfen?!
Was heisst "erkennt nicht"?
-
Ok, danke für den Tipp, def für
strtol(const char *zeichk, char **end_zeig, int basis);
meine Frage ist nur, für was steht der zweite ausdruck(char **end_zeig)?? ich vermute das das die endposition ist, oder? Aber ich will den gesammten inhalt der zelle umwandeln!
-
man 3 strtol schrieb:
If endptr is not NULL, strtol() stores the address of the first invalid character in *endptr. If there were no digits at all, strtol() stores the original value of nptr in *endptr (and returns 0). In particular, if *nptr is not '\0' but **endptr is '\0' on return, the entire string is valid.
Mit anderen Worten: Daran kannst Du erkennen, ob bei der Umwandlung was schief gegangen ist.
-
Ah, ok, danke das hab ich verstanden, ich weiß nur noch nich sogenau, was ich dafür in dem Funktionsaufruf schreiben soll???
-
Ok, danke, etz funktionierts, kann mir noch jemand sagen, warum ich nen Fehler bekomm, wenn ich und bzw oder auswähl??
-
Weil du versuchst zwei Zeichen in einen char zu stopfen, das geht nicht.