Problem mit programmierung von Rechner über dev C++
-
Ich habe da ein Problem. Ich habe ein programm für einen Rechner auf dev C++ geschrieben und es funktioniert auch. Nur leider falsch. Auch wenn ich beim Rechenzeichen Minus, Mal oder Geteilt eingebe gibt er mir das Ergebnis von Plus.
Kann mir jemand helfen?Programm:
--------------------------------------------------------------------------------
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>int main (int argc, char *argv[])
{
float z1,z2,k1;
printf ("\n\t Rechner");
printf ("\n Bitte Wert 1 eingeben: ");
scanf ("%f", &z1);printf ("\n Bitte Rechenzeichen eingeben: ");
scanf ("%f", &k1);printf ("\n Bitte Wert 2 eingeben : ");
scanf ("%f", &z2);if (k1='+'){
float m=0;
m= z1 + z2;
printf ("\n Ergebnis: %f\n",m);
printf ("\n");
system ("PAUSE");
return 0;
}if (k1='-'){
float m=0;
m= z1 - z2;
printf ("\n Ergebnis: %f\n",m);
printf ("\n");
system ("PAUSE");
return 0;
}if (k1='*'){
float m=0;
m= z1 * z2;
printf ("\n Ergebnis: %f\n",m);
printf ("\n");
system ("PAUSE");
return 0;
}if (k1='/'){
float m=0;
m= z1 / z2;
printf ("\n Ergebnis: %f\n",m);
printf ("\n");
system ("PAUSE");
return 0;
}system ("PAUSE");
return 0;
}--------------------------------------------------------------------------------
PS: Das system ("PAUSE"); muss an jedem Ende sein, weil er mir sonst das Ergebnis von +-*/ gleichzeitig anzeigt.
-
float z1,z2;
char k1;...
printf ("\n Bitte Rechenzeichen eingeben: ");
scanf ("%c", &k1);
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum C (C89 und C99) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
if (k1='+')
ist eine Zuweisung. Vergleichen tut man in C* mit ==. Compiliere immer mit allen Warnoptionen, dann wärst du nämlich vor diesem Fehler und vor dem den Belli dir genannt hat gewarnt worden und hättest deine Probleme sofort selber lösen können.*: Bis auf eine Zeile die du gar nicht benutzt ist dein Programm C, kein C++.
-
Du hast in den if()-Anweisungen keine Vergleiche, sondern Zuweisungen. Der Vergleich erfolgt mit ==
jannipanni schrieb:
PS: Das system ("PAUSE"); muss an jedem Ende sein, weil er mir sonst das Ergebnis von +-*/ gleichzeitig anzeigt.
Dazu sage ich jetzt mal nichts.
PS: sfds
-
Also
1. Code hübsch formatieren lassen (markieren und dann button C/C++)
2. Du solltest gleich eine Funktion schreiben, die als Übergabeparameter das Rechenzeichen nimmt und als Rückgabe das Ergebniss liefert, so sparst du dir sehr viel Platz und das ist gleich viel praktischer.
Mein Vorschlag:
#include <iostream> using namespace std; float calculate(int a, int b, char Rechenzeichen){ if(Rechenzeichen == '+') return a+b; else if(Rechenzeichen == '-') return a-b; else if(Rechenzeichen == '/') return a/b; else if(Rechenzeichen == '*') return a*b; } int main(void){ cout<<"Rechner \n"<<endl; int Wert_1,Wert_2; char RZeichen; cout<<"Bitte Wert 1 eingeben: "; cin>>Wert_1; cout<<"Bitte Rechenzeichen eingeben: "; cin>>RZeichen; cout<<"Bitte Wert 2 eingeben: "; cin>>Wert_2; cout<<"\nErgebniss: "<<calculate(Wert_1,Wert_2,RZeichen)<<endl; return 0; }
edit: upps, zu spät. Schon verschoben
-
SeppJ schrieb:
*: Bis auf eine Zeile die du gar nicht benutzt ist dein Programm C, kein C++.
Und trotzdem reicht so eine Zeile aus, um meinen Compiler völlig zu verwirren. Ob das C-Forum deshalb an Qualität verliert, weil wir es leid sind, solche Zeilen händisch zu entfernen?
-
µngbd schrieb:
Und trotzdem reicht so eine Zeile aus, um meinen Compiler völlig zu verwirren. Ob das C-Forum deshalb an Qualität verliert, weil wir es leid sind, solche Zeilen händisch zu entfernen?
Und im C++-Forum bekommt er das gleiche zu hören. Der Threadersteller hat nun einmal keine Ahnung, wo der Unterschied ist und was er falsch macht, aber von dem wie es aussieht, möchte er wohl C machen.
-
btw. Dev-C++ ist veraltet
-
Kommt auf die Version an.
Es gibt eine neue Version seit dem 16.07.2011.
Siehe auch http://www.c-plusplus.net/forum/290329
-
DirkB schrieb:
Kommt auf die Version an.
Es gibt eine neue Version seit dem 16.07.2011.
Siehe auch http://www.c-plusplus.net/forum/290329Danke für den Hinweis. Habe die FAQ aktualisiert.
-
Hacker schrieb:
float calculate(int a, int b, char Rechenzeichen){ if(Rechenzeichen == '+') return a+b; else if(Rechenzeichen == '-') return a-b; else if(Rechenzeichen == '/') return a/b; else if(Rechenzeichen == '*') return a*b; }
Diese Funktion arbeitet nicht so, wie du es dir mit dem float-Rückgabewert suggerierst.
-
Wutz schrieb:
Diese Funktion arbeitet nicht so, wie du es dir mit dem float-Rückgabewert suggerierst.
#include <complex> ... float calculate(float a, float b, char Rechenzeichen){ if (Rechenzeichen == '+')return abs(a+b); else if(Rechenzeichen == '-')return abs(a-b); else if(Rechenzeichen == '/')return abs(a/b); else if(Rechenzeichen == '*')return abs(a*b); }
Jetzt schon.
-
Jetzt schon.
Äh, nö...
Hacker schrieb:
#include <complex>
Aja, in C ned.
abs()
is wenn schon instdlib
.h ... aber wozu überhaupt?float a = 1.3f, b = 0.7f; char ch = '+'; printf( "%f %c %f = %f\n", a, ch, b, calculate( a, b, ch ) );
-> 1.300000 + 0.700000 = 1.000000