Problem mit Aufgabe



  • Hallo Zusammen!
    Ich bin neu hier und wollte mich kurz vorstellen.
    Ich studiere Maschinenbau und habe ein paar Probleme mit dem Programmieren.
    Ich Programmiere mit Xcode auf meinem Macbook.

    Mein Programm soll können:

    Erstellen Sie ein C++ Programm, in dem das Makro C++ MIN2() definiert und getestet wird. Das Makro berechnet das Minimum von zwei als Argumente übergebenen Zahlen.
    Verwenden Sie Sie anschließend das Makro Min2() um ein neues Makro MIN3() zu definieren, das das Minimum von drei übergebenen Zahlen berechnet. Testen Sie auch das Makro MIN3().

    Mein Programm bislang:

    #include <iostream>
    #include <stdio.h>
    #include <cmath>
    #include <string>
    #include <fstream>
    #include <ctype.h>
    #include <wchar.h>
    #include <iomanip>
    #include <time.h>
    #include <cstdlib>
    #include <ios>
    #include <math.h>
    using namespace std;

    double Zahl1,Zahl2,Zahl3

    #define Zahl1 1
    #define Zahl2 2
    #define Zahl3 3
    #define MIN2(Zahl1,Zahl2) ((Zahl1)<(Zahl2)? (Zahl1) : (Zahl2))
    #define MIN3(MIN2,Zahl3) ((MIN2)<(Zahl3)? (MIN2) : (Zahl3))
    void main()
    {
    cout<<Zahl1<<endl;
    cout<<Zahl2<<endl;
    cout<<MIN2(Zahl1,Zahl2)<<endl;
    cout<<Zahl3<<endl;
    cout<<MIN3(MIN2(Zahl1,Zahl2),Zahl3)<<endl;
    }

    Bekomme irgendwie ne Fehlermeldung die ich nicht beseitigen kann.
    Ist das Programm so okay?
    Ich bin sehr dankbar für jede Hilfe!!!
    Grüße



  • Zu allererst: bitte verwende code-Tags!

    Dann bitte immer (!) die Fehlermeldung posten, auch wenn sie dir nichts sagt.

    Zur Aufgabe: Für was die ganzen includes? Du brauchst eigentlich nur iostream...
    Dann stimmt noch was mit deinen Macro-Argumenten nicht... Du sollte keine fix definierten Zahlen (#define Zahl1 usw., was sowieso nicht funktioniert und zu (einer) deiner Fehlermeldung führt) verwenden, sondern es sollen beliebige Zahlen übergeben werden können.
    Dann stimmt MIN3 nocht nicht, da werden ja 3 Zahlen erwartet, das Makro erlaubt aber nur 2.

    Lies dir am besten nochmal das ganze Kapitel durch, da sollte das eigentlich drin stehen.



  • Jo6u schrieb:

    double Zahl1,Zahl2,Zahl3

    da fehlt das ';' am Ende der Zeile



  • Jo6u schrieb:

    Ist das Programm so okay?

    Nein - besser ist:

    #include <iostream> // nur die Includes, die man braucht
    using namespace std;
    
    #define MIN2(Zahl1,Zahl2) ((Zahl1)<(Zahl2)? (Zahl1) : (Zahl2))
    #define MIN3(MIN2,Zahl3) ((MIN2)<(Zahl3)? (MIN2) : (Zahl3)) // das ist noch suboptimal
    
    int main() // return-Code ist 'int'
    {
        double Zahl1 = 1,Zahl2 = 2,Zahl3 = 3; // so lokal wie möglich definieren; gleich initialisieren; keine #define's dafür benutzen
    
        cout<<Zahl1<<endl;
        cout<<Zahl2<<endl;
        cout<<MIN2(Zahl1,Zahl2)<<endl;
        cout<<Zahl3<<endl;
        cout<<MIN3(MIN2(Zahl1,Zahl2),Zahl3)<<endl; // (s.o. MIN3)
    }
    


  • [cpp]
    #include <iostream>
    #include <math.h>
    using namespace std;

    double Zahl1,Zahl2,Zahl3;

    #define Zahl1 1
    #define Zahl2 2
    #define Zahl3 3
    #define MIN2(Zahl1,Zahl2) ((Zahl1)<(Zahl2)? (Zahl1) : (Zahl2))
    #define MIN3(MIN2,Zahl3) ((MIN2)<(Zahl3)? (MIN2) : (Zahl3))
    int main(int)
    {
    cout<<Zahl1<<endl;
    cout<<Zahl2<<endl;
    cout<<MIN2(Zahl1,Zahl2)<<endl;
    cout<<Zahl3<<endl;
    cout<<MIN3(MIN2(Zahl1,Zahl2),Zahl3)<<endl;
    }

    Programm läuft so aber das Ausgabefenster bleibt leer.
    Sorry wegen der Form weiß nicht genau wie das gehen soll...



  • Ich denke, dass das verlangt wird:

    #include <iostream>
    
    #define MIN2(a, b) (a < b ? a : b)
    #define MIN3(a, b, c) (MIN2(a, b) < c ? MIN2(a, b) : c)
    
    int main()
    {
    	int Zahl1 = 1, Zahl2 = 2, Zahl3 = 3;
    
    	std::cout << "Zahl1: " << Zahl1 << std::endl;
    	std::cout << "Zahl2: " << Zahl2 << std::endl;
    	std::cout << "Zahl3: " << Zahl3 << std::endl;
    
    	std::cout << MIN2(Zahl1, Zahl2) << std::endl;
    	std::cout << MIN3(Zahl1, Zahl2, Zahl3) << std::endl;
    
    	return 0;
    }
    


  • Konnte es noch weiter verkürzen:

    #define MIN3(a, b, c) (MIN2(MIN2(a, b), c))
    

Anmelden zum Antworten