Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13
  1. #11
    W32.Lovgate
    Registriert seit
    04.11.2007
    Beiträge
    365

    Standard

    Zitat Zitat von TiduS
    So,ich hab meinen Fehler behoben und nacheditiert...ich hätte nicht case buchstabe='a' schreiben dürfen.
    Case 'a':
    reicht.
    nur so nebenbei:
    hat dir mein source geholfen, oder biste selber drauf
    gekommen?

  2. #12
    Anfänger
    Registriert seit
    21.01.2008
    Beiträge
    26

    Standard

    würde dir folgendes noch empfehlen:
    1. Nimm lieber Codeblocks als IDE. is der inoffizielle Nachfolger von Dev-CPP da das ja netmehr weiterentwickelt wird.

    2. würde ich die conio.h entfernen un dafür einfahc anstatt getch() einfahc getchar() schreiben...macht des prog wieder kleiner und du hast keinen header aus alten Borland-tagen drin.

    3. würde ich noch bei switch case einen default case machen und dort eine dann sowas wie "Fehlerhafte eingabe" ausgeben lassen, damit das prog net abstürzt oder irgendwas amcht wenn mal nicht das passende eingegebn wird.

  3. #13
    CIH-Virus Avatar von -[RiDER]-
    Registriert seit
    05.01.2007
    Beiträge
    496

    Standard Re: Hilfe zu einem Taschenrechner

    Hi

    Ganz im Rahmen von "Keep it simple" wollte ich mal noch hinzufügen, dass Du den Kode z.B. folgendermaßen stark verkürzen könntest.
    Ich verstehe zwar nicht Dein Verfahren, nach dem Du Kode einrückst, aber ich habe mal versucht es zu übernehmen...
    Code:
    int (*calc)(int, int);
    switch(Buchstabe)
    {
    case 'a':
        calc = &Add;
        cout<<"Bitte geben Sie 2 Zahlen ein,die miteinander addiert werden sollen!"<<endl;
        break;
    case 'b':
        calc = &Sub;  
        cout<<"Bitte geben Sie 2 Zahlen ein,die voneinander subtrahiert werden sollen!"<<endl;
        break;
             
    case 'c':
        calc = &Mult;
        cout<<"Bitte geben Sie 2 Zahlen ein,die multipliziert werden sollen!"<<endl;
        break;
        
    case 'd':
        calc = &Div;
        cout<<"Bitte geben Sie 2 Zahlen ein,die dividiert werden sollen!"<<endl;
        break;
    }
    int a;
    int b;
    cin>>a;
    cin>>b;
    cout<<"Das Ergebnis lautet : "<<calc(a,b)<<endl;
    Es fehlt noch die bereits erwähnte default-Anweisung und auch dieses Verfahren ist noch nicht das sauberste, aber es ist zumindest schonmal kürzer als das, was Du da geschrieben hattest...
    Denk mal daran: (Fast) immer, wenn Du etwas mehrmals schreiben musst, solltest Du versuchen, es auf eine einzige Version zu beschränken (z.B. in Form einer Funktion, die entsprechend oft aufgerufen wird).
    Das hat mehrere Vorteile. Der Kode ist übersichtlicher, weniger fehlerträchtig, kleiner (also die Größe der Programmdatei)...

    Eine Entscheidung, die man aber eher bei größeren Projekten beachten muss, ist ein geeignetes Verhältnis zwischen Größe und Geschwindigkeit zu finden.
    Jede Funktion kann auch als #define-Direktive vom Präprozessor unmittelbar in den Quellkode eingefügt werden, was die Geschwindigkeit des Programms erheblich erhöhen kann - die Programmdatei wird jedoch entsprechend größer.
    Die andere Möglichkeit besteht darin, den oft verwendeten Kode in einer ("ganz normalen") Funktion zu verfassen. Durch das viele "Umherspringen" wird das Programm zwar langsamer, dafür wird die Programmdatei kleiner.
    Gerade bei großen Projekten muss man das günstige Mittel abwägen.

    Als Beispiel: Ein Programm, dass einen bestimmten Kode mehrmals aufrufen möchte - zuerst mit "normalen Funktionen" (der Sinn dieses Programms sei dahingestellt... ):
    Code:
    #include <stdio.h>
    void hello_mr_x(char *name)
    {
      printf("Hello %s", name);
    }
    
    int main(void)
    {
      hello_mr_x("Klaus");
      hello_mr_x("Peter");
      return 0;
    }
    Das Programm "hoppst" zur Funktion hello_mr_x(), wieder zurück, wieder hin, wieder zurück... dieser Kode ist zwar klein, aber langsam (in diesem Fall wird das nicht ins Gewicht fallen... aber wie gesagt, bei größeren Projekten kann es durchaus eine Rolle spielen)
    Nun das Ganze mit #define-Direktiven:
    Code:
    #include <stdio.h>
    
    #define hello_mr_x(name) printf("Hello %s", name);
    
    int main(void)
    {
      hello_mr_x("Klaus");
      hello_mr_x("Peter");
      return 0;
    }
    Hier muss nicht "gehoppst" werden, das Programm ist schneller, aber größer. (Gut, in diesem Fall zwar nicht, aber wenn hello_mr_x() mehrere Zeilen beinhalten würde, was bei Funktionen normalerweise der Fall ist). Das nennt man dann übrigens Makros.

    Soweit.
    GreetZ RiDER

Seite 2 von 2 ErsteErste 12

Stichworte

Berechtigungen

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