[c++] Programm erneut ausführen

H

Hoot

Gast
HI
ich habe folgendes Programm geschrieben, das einen Rechner darstellen soll:
#include <iostream>
using namespace std;

inline float add ( float x , float y); /* Prototypen werden unten näher erläutert */
inline float sub ( float x , float y);
inline float multi ( float x, float y);
inline float divi (float x , float y);

int main()
{
int start = 0;
cout << "Drücken Sie 1 um das Programm zu starten oder 0 um es zu beenden!\n";
cin >> start; // Wahl das Programm laufen zu lassen


if ( start == 1)
{

int choice = 0;
cout << "Welche Berechnung möchten Sie durchführen?\nDrücken Sie:\n 1 für Addition\n 2 für Subtraktion\n 3 für Multiplikatino\n oder\n 4 für Division.\n"; // Wahl der Rechenarten
cin >> choice;

switch (choice)
{
case 1:
{

float number1 = 0;
float number2 = 0;
float value = 0;
cout << "Geben Sie zwei Zahlen ein, die Sie addieren möchten.\n";
cin >> number1;
cin >> number2;
value = add ( number1, number2);
cout << number1 << " + " << number2 << " = " << value;
break;
}
case 2:
{

float number1 = 0;
float number2 = 0;
float value = 0;
cout << "Geben Sie zwei Zahlen ein, die Sie von einander subtrahieren möchten.\n ACHTUNG! ACHTUNG!\nDie zweite Zahl wird von der ersten abgezogen!\n";
cin >> number1;
cin >> number2;
value = sub (number1 , number2);
cout << number2 << " - " << number1 << " = " << value;
break;
}

case 3:
{

float number1 = 0;
float number2 = 0;
float value = 0;
cout << "Geben Sie zwei Zahlen ein, die Sie miteinander multiplizieren möchten.\n";
cin >> number1;
cin >> number2;
value = multi ( number1 , number2);
cout << number1 << " * " << number2 << " = " << value;
break;
}
case 4:
{

float number1 = 0;
float number2 = 0;
float value = 0;
cout << "Geben Sie zwei Zahlen ein, bei denen Sie die erste durch die zweite Teilen möchten.\n";
cin >> number1;
cin >> number2;
value = divi ( number1 , number2);
cout << number1 << " / " << number2 << " = " << value;
break;
}
default:
{

cout << "Ungültige Eingabe!\n";
break;
}
}


if ( start == 0)
{
cout << "Programm beendet!\n";
return 0;
}

return 0;
}

}

float add ( float x, float y) /* Funktionen zu den Prototypen oben */
{
return ( x + y);
}

float sub ( float x, float y)
{
return ( x - y);
}

float mutli ( float x, float y)
{
return ( x * y);
}

float divi ( float x, float y)
{
return ( x / y);
}


doch nun 2 Fragen:
1. wie mache ich es damit man das Programm erneut ausführen kann ohne es per .exe neu starten zu müssen? (passsierte mir bei "hello.cpp")
2. wie kann ich das Programm bei visual c++ zum laufen bringen?( kompilieren geht ohne probleme und er entdeckt auch keine Fehler aber wen ich es per "Erstellen" erstellen will kommt:
1>mainprogram.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""float __cdecl multi(float,float)" (?multi@@YAMMM@Z)" in Funktion "_main".
1>E:\Programmierung\Meine Projekte\Rechner\Debug\Rechner.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.

was hab ich da wieder falsch gemacht??^^

sorry für die vielen threads in letzter zeit hab aber viel fragen :evillol:
mfg Hoot
 
Zuletzt bearbeitet:
AW: [c++] Programm erneut ausführen??

Zu Fehler Nr. 2:

Du rufst die Multifkt. im Main auf, hast sie aber bei der Definition "Mutli" genannt, folglichermaßen findet er die Multi-Fkt. im Main nicht und gibt dir die Fehler aus (also einfacher Schreibfehler).

Zum Wiederholen koenntest du um das ganze eine while-Schleife legen, die solange durchläuft, bis der Benutzer ein "abbrechen" eingibt, also müsstest du jedesmal das menü ausgeben lassen, wenn du eine berechnung durchgeführt hast und im menü noch den punkt "abbrechen" mit angeben.

PS: verwende statt ä und ü "ae" und "ue". die konsole gibt kein ä und kein ü aus.
 
Zuletzt bearbeitet:
AW: [c++] Programm erneut ausführen??

hmm danke :) so ein kleiner fehler^^ so großes dilemma....
kannst du mir mit für die while-schleifen-lösung ein simples beispiel geben??
weil ich weiß nicht wogenau ich sie einfügen soll
 
