Ergebnis 1 bis 6 von 6

Thema: C Rechner..

  1. #1
    W32.Lovgate
    Registriert seit
    09.06.2007
    Beiträge
    339

    Standard C Rechner..

    Moinsen, hab heute erst angefangen, C zu lernen.

    Wollte mir mal so nen Rechner machen, mein aktueller code:

    Code:
    #include <stdio.h>
    
    int main()
    {
        int num1,num2,num3;
        printf("Enter your first number...\n");
        scanf("%d", &num1);
        getchar();
        printf("Now enter minus, plus or whatever...\n");
        scanf("%d", &num2);
        getchar();
        printf("And enter the last number...\n");
        scanf("%d", &num3);
        getchar();
        printf("Problem one is num1 num2 num3, answer is: %d\n", num1 num2 num3);
        system("PAUSE");
    }
    Der code funktioniert bis jetzt ganz gut, nur kann ich ihn wegen

    printf("Problem one is num1 num2 num3, answer is: %d\n", num1 num2 num3);

    nicht kompilieren.

    Ich wollte aber den Rechner auf diesem Wege entwerfen, man müsste ja eig. nur num2 mit / oder + oder - ersetzen, das tut er aber nicht.

    Wäre nett wenn jemand Lösungen hat.

    Danke im Vorraus!


  2. #2
    W32.FunLove Avatar von Cr4ckEye
    Registriert seit
    19.11.2008
    Beiträge
    123

    Standard

    Wenn man die "*+-/%" Operanden so abfrägt wie du, also per eingabe, werden sie nicht als INT sondern als char Arry/Pointer oder String gespeichert. Und selbst damit könntest du zwar eine ausgabe erzeuge in dem Stil 4 +3 nur würde er mit dem String als Rechenzeichen nichts anfangen. Das ist so auch nicht möglich, da der Code zu Runtime ja bekannt und kompiliert sein muss, da kannst du ihn nicht einfach so noch verändern. Bau 4 einzelfunktionen die jeweils eien aufgabe übernehmen.
    Kleiner Tip:

    Code:
    if(!strcmp(num2,"+")) { ... }

    MfG

  3. #3
    W32.Lovgate
    Registriert seit
    09.06.2007
    Beiträge
    339

    Standard

    Danke!

    Das hat mich viel weiter gebracht!


  4. #4
    I'm in ur VM. Avatar von l0dsb
    Registriert seit
    23.07.2007
    Beiträge
    1.038

    Standard

    Ich würde zum Vergleichen eines einzelnen Zeichens nicht strcmp verwenden, das kann man ja noch mit einer (schnelleren) if-Abfrage erledigen (if(num2 == '+'), num2 sollte dann ein char sein; oder gleich eine switch-case mit num2 und den cases '+', '-', ...).
    I can haz RCE?

  5. #5
    W32.Lovgate
    Registriert seit
    09.06.2007
    Beiträge
    339

    Standard

    Ich habs jetzt einfach so geregelt :mrgreen:

    Code:
    #include <stdio.h>
    
    int main() {
        int num;
        int plus = 1;
        int minus = 2;
        int mal = 3;
        int thru = 4;
        int cancel = 5;
        
        printf("Enter 1 for +; 2 for -; 3 for *; 4 for /; 5 for cancel:\n");
        scanf("%d", &num);
                   
        if (num == plus) {
        int num1,num2;
        printf("You entered +, enter your first number...\n");
        scanf("%d", &num1);
        getchar();
        printf("Enter your second number...\n");
        scanf("%d", &num2);
        getchar();
        printf("Answer is: %d\n", num1 + num2);
        system("PAUSE");
             }
    
        if (num == minus) {
        int num1,num2;
        printf("You entered +, enter your first number...\n");
        scanf("%d", &num1);
        getchar();
        printf("Enter your second number...\n");
        scanf("%d", &num2);
        getchar();
        printf("Answer is: %d\n", num1 - num2);
        system("PAUSE");
             }
             
        if (num == mal) {
        int num1,num2;
        printf("You entered +, enter your first number...\n");
        scanf("%d", &num1);
        getchar();
        printf("Enter your second number...\n");
        scanf("%d", &num2);
        getchar();
        printf("Answer is: %d\n", num1 * num2);
        system("PAUSE");
             }
             
        if (num == thru) {
        int num1,num2;
        printf("You entered +, enter your first number...\n");
        scanf("%d", &num1);
        getchar();
        printf("Enter your second number...\n");
        scanf("%d", &num2);
        getchar();
        printf("Answer is: %d\n", num1 / num2);
        system("PAUSE");
             }
             
        if (num == cancel) {
                   printf("Canceled process...\n");
                   getchar();
                   system("PAUSE");
                   }           
        return 0;
    }


  6. #6
    W32.FunLove Avatar von Cr4ckEye
    Registriert seit
    19.11.2008
    Beiträge
    123

    Standard

    Wenns klappt is gut ;-) Aber um es auf 1/3 des Codes zu reduzieren schauste dir mal switch() und die ASCII Tabelle an ;-)

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •