Verbesserungsvorschläge für meinen kleinen Rechner

Könnte sein das du den Vorschlag in C++ geschrieben hast? Ich schreibe nämlich in Std. C. Ich bekomme nämlich eine Fehlermeldung wenn ich es auf diese Weise mache.
 
Jop hast Recht. Ist C++. C, also den "alten Standart" brauch man sich nicht aneignen finde ich;)

Aber ich werd mich mal bemühen meinen Code in C Syntax zu überführen.
EDIT:
Ich bekomme nämlich eine Fehlermeldung wenn ich es auf diese Weise mache.
Welche den?
 
Zuletzt bearbeitet:
cout ist c++
C++:
cout<<addieren(m_ia, m_ib); //so rufen wir unsere funktion zum addieren auf 
// hier muss:
printf("%d",addieren(m_ia, m_ib)) // hin
cout<< m_ierg; 
// und das :
printf("%d",m_ierg);
 
Zuletzt bearbeitet von einem Moderator:
Soo. Probiere doch mal diesen Code. Sollte jezt auch C kompatibel sein.

C++:
// Tutorials_de_test.c : Definiert den Einstiegspunkt für die Konsolenanwendung.
//

#include "stdafx.h"
#include <iostream>

using namespace std;
// PROTOTYPEN (Funktionsköpfe)
int addieren(int , int);  
int subtrahieren(int , int);

int main ()
{
int m_ia = 2;
int m_ib = 3;
int m_ierg = 0;

m_ierg=addieren(m_ia, m_ib);
printf("Addition: %d",m_ierg);
 
scanf("%d");
return (0); //main und Programm ende
}
 
int addieren(int a, int b)
{ 
return (a+b); 
}
 
Zuletzt bearbeitet von einem Moderator:
Seit wann sind
include<iostream>
und
using namespace ...
C?

Meine güte.. dan halt raus. den std namespace raucht man hier eh nicht. aber das mit den includes, das sollte er dan schon selbst hinkriegen - also bitte, daran soll es nun nicht liegen.
 
Hi.
Jop hast Recht. Ist C++. C, also den "alten Standart"
Standard schreibt man mit d.

Und wieso alt? Der aktuelle C Standard ist von 1999, der C++ Standard von 1998 (obwohl 2003 revidiert).

Und ich glaube auch nicht, dass Matthias mit dem Hinweis Unterprogramme zu verwenden, meinte, dass man den Aufruf eines (eingebauten) Operators durch den Aufruf einer selbstdefinierten Funktion ersetzen sollte. Das bläht insgesamt nur das Programm auf.

Aber Unterprogramme zu definieren für das Einlesen der auszuführenden Operation, für das Einlesen von Operanden und für das Ausführen der Operaration wäre ganz sinnvoll.

Ungefähr so:
C:
int op;

while ((op = get_operation()) != EOF) {
  int lhs = get_left_operand();
  int rhs = get_right_operand();

  int result = compute(op, lhs, rhs);

  print_result(result, op);
}
Gruß
 
Zuletzt bearbeitet:
Nun klingt plausiebel;)
Ich persönlich kenne wenige Einrichtungen, in denen C gelehrt wird. Für mich (und hier spreche ich bestimmt für viele) ist C++ einfach gängiger und geläufiger. Sieht man ja schon an der Syntax, die ich verwende.. C++ standard;)

Nun das mit den Unterprogrammen hatte ich so verstanden, dass die Main funktion übersichtlich gehalten wird, und Code in Funktionen ausgelagert wird. Dein Vorschlag ist sicherlich eine elegantetere Lösung, doch ich bin mir nicht sicher ob hihacker das so nachvollziehen wird, und ob er das so meinte. Ich denke das deine Lösung für ihn als Einsteiger eher kompliziert ist.

- Mein Senf ende -
 
Und ich glaube auch nicht, dass Matthias mit dem Hinweis Unterprogramme zu verwenden, meinte, dass man den Aufruf eines (eingebauten) Operators durch den Aufruf einer selbstdefinierten Funktion ersetzen sollte. Das bläht insgesamt nur das Programm auf.

