Rechner mit C



  • Ich habe für jede Rechenoperation das Programm geschrieben(umsonst??)

    Wenn du alles was logisch zusammengehört in Funktionen schachtelst, wie du es schon machst, dann kannst du Code öfter gut wiederverwenden.

    Umsonst wäre es dann also weniger.

    [...] macht es überhaupt noch Sinn mir ein Buch über C zuzulegen??

    Ein Buch zulegen kannst du dir natürlich immer. Wobei du mittlerweile sicher auch vieles im Web findest. Ob du Referenzlisten lieber auf Papier oder einem Display ist dann deine Sache.

    Hier gibts noch nen "schönen" Thread zu Büchern:
    was es NICHT (für Anfänger) sein sollte
    http://www.c-plusplus.net/forum/272350



  • ToOmmy13 schrieb:

    Ich habe für jede Rechenoperation das Programm geschrieben(umsonst??)

    Ja.

    ToOmmy13 schrieb:

    Wie gehen ich das am besten an und macht es überhaupt noch Sinn mir ein Buch über C zuzulegen??

    Ja.
    Und falls dein Internet-Tutorial von Pfuscher JW stammt erst recht, dann aber auch kein Buch von Pfuscher JW (gibt es leider reichlich).

    ausgabeErgebnis(multipliziere(eingabeZahl(), eingabeZahl()));
    

    Das hier ist für einen Anfänger bemerkenswert, du kennst offensichtlich schon Funktionen, wozu diese gut sind und wie man sie gebraucht. Jetzt musst du bloß noch einen Schritt weitergehen und deine Funktionen in einem Programm zusammenfassen, also für jede Rechenoperation eine Funktion und die Nutzerein/ausgabe auch noch jeweils etwas.



  • Mein Google-Fu sagt mir, dass es sich um dieses Tutorial handelt, konkret um dieses Beispiel.

    Für ein Internet-Tutorial sieht mir das nach einmaligem Durchklicken vergleichsweise brauchbar aus; ich sehe auf den ersten Blick keine ganz groben Fehler. Ich habe jetzt nicht so gründlich gekuckt, dass ich die Existenz grober Fehler ausschließen könnte, aber der Vergleich mit Herrn Wolf scheint mir nicht angebracht. Da springt einem ja selbst beim Überfliegen auf jeder zweiten Seite völliger Unfug ins Auge.

    Was das eigentliche Problem angeht: Grundsätzlich ist das nicht so schwierig. Du kannst neben einer Funktion multipliziere auch Funktionen addiere, subtrahiere und dividiere haben, die entsprechend leicht anders aussehen. Allerdings müssen diese dann auch benutzt werden, und damit stellt sich die Designfrage: Wie willst du auseinanderhalten, welche Rechenoperation ausgeführt werden soll?

    Da führen viele Wege nach Rom. Ich hab hier etwas auf scanf-Basis herumliegen:

    #include <stdio.h>
    
    int main(void) {
      double x, y;
      char op;
    
      /* scanf gibt die Anzahl der erfolgreich eingelesenen Werte zurück. Wenn
       * alles gut geht, sind das in diesem Fall drei. */
      if(3 == scanf("%lf %[+-*/] %lf", &x, &op, &y)) {
    
        /* Fallunterscheidung hier: */
        switch(op) {
        case '+': printf("%g\n", x + y); break;
        case '-': printf("%g\n", x - y); break;
        case '*': printf("%g\n", x * y); break;
        case '/': printf("%g\n", x / y); break;
        }
      } else {
        fputs("Fehler beim Einlesen\n", stderr);
        return -1;
      }
    
      return 0;
    }
    

    Das liest dann Eingaben wie "3.141 + 2.718". Grundsätzlich kann man das aber Aufziehen, wie man will. Ich denke, ein geistiger Nachfolger deines Codestücks da könnte so aussehen (ich hab bewusst auf Sprachelemente verzichtet, die im Tutorial bis zu der Stelle nicht vorgekommen sind, die ich sonst aber benutzt hätte):

    #include <stdio.h>
    
    double calc_add(double x, double y) { return x + y; }
    double calc_mul(double x, double y) { return x * y; }
    double calc_sub(double x, double y) { return x - y; }
    double calc_div(double x, double y) { return x / y; }
    
    double calculate(int op, double x, double y) {
      switch(op) {
      case 1: return calc_add(x, y);
      case 2: return calc_mul(x, y);
      case 3: return calc_sub(x, y);
      case 4: return calc_div(x, y);
      }
    
      return 0.0;
    }
    
    double eingabe_double(char const *prompt) {
      double zahl;
      printf("%s", prompt);
      scanf("%lf", &zahl);
      return zahl;
    }
    
    int eingabe_int(char const *prompt) {
      int zahl;
      printf("%s", prompt);
      scanf("%d", &zahl);
      return zahl;
    }
    
    int main(void) {
      int op;
      double x, y;
    
      op = eingabe_int("1: Addition\n"
                       "2: Multiplikation\n"
                       "3: Subtraktion\n"
                       "4: Division\n"
                       "\n"
                       "Rechenart auswählen: ");
    
      x = eingabe_double("Operand 1:");
      y = eingabe_double("Operand 2:");
    
      printf("Ergebnis: %f\n", calculate(op, x, y));
    
      return 0;
    }
    


  • C/C++ Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    	#include <stdio.h>
    
    double calc_add(double x, double y) { return x + y; }
    double calc_mul(double x, double y) { return x * y; }
    double calc_sub(double x, double y) { return x - y; }
    double calc_div(double x, double y) { return x / y; }
    
    double calculate(int op, double x, double y) {
      switch(op) {
      case 1: return calc_add(x, y);
      case 2: return calc_mul(x, y);
      case 3: return calc_sub(x, y);
      case 4: return calc_div(x, y);
      }
    
      return 0.0;
    }
    
    double eingabe_double(char const *prompt) {
      double zahl;
      printf("%s", prompt);
      scanf("%lf", &zahl);
      return zahl;
    }
    
    int eingabe_int(char const *prompt) {
      int zahl;
      printf("%s", prompt);
      scanf("%d", &zahl);
      return zahl;
    }
    
    int main(void) {
      int op;
      double x, y;
    
      op = eingabe_int("1: Addition\n"
                       "2: Multiplikation\n"
                       "3: Subtraktion\n"
                       "4: Division\n"
                       "\n"
                       "Rechenart auswählen: ");
    
      x = eingabe_double("Operand 1:");
      y = eingabe_double("Operand 2:");
    
      printf("Ergebnis: %f\n", calculate(op, x, y));
    
      return 0;
    }
    

    Ich bin noch ein Anfänger. Ich möchte gern nachvollziehen, wie was miteinander agiert, deswegen.. könnte jemand noch ein par Notizen hinzufügen?? Oder der Autor selbst.
    Danke



  • C/C++ Code:
    
    	#include <stdio.h>
    
    double calc_add(double x, double y) { return x + y; }
    double calc_mul(double x, double y) { return x * y; }
    double calc_sub(double x, double y) { return x - y; }
    double calc_div(double x, double y) { return x / y; }
    
    double calculate(int op, double x, double y) {
      switch(op) {
      case 1: return calc_add(x, y);
      case 2: return calc_mul(x, y);
      case 3: return calc_sub(x, y);
      case 4: return calc_div(x, y);
      }
    
      return 0.0;
    }
    
    double eingabe_double(char const *prompt) {
      double zahl;
      printf("%s", prompt);
      scanf("%lf", &zahl);
      return zahl;
    }
    
    int eingabe_int(char const *prompt) {
      int zahl;
      printf("%s", prompt);
      scanf("%d", &zahl);
      return zahl;
    }
    
    int main(void) {
      int op;
      double x, y;
    
      op = eingabe_int("1: Addition\n"
                       "2: Multiplikation\n"
                       "3: Subtraktion\n"
                       "4: Division\n"
                       "\n"
                       "Rechenart auswählen: ");
    
      x = eingabe_double("Operand 1:");
      y = eingabe_double("Operand 2:");
    
      printf("Ergebnis: %f\n", calculate(op, x, y));
    
      return 0;
    }
    

    Ich bin noch ein Anfänger. Ich möchte gern nachvollziehen, wie was miteinander agiert, deswegen.. könnte jemand noch ein par Notizen hinzufügen?? Oder der Autor selbst.
    Danke



  • Hat sich erledigt. 🙂
    Danke an alle die mir geantwortet haben.



  • ich bin nicht der autor aber ne notiz kannst du haben:

    - die vier funktionen zum main programm hinzufügen
    - im mainprogram 2 zahlen und einen operator einlesen
    - anhand des operators per if- oder switch anweisung die zugehörige funktion aufrufen
    - ergebnis anzeigen



  • hi,

    ich hab jetzt vor 2 wochen mein abitur angefangen 😃 dort lernen wir auch programmieren mit c (noch am anfang)

    also ich hab das so am anfang gemacht fand ich am logischsten vielleicht hilft es dir ja 😃

    wahrscheilich ist das umständlich aber besser kann ichs noch nicht ^^

    hier bitte:

    #include<stdio.h>

    int main(int argc, char *argv[])

    {
    float Zahl1;
    float Zahl2;
    float Plus;
    float Minus;
    float Mal;
    float Geteilt;

    printf ("Bitte geben Sie die 1. Zahl ein:");
    fflush(stdin);
    scanf("%f",&Zahl1);

    printf("Geben Sie die 2. Zahl ein :");
    fflush(stdin);
    scanf("%f",&Zahl2);

    Plus=Zahl1+Zahl2;
    printf("Die Summe der beiden Zahlen betraegt: %f \n", Plus);
    Minus=Zahl1-Zahl2;
    printf("Die Differenz der beiden Zahlen betraegt: %f \n", Minus);
    Mal=Zahl1*Zahl2;
    printf("Das Produkt der beiden Zahlen betraegt: %f \n", Mal);
    Geteilt=Zahl1/Zahl2;
    printf("Dividiert man die Zahlen erhält man:: %f \n", Geteilt);

    return 0;

    }



  • Ich kann dir nur sagen, dass es sich NICHT lohnt ein Buch zu kaufen. Oftmals tauchen immer Fragen auf, wo jetzt nun das eine Zeichen herkommt, was in dem Quelltext auftaucht und was es macht. Kein Buch ist perfekt geschrieben und du wirst nur Geld zum Fenster rauswerfen...Schau lieber nach online tuts, ist viel verständlicher erklärt



  • Windassel schrieb:

    Ich kann dir nur sagen, dass es sich NICHT lohnt ein Buch zu kaufen. Oftmals tauchen immer Fragen auf, wo jetzt nun das eine Zeichen herkommt, was in dem Quelltext auftaucht und was es macht. Kein Buch ist perfekt geschrieben und du wirst nur Geld zum Fenster rauswerfen...Schau lieber nach online tuts, ist viel verständlicher erklärt

    Sorry, die Meinung teile ich jetzt nicht so ganz. Weder du noch ich kennen, das Lernverhalten vom Threadersteller, oder?

    Natürlich findet man Tuts auch im Web, wenn man aber etwas Gesamterklärendes sucht, dann sollte man wirklich ein paar Sachen von guten Autoren lesen... da ist das wenigste vllt. digital, aber wenn man sich das ein oder andere aus ner Bücherei(das ist sowas wo es Bücher for free gibt, sofern man schon Mitglied und die Mahngebühr nicht auf sich zieht) leiht, dann kann ein über monate hinweg geschriebenes Buch sicherlich mehr helfen, als ein Tutorial(welches selten über solche Zeiträume hinweg ausgearbeitet wird).

    Es gibt unterschiedliche Autoren, die unterschiedliche Wege zur Erklärung angehen. Wenn du gar nichts falsch machen willst, schau mal in ner Bücherei oder UNI/FH/Landes-Bibliothek.


Anmelden zum Antworten