#include #include #include int main(int argc, char *argv[]) { int z1, z2, ergebnis; char op; /* Anzahl der Parameter korrekt? */ if (argc < 3) { printf("\nZu wenige Kommandozeilenparameter!\n\n"); printf("Aufruf: calc z1 z2 [+|-|*|/] [-fo|-fh|-fd]\n"); exit(1); } /* Operator lesen */ op = argv[3][0]; /* Operanden lesen */ if (argc == 5) { if (strcmp(argv[4], "-fo") == 0) { sscanf(argv[1], "%o", &z1); sscanf(argv[2], "%o", &z2); } else if (strcmp (argv[4], "-fh") == 0) { sscanf(argv[1], "%x", &z1); sscanf(argv[2], "%x", &z2); } else { sscanf(argv[1], "%d", &z1); sscanf(argv[2], "%d", &z2); } } /* Auf Divisio durch 0 pruefen */ if ((z2 == 0) && (op == '/')) { printf ("\nDivision durch 0 nicht moeglich!\n"); exit (1); } /* Berechnung durchfuehren */ switch (op) { case '+': ergebnis = z1 + z2; break; case '-': ergebnis = z1 - z2; break; case '*': ergebnis = z1 * z2; break; case '/': ergebnis = z1 / z2; break; } /* Ausgabe */ if (strcmp(argv[4], "-fo") == 0) printf("\nErgebnis: %o", ergebnis); else if (strcmp (argv[4], "-fh") == 0) printf("\nErgebnis: %x", ergebnis); else printf("\nErgebnis: %d", ergebnis); return 0; }