Aber Unterprogramme zu definieren für das Einlesen der auszuführenden Operation, für das Einlesen von Operanden und für das Ausführen der Operaration wäre ganz sinnvoll.
Genau so hatte ich das gemeint.

Ich persönlich kenne wenige Einrichtungen, in denen C gelehrt wird.
Die Grundlagen von C werden z.B. in vielen Vorlesungen zum Thema Betriebssysteme oder Compilerbau vermittelt. In der Industrie kommt C u.a. im Embedded-Bereich zum Einsatz. Eine Vielzahl von APIs sind grundsätzlich auf C ausgelegt (beispielsweise Win32, OpenGL, MySQL). Insofern ist C noch lange nicht ausgestorben. Die Diskussion ist in diesem Thema allerdings hinfällig - der Themenersteller hat explizit darauf hingewiesen, dass er gerne C lernen möchte.

Grüße, Matthias
 
Hier erstmal das Programm nach Marschals Vorschlag:

Code:
#include <stdio.h>

int rechenart = 0, zahla = 0, zahlb = 0, ergebnis = 0, end = 49, addition(int , int), subtraktion(int , int), multiplikation(int, int), division(int, int);

/*Hauptprogramm*/

int main(){
    printf ("%45s","Rechner\n\n");
    printf ("%50s","by hihacker\n\n\n\n\n");
    printf ("%70s","Dies ist ein Rechner fuer die normalen Rechenarten.\n\n\n\n\n");

    /*Schleife ist aktiv bis n, N oder esc gedrückt wird*/
    while ((end!=110)&&(end!=78)&&(end!=27)){
        printf ("\t\t      Bitte waehlen sie eine Rechenart aus. \n\n\n\t\t      1.Addition\t\t2.Subtraktion\n\n\t\t      3.Multiplikation          4.Division\n\n");

        /*Gedrückte Taste wird eingelesen (ohne das Enter gedrückt werden muss)*/
        do {
            rechenart = getch();
        }while ((rechenart != 49) && (rechenart !=50) && (rechenart !=51) && (rechenart != 52));

        if(rechenart ==49)
            printf ("Addition:");
        if(rechenart ==50)
            printf ("Subtraktion:");
        if(rechenart ==51)
            printf ("Multiplikation:");
        if(rechenart ==52)
            printf ("Division:");

        /*Einlesen der Zahlen*/
        printf ("\n\nBitte erste Zahl angeben : ");
        scanf ("%d", &zahla);
        printf ("\nBitte zweite Zahl angeben: ");
        scanf ("%d", &zahlb);

        if(rechenart ==49)
            ergebnis=addition(zahla, zahlb);
        if(rechenart ==50)
            ergebnis=subtraktion(zahla, zahlb);
        if(rechenart ==51)
            ergebnis=multiplikation(zahla, zahlb);
        if(rechenart ==52)
            ergebnis=division(zahla, zahlb);

        printf("\nDas Ergebnis lautet: %d",ergebnis);

        /*Nachfrage ob Programm beendet werden soll*/
        printf ("\n\n\nWollen sie eine weitere Rechnung durchfuehren?  J/N\n\n\n");

        /*Einlesen ob Programm beendet werden soll*/
        do{
            end = getch();
        }while (end == 0);

        /*Das Ergebnis wird auf Null zurückgesetzt*/
        ergebnis = 0;
    } return 0;
}
/*Unterprogramm Addition*/
int addition(int zahla, int zahlb) {
return zahla + zahlb;
}
/*Unterprogramm Subtraktion*/
int subtraktion(int zahla, int zahl2) {
return zahla - zahl2;
}
/*Unterprogramm Multiplikation*/
int multiplikation(int zahl1, int zahl2) {
return zahla * zahl2;
}
/*Unterprogramm Division*/
int division(int zahl1, int zahl2) {
return zahla / zahl2;
}

Nach dem Vorschlag von deepthroat werde ich es noch versuchen. Jedoch blick ich das nicht so ganz;). Könnt mir das vlt mal einer ein bissle erklären.

Und nun noch zu eurer Diskusion zwischen C und C++. Ich lerne C da es in dem tutorial stand das es für den Anfang einfacher ist und auserdem kein C++ in dem tutorial erklärt wird :)
 
Zurück