C Taschenrechner

11/20/2013 08:47 [SA]ChilleXx#1
Hallo undzwar hab ich folgendes Problem immer bevor er nachfrägt ob man weiterrechnen will schließt sich dass programm
danke der wos gemacht hat bekommt ne kleine spende :) kompletter code bitte
Code:
#include <stdio.h> //Information zur Standard-Ein / Ausgabe-Bibliothek einfuegen
#include <math.h>  
int main(void) //Anweisungen von Main stehen in geschweiften Klammern

{

double num1, num2, ergebnis; // double= Gleichpunktwert mit doppelter genauigkeit, num1, num2, ergebnis = die Namen die unten bezeichnet werden
char op, janein; // char = ein einzelnes zeichen, op --> operation
int errechnet = 1;
num1 = 0; // gibt am dass num1 = 0
num2 = 0; // gibt am dass num2 = 0
ergebnis = 0;

do{
printf("Taschenrechner von Pascal Geben sie einen Operanden ein:\n");// printf gibt die Zeile aus die Angezeigt wird (frägt nach dem operator)
scanf("%c", &op);
printf("Geben sie die erste Zahl ein:\n");
scanf("%lf", &num1); //suche die dezimalzahl die eingetragen wurde
printf("Geben sie zweite Zahl ein:\n");
scanf("%lf", &num2); //suche die dezimalzahl die eingetragen wurde

switch(op){

case '+': // (+)gibt an dass es addieren soll
ergebnis = num1 + num2;
break;

case '-': // (-)gibt an dass es subtrahieren soll
ergebnis = num1 - num2;
break; //Pause oder verlassen der Schleife


case '*':// (*)gibt an dass es multiplzieren soll 
ergebnis = num1 * num2;
 if (ergebnis > 0) 
break; //Pause oder verlassen der Schleife


case '/': //  (/)gibt an dass es teilen soll 
if(num2 == 0){errechnet = 0;
} else{
ergebnis = num1 / num2;
};
break; //Pause


default:
errechnet = 0;

};

if (errechnet == 1)
printf ("Ergebnis = %.3lf\n", ergebnis);
else if(op == '/')
printf("Fehler: Division durch Null\n"); 
else printf("Falsche Eingabe\n");


printf("wollen sie weiterrechnen(J/n)\n");
scanf("%c", &janein );
if( janein == 'j' )
	errechnet = 1;
else
		errechnet = 0;
}while(errechnet==1);


return 0;// muss immer angegeben werden sonst funktioniert dass Programm nicht

}
11/20/2013 10:28 XxharCs#2
chars in einer if-Anweisung vergleicht man mit zB. der strcmp() Funktion
Code:
...
if(strcmp(janein, 'j') == 0)
{
    errechnet = 1;
}else
{
    errechnet = 0;
}
Ebenfalls kannst du vor return 0; und überall wo sich dein Programm beenden könnte, ein getchar(); verwenden, damit du das programm pausierst bevor es geschlossen wird.

Da du in C codest und du evtl. Platform unabhängigen Code schreiben willst, dann verwende lieber ein return EXIT_SUCCESS; statt return 0; weil nicht jedes Betriebssystem das return 0; also Erfolgreich beendet ansieht. (Nur ein Tipp fürs schöne programmieren)
11/20/2013 12:32 MrSm!th#3
Der Code ist ziemlicher Unsinn und hier wird dir auch keiner einen fertigen Code hinklatschen.
Zudem hast du schon einen Thread zu diesem Thema.

Quote:
Originally Posted by XxharCs View Post
chars in einer if-Anweisung vergleicht man mit zB. der strcmp() Funktion
Code:
...
if(strcmp(janein, 'j') == 0)
{
    errechnet = 1;
}else
{
    errechnet = 0;
}
Nein, tut man nicht.