Menü für ein programm



  • hi ich habe ein programm geschrieben bekomme aber kein menü hin kann mir da einer helfen??
    das ist ein programm mit dem man komplexe zahlen addieren subtrahieren multiplizieren und dividieren kann. das menü muss beinhalten: es muss am anfang zeigen was man alles machen kann(multiplizieren, addieren und so) und ich muss zwischen den einzelnen funtkionen(rechenarten wählen können).
    also z.b. wenn ich die 1 drücke dann kann man addieren, wenn ich die 2 drücke dann kann man subtrahieren und so weiter.
    hier mein programm:

    #include <iostream>  
    #include "komplextyp.h"
    #include "komplexe_rechenarten.h"
    
    int main(){
    	complex komp1,komp2,ergebnis;
    	komp1.einlesen();
    	komp2.einlesen();
    
    	ergebnis.addieren(komp1,komp2);
    	ergebnis.subtrahieren(komp1,komp2);
    	ergebnis.multiplizieren(komp1,komp2);
    	ergebnis.dividieren(komp1,komp2);
    
      return 0;
    }
    

    und hier die headerdatei:

    #ifndef _KOMPLEXR_H_  
    #define _KOMPLEXR_H_
    #include "komplextyp.h"
    
    class complex{
    
      private: 
    	  float re, im;
          float betrag, ergebnis;
    
      public:
    	  void einlesen(){
    
    		  printf("Bitte geben sie Re und Im ein:\n");
    		  scanf("%f %f",&re, &im);
    
    	  }
    
    	  void addieren(complex za, complex zb){
    		  printf("addition ihrer zahlen:\n");
              re = za.re + zb.re; 
              im = za.im + zb.im;
              printf("%f ",re);
              printf("%fj\n",im);
    			};
    
    	void subtrahieren(complex za, complex zb){
    		printf("subtraktion ihrer zahlen:\n");
            re = za.re - zb.re; 
            im = za.im - zb.im;
            printf("%f ",re);
            printf("%fj\n",im);
    		};
    
    	void multiplizieren(complex za, complex zb){
    		printf("multiplikation ihrer zahlen:\n");
            re=(za.re*zb.re)-(za.im*zb.im);
            im=(za.re*zb.im)+(za.im*zb.re);
            printf("%f ",re);
            printf("%fj\n",im);
    	};
    
    	void dividieren(complex za, complex zb){
    		printf("division ihrer zahlen:\n");
    		float betrag =((zb.im * zb.im) + (zb.re * zb.re));
    		re = ((za.re * zb.re) + (za.im * zb.im)) / betrag;
    		im = ((za.im * zb.re) - (za.re * zb.im)) / betrag;
    		printf("%f ",re);
     	    printf("%fj\n",im);
    		};
    
    #endif
    };
    


  • Abfragen kannst du die einzelnen Menüpunkte z.B. per cin.get() - und anschließend in einer switch()-case Anweisung entsprechend auswählen, was du machen willst.

    (btw, in C++ solltest du eher per cin deine Werte einlesen als per scanf())



  • Hallo,

    geht ganz einfach:

    char menu() {
      char c;
      cout<<"<1> Addieren\n"
          <<"<2> Subtrahieren\n"  //usw.
          <<"<3> Beenden\n";
      cin>>c;
      return c;
    };
    
    //in der main:
    
    char c;
    do {
      c = menu();
    
      //Entscheiden, was zu tun ist...
    
    } while (c != '3');
    

    MfG

    GPC



  • #include <iostream>  
    #include "komplextyp.h"
    #include "komplexe_rechenarten.h"
    
    using namespace std;
    
    int main(){
        complex komp1,komp2,ergebnis;
        int a;
        cout << "was man machen kann";
        while(true)
        {
        //hier könnte man das auch machen
        cin >> a;
        if(!a)
            return 0;
        komp1.einlesen();
        komp2.einlesen();
        switch(a)
        {
        case 1:{
        ergebnis.addieren(komp1,komp2);
        break;}
        case 2:{
        ergebnis.subtrahieren(komp1,komp2);
        break;}
        case 3:{
        ergebnis.multiplizieren(komp1,komp2);
        break;}
        case 4:{
        ergebnis.dividieren(komp1,komp2);
        break;}
        }
    }
    }
    

    //0 beendet das Programm

    Wobie befehle wie "add", "sub", ... sicher schöner wären.
    Und in der Klasse würden Operatoren besser aussehen.

    mfg
    Apophis



  • danke vielmals für die hilfe


Log in to reply