AW: [c++] Programm erneut ausführen??

Code:
int main(void)
{
int durchlauf=1;
while(durchlauf)
{
.
.
.
 cout << "Welche Berechnung möchten Sie durchführen?\nDrücken Sie:\n 1 für Addition\n 2 für Subtraktion\n 3 für Multiplikatino\n oder\n 4 für Division.\n 5 fuer ABBRECHEN\n"; // Wahl der Rechenarten
cin >> choice;

switch (choice)
.
.
.
case 5:
{
durchlauf = 0;
break;
}
.
.
.
Dürfte so funktionieren, musst halt evtl. rumprobieren.

EDIT: natürlich brauchst du die Zeile mit "Durchführung oder Abbrechen" dann nicht mehr.
 
Zuletzt bearbeitet:
AW: [c++] Programm erneut ausführen??

while (choice!=5)
{
cout << case 1-4 blabla;
cout << case 5: end program;
cin >> choice;

switch (choice)
{
case 1: {...}break;
case 2: {...}break;
case 3: {...}break;
case 4: {...}break;
case 5: break;
}
}
 
AW: [c++] Programm erneut ausführen??

ok danke euch beiden :D werd mich dann mal ans probieren machen :D
 
AW: [c++] Programm erneut ausführen??

Als Beispiel für das erneute Ausführen:

statt:

int main()
{
int start = 0;
cout << "Drücken Sie 1 um das Programm zu starten oder 0 um es zu beenden!\n";
cin >> start; // Wahl das Programm laufen zu lassen


if ( start == 1)
{

...
}
könntest du folgendes machen:

Code:
[COLOR=Blue] int main()
{
  char start = '0';[/COLOR][COLOR=Blue]
  cout << "Drücken Sie 1 um das Programm zu starten oder eine beliebige andere Taste, um es zu beenden!\n";
  cin >> start; [COLOR=Green]// Wahl das Programm laufen zu lassen[/COLOR][/COLOR]
[COLOR=Blue]
  do {
    ...[/COLOR][COLOR=Blue]
    cout << "Drücken Sie 1 um das Programm nochmal zu starten oder eine beliebige andere Taste, um es zu beenden!\n";
    cin >> start; [COLOR=Green]// Wahl das Programm laufen zu lassen[/COLOR]
} while (start == '1')[/COLOR];
Dadurch fragst erstmal, ob es überhaupt einmal durchlaufen soll. Nach jedem Durchlauf fragst du dann erneut
 
AW: [c++] Programm erneut ausführen??

Code:
#include <iostream>
using namespace std;

inline float add ( float x , float y); /* Prototypen werden unten näher erläutert */
inline float sub ( float x , float y);
inline float multi ( float x, float y);
inline float divi (float x , float y);

int main()
{	
	int start = 0, choice = 0;
	float number1 = 0;
	float number2 = 0;
	float value = 0;
	
	do
	{

	
	cout << "Drücken Sie 1 um das Programm zu starten oder 0 um es zu beenden!\n";
	cin >> start; // Wahl das Programm laufen zu lassen


	if ( start == 1)
	{
		cout << "Welche Berechnung möchten Sie durchführen?\nDrücken Sie:\n 1 für Addition\n 2 für Subtraktion\n 3 für Multiplikatino\n oder\n 4 für Division.\n"; // Wahl der Rechenarten
		cin >> choice;

		switch (choice)
		{
		case 1:
		{
		cout << "Geben Sie zwei Zahlen ein, die Sie addieren möchten.\n";
		cin >> number1;
		cin >> number2;
		value = add ( number1, number2);
		cout << number1 << " + " << number2 << " = " << value;
		break;
		}
		case 2:
		{
		cout << "Geben Sie zwei Zahlen ein, die Sie von einander subtrahieren möchten.\n ACHTUNG! ACHTUNG!\nDie zweite Zahl wird von der ersten abgezogen!\n";
		cin >> number1;
		cin >> number2;
		value = sub (number1 , number2);
		cout << number2 << " - " << number1 << " = " << value;
		break;
		}

		case 3:
		{
		cout << "Geben Sie zwei Zahlen ein, die Sie miteinander multiplizieren möchten.\n";
		cin >> number1;
		cin >> number2;
		value = multi ( number1 , number2);
		cout << number1 << " * " << number2 << " = " << value;
		break;
		}
		case 4:
		{
		cout << "Geben Sie zwei Zahlen ein, bei denen Sie die erste durch die zweite Teilen möchten.\n";
		cin >> number1;
		cin >> number2;
		value = divi ( number1 , number2);
		cout << number1 << " / " << number2 << " = " << value;
		break;
		}
		default:
		{
		cout << "Ungültige Eingabe!\n";
		break;
		}
		}
	}
	if ( start == 0)
	{
	cout << "Programm beendet!\n";
	return 0;
	}
	}while(start == 1);

return (0);
}



float add ( float x, float y) /* Funktionen zu den Prototypen oben */
{
return ( x + y);
}

float sub ( float x, float y)
{
return ( x - y);
}

float multi ( float x, float y)
{
return ( x * y);
}

float divi ( float x, float y)
{
return ( x / y);
}
 
Zuletzt bearbeitet:
AW: [c++] Programm erneut ausführen??

also ich habs jetz mal so gmacht:
int main()
{
int start;
start = 1;


while ( start == 1)
{
int choice = 0;........

das lässt sich auch kompilieren und ohne probleme erstellen.
die anderen vorschläge sind wahrscheinlich auch gut, aber wie manche wissen bin ich noch recht neu auf dem bereich und daher kenn ich die anderen lösungsvorschläge nicht^^
solche sachen mit char (usw....) kommen glaub erst später im buch und daher möcht ich mir zuerst mal die ersten kapitel einbläuen.
( wenn ich ein projet erstelle und eine klasse hinzufüge, und später quellcode mit einbringe [in dem projekt] erscheint das nicht in der projekt mappe und daher kann ich die header datei auch nicht einbinden wie geht das?

nun stellt sich aber noch folgendes prob:
die exe lässt sich erstellen und auch ausführen jedoch beendet sie sich automatisch noch vor der ergebnis ausgabe. ist bei der hello datei genauso?
liegt es daran, dass ich die visual express edition nur gedownloadet und nicht gekauft habe?
oder ist da was falsch eingstellt etc? *grübel*
hoot
 
AW: [c++] Programm erneut ausführen??

Hoot schrieb:
nun stellt sich aber noch folgendes prob:
die exe lässt sich erstellen und auch ausführen jedoch beendet sie sich automatisch noch vor der ergebnis ausgabe. ist bei der hello datei genauso?
liegt es daran, dass ich die visual express edition nur gedownloadet und nicht gekauft habe?
oder ist da was falsch eingstellt etc? *grübel*
hoot
Öffnet sich das Kommandozeilenfenster erst, wenn du die .exe ausführst, oder startest du sie aus einer laufenden Kommandozeile?

Zum testen kannst du ganz am Ende der main-Funktion mal
Code:
System("pause");
einfügen.
Dadurch wirst du am Ende nochmal aufgefordert, eine Taste zu drücken, so dass du Bildschirmausgaben in Ruhe durchlesen kannst.
 
also bei dem rechenprogramm gehts jetzt, da man ja erst aussuchen muss, mach ich das ganze aber ohne die do..while schleife kann ich nach dem start der rechner.exe nur die rechenart auswählen, 2 zahlen eingeben und nach dem eingeben der 2. zahl schließt sich das fenster von selbst.

aber mit dem system("pause"); gehts
muss ich halt vorher die return anweisung entfernen.
so funzt das doch dann immer?
 
Die Funktion System führt einfach eine beliebige ausführbare Datei aus. Man kann auch sagen System("dir C:\Windows"). Dann führt er den Kommandozeilenbefehl aus.

Mach mal folgendes:

Start->Ausführen->cmd

Dann wechselst du mit z.B. "cd Projekte" in das Verzeichnis, in die .exe des Rechenprogramms liegt. Führe diese dann aus.
Dann nimm die Zeile "System("pause");" aus dem Programm wieder raus und führ es aus der Kommandozeile das Programm nochmal aus. Du wirst sehen, dass dein Programm prinzipiell auch ohne diese Zeile korrekt funktioniert.
 
Nur als kleine Anmerkung:

Code:
inline float add ( float x , float y); /* Prototypen werden unten nher erlutert */
inline float sub ( float x , float y);
inline float multi ( float x, float y);
inline float divi (float x , float y);

Das inline ist an dieser Stelle wirkungslos, da das nur forward-Deklarationen sind. Damit die Funktion ge'inline't werden kann, muss ihre Definition zum Zeitpunkt des Aufrufs schon bekannt sein.

@MastaZulu: Das mit den Umlauten geht durchaus, allerdings muss man dafür das richtige Locale im Stream installieren.
 
@padam: Nicht immer. Kommt darauf an, mit welchem Zeichensatz es ausgeführt wird. Bei Ansi sind nur die Zeichen 0 bis 127 festgelegt. Alle anderen sind Zeichensatz-abhängig.
 
Zurück
Oben