Taschenrechner



  • Wie lässt man denn eine Zeile frei am Ende?

    //Resultat ausgeben
    printf("%f%c%f=%f",erster_wert,_operator,zweiter_wert,resultat);
    main();
    

    Ich will nämlich eine Endlosschleife!!!

    F4bio< schrieb:
    warum so kompliziert?

    Weil ich es so kompliziert haben möchte 🤡



  • Kann dein Prog auch: 3/6*5?



  • @F4bio: Dein Programm macht überhaupt nicht das was verlangt wäre.
    Das mein Code nicht unbedingt luppenrein ist, ist mir ausserdem klar.-Das muss er aber auch nicht, ich habe das ja ca. vor zwei Jahren als Übung in der Schule programmiert.



  • Ich habe doch nicht gesagt das dein Programm schlecht ist nur es ist doch übersichtlicher für IHN.

    Warum sollte das Programm nicht machen was es verlangt?

    Er sagt doch er will eine Zahl mit einer Zahl addieren und das Ergebnis dann multiplizieren.



  • langeweile schrieb:

    Kann dein Prog auch: 3/6*5?

    Nee, kann seins nicht!!!

    3/6*5=2280,00000000
    


  • F4bio< schrieb:
    Ich habe doch nicht gesagt das dein Programm schlecht ist nur es ist doch übersichtlicher für IHN.

    Warum sollte das Programm nicht machen was es verlangt?

    Er sagt doch er will eine Zahl mit einer Zahl addieren und das Ergebnis dann multiplizieren.

    Ich will es aber gerne in einem Term rechnen!!!

    Sieht schöner aus!!!!!



  • Die Eingabe erfolgt nicht so wie er's möchte.-Das hat er dir eigentlich auch schon geschrieben.

    Ich vermute mal, dass du mit Endlosschleife folgendes meintest:

    #include <stdio.h>
    #include <string.h>
    
    int main(void){
    	char	rechnung[64],_operator;
    	float	erster_wert,zweiter_wert,resultat;
    	int		mult,cnt;
    
    	do{
    		//Rechnung einlesen
    		printf("Rechnung: ");
    		fflush(stdin); gets_s(rechnung,sizeof(rechnung));cnt=(int)strlen(rechnung)-1;
    
    		//Zweiter Operand extrahieren
    		mult=1; zweiter_wert=0;
    		while(rechnung[cnt]>='0'&&rechnung[cnt]<='9'){
    			zweiter_wert+=(rechnung[cnt]&0x0f)*mult;
    			mult*=10; cnt--;
    		}
    
    		//Operator extrahieren
    		_operator=rechnung[cnt]; cnt--;
    
    		//Erster Operand extrahieren
    		mult=1;  erster_wert=0;
    		while(cnt>=0){
    			erster_wert+=(rechnung[cnt]&0x0f)*mult;
    			mult*=10; cnt--;
    		}
    
    		//Resultat berechnen
    		switch(_operator){
    			case '+':
    				resultat=erster_wert+zweiter_wert;
    				break;
    			case '-':
    				resultat=erster_wert-zweiter_wert;
    				break;
    			case '*':
    				resultat=erster_wert*zweiter_wert;
    				break;
    			case '/':
    				resultat=erster_wert/zweiter_wert;
    				break;
    		}
    
    		//Resultat ausgeben
    		printf("%f%c%f=%f\n<Q> -> Quit\n",erster_wert,_operator,zweiter_wert,resultat);
    	}while(getchar()!='Q');
    }
    


  • Er hat auch nicht verlangt das das Programm das kann warum sollte ich dann die funktion einbauen.



  • Danke!!!

    Ich habs FAST so wie ich es möchte:
    (Hab noch einen kleinen Schönheitsfehler korigiert)

    Blablabla
    

    Was muss ich verändern, damit man am Ende (Da wo "Rechnung: " steht) nur noch Q drücken muss, damit das Programm geschlossen wird???



  • s.o.



  • #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(void){
    	char	rechnung[64],_operator;
    	float	erster_wert,zweiter_wert,resultat;
    	int		mult,cnt;
    
    	do{
    		system("CLS");
    		//Rechnung einlesen
    		printf("Rechnung: ");
    		fflush(stdin); gets(rechnung);cnt=(int)strlen(rechnung)-1;
    		//Zweiter Operand extrahieren
    		mult=1; zweiter_wert=0;
    		while(rechnung[cnt]>='0'&&rechnung[cnt]<='9'){
    			zweiter_wert+=(rechnung[cnt]&0x0f)*mult;
    			mult*=10; cnt--;
    		}
    
    		//Operator extrahieren
    		_operator=rechnung[cnt]; cnt--;
    
    		//Erster Operand extrahieren
    		mult=1;  erster_wert=0;
    		while(cnt>=0){
    			erster_wert+=(rechnung[cnt]&0x0f)*mult;
    			mult*=10; cnt--;
    		}
    
    		//Resultat berechnen
    		switch(_operator){
    			case '+':
    				resultat=erster_wert+zweiter_wert;
    				break;
    			case '-':
    				resultat=erster_wert-zweiter_wert;
    				break;
    			case '*':
    				resultat=erster_wert*zweiter_wert;
    				break;
    			case '/':
    				resultat=erster_wert/zweiter_wert;
    				break;
    		}
    
    		//Resultat ausgeben
    		printf("Resultat: %f%c%f=%f\n-----\n<Q>     -> Quit\n<ENTER> -> Next\n< >\b\b"
    			,erster_wert,_operator,zweiter_wert,resultat);
    	}while(getchar()!='Q');
    }
    


  • Dein Taschenrechner rechnet nicht korrekt! Beschäftige dich mit Rekursivem Abstieg und du kriegst ohne Probleme noch: Klammern, Punkt-Vor-Strich in deinen Rechner eingebaut 🙂 Vielleicht ist ja jemand so frei dir dafür ein Beispiel zu posten, denn ich habe gerade leider keins.

    Viel Erfolg!



  • Ich hatte dem mal eine bessere Oberfläche gegeben!!!

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(void)
    {
        char    rechnung[64],_operator;
        float    erster_wert,zweiter_wert,resultat;
        int        mult,cnt;
    
        do{
            system("CLS");
    		printf("Wilkommen bei Rechnomat!!!\n\n\n\n");
            //Rechnung einlesen
    		printf("Bitte geben sie ihren Term ein und bestaetigen mit <Enter>: \n\n");
            fflush(stdin); gets(rechnung);cnt=(int)strlen(rechnung)-1;
            //Zweiter Operand extrahieren
            mult=1; zweiter_wert=0;
            while(rechnung[cnt]>='0'&&rechnung[cnt]<='9'){
                zweiter_wert+=(rechnung[cnt]&0x0f)*mult;
                mult*=10; cnt--;
            }
    
            //Operator extrahieren
            _operator=rechnung[cnt]; cnt--;
    
            //Erster Operand extrahieren
            mult=1;  erster_wert=0;
            while(cnt>=0){
                erster_wert+=(rechnung[cnt]&0x0f)*mult;
                mult*=10; cnt--;
            }
    
            //Resultat berechnen
            switch(_operator){
                case '+':
                    resultat=erster_wert+zweiter_wert;
                    break;
                case '-':
                    resultat=erster_wert-zweiter_wert;
                    break;
                case '*':
                    resultat=erster_wert*zweiter_wert;
                    break;
                case '/':
                    resultat=erster_wert/zweiter_wert;
                    break;
            }
    
            //Resultat ausgeben
    		printf("\nDas Ergebnis von: %f %c %f\nIst gleich: %f\n\n\n\n\n");
    		printf("Druecken sie q zum Beenden.\n");
    		printf("Wenn sie Weitermachen moechten druecken bitte Enter.\n\n",erster_wert,_operator,zweiter_wert,resultat);
        }while(getchar()!='q');
    }
    

Anmelden zum Antworten