Hilfe! ich finde den Fehler nicht (c++ Taschenrechner)

DarkscrollZ

New member
Code:
// epic-rechner.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//

#include "stdafx.h"
/*
// stdafx.h : Includedatei für Standardsystem-Includedateien
// oder häufig verwendete projektspezifische Includedateien,
// die nur in unregelmäßigen Abständen geändert werden.
//

#pragma once

#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
#include <stdio.h>
#include <tchar.h>


// TODO: Hier auf zusätzliche Header, die das Programm erfordert, verweisen.
*/

#include "BREAK.h" 
/*#pragma once

#include <Windows.h>
void BREAK(int dauer)
{
	if (dauer <= 0)
	{
		int i=0;
		while(i==0)
		{
			Sleep(100000000);
		}
	}
	else
	{
		Sleep(dauer);
	}
}
*/
#include <iostream>
#include <string>
#include <Windows.h>
#include <math.h>

using namespace std;


void Print(char text[1000], int sleep) //gibt "text" aus (standardgeschwindigkeit 75)
{
	//char text[1000];
	//int sleep;

	if (sleep <= 0)
	{
		sleep=75; //standardgeschwindigkeit
	}

	for (int i=0; text[i]; i++)
	{
		cout << text[i];
		Sleep(sleep);
	}
}
string Calcrechenzeichen(string rz_old)
{
	string rz = 0;
	if (rz_old == "*")
	{
	 rz == "*";
	}
	if (rz_old == "mal")
	{
		rz == "*";
	}
	if (rz_old == "/")
	{
		rz =="/";
	}
	if (rz_old == "geteiltdurch")
	{
		rz =="/";
	}
	if (rz_old == "geteilt durch")
	{
		rz =="/";
	}
	/*
		if (rz_old == "")          (sonderzeichen)
	{
		rz =="/";                  
	}
		if (rz_old == "")          (sonderzeichen)
	{
		rz =="*";
	}
	*/
		if (rz_old == "plus")
	{
		rz =="+";
	}
		if (rz_old == "+")
	{
		rz =="+";
	}
		if (rz_old == "-")
	{
		rz =="-";
	}
		if (rz_old == "minus")
	{
		rz =="-";
	}
	/*	
		if (rz_old == "hoch")
	{
		rz =="^";
	}
		if (rz_old == "^")
	{
		rz =="^";
	}
		if (rz_old == "wurzel")
	{
		rz =="^0.5";
	}
	if (rz_old == "")         (sonderzeichen)
	{                                
	rz =="^0.5";
	}
	*/
		return(rz);
}
double Hoch(int z1)
{
	int halb = 1/2;
	z1 = z1 ^ halb;
	return(z1);
}
long double calcall(int z1, string rz, int z2)
{
	long double Ergebnis;
	/*if (rz == "^0.5")
	{
		Ergebnis = Hoch(z1);
	}*/
	if(rz == "*")
	{
		Ergebnis = z1 * z2;
	}
	if(rz == "-")
	{
		Ergebnis = z1 - z2;
	}
	if(rz == "+")
	{
		Ergebnis = z1 + z2;
	}
	/*if(rz == "^")
	{
		Ergebnis = z1 ^ z2;
	}*/
	if(rz == "/")
	{
		Ergebnis = z1 / z2;
	}
	else
	{
		string ret = "return 0;";
		cout << rz <<"ist kein Gültiges Rechenzeichen.";
	}

	return Ergebnis;
}

int _tmain(int argc, _TCHAR* argv[])
{
	int zahl1 =0;
	int zahl2 =0;
	string rechenzeichen =0;
	system("color 41"); //Konsolenfarbe (hinten: dunkelrot vorne: blau)
	
	Print("\n\n  Das ist mein neuer Taschenrechner!\n  Du kannst hier plus, mal, minus und geteilt durch rechnen!",0); //startaussage
	
	Print("\n  Erste Zahl: ",0);
	cin >> zahl1;
	Print("\n  Rechenzeichen (oder in Worten): ",0);
	cin >> rechenzeichen;
	if (Calcrechenzeichen(rechenzeichen) != "^0.5")
	{
		Print("\n  Zweite Zahl: ",0);
		cin >> zahl2;
	}

	Print("\n  Das Ergebnis lautet: ",0);
		cout << calcall(zahl1, Calcrechenzeichen(rechenzeichen), zahl2);
	return 0;
}

Die Headerdateien hab ich zusätzlich in kommentare Geschrieben

Fehlermeldung:
[EVIL]---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Assertion Failed!

Program: ...grammierung und fun\c++\rechner_epic2\Debug\rechner_epic2.exe
File: c:\program files\microsoft visual studio 10.0\vc\include\xstring
Line: 930

Expression: invalid null pointer

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)
---------------------------
Abbrechen Wiederholen Ignorieren
---------------------------
[/EVIL]

Edit: Fehlermeldung beim debugging:
[EVIL]
Unbehandelte Ausnahme bei 0x5de2d540 (msvcr100d.dll) in rechner_epic2.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000.
[/EVIL]

Edit2: hier habe ich auch noch die Ausgabe vom compiler: :confused:
[EVIL]"rechner_epic2.exe": "C:\Users\Jasin\programmierung und fun\c++\rechner_epic2\Debug\rechner_epic2.exe" geladen, Symbole wurden geladen.
"rechner_epic2.exe": "C:\Windows\System32\ntdll.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\kernel32.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\KernelBase.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\msvcp100d.dll" geladen, Symbole wurden geladen.
"rechner_epic2.exe": "C:\Windows\System32\msvcr100d.dll" geladen, Symbole wurden geladen.
"rechner_epic2.exe": "C:\Windows\System32\user32.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\gdi32.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\lpk.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\usp10.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\msvcrt.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\imm32.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\msctf.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\advapi32.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\sechost.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\rpcrt4.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\uxtheme.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Program Files\Common Files\microsoft shared\ink\tiptsf.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\ole32.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\oleaut32.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\version.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\dwmapi.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\cryptbase.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\clbcatq.dll" geladen, Cannot find or open the PDB file
"rechner_epic2.exe": "C:\Windows\System32\oleacc.dll" geladen, Cannot find or open the PDB file
Das Programm "[5748] rechner_epic2.exe: Systemeigen" wurde mit Code 3 (0x3) beendet.
[/EVIL]



Thx im Vorraus :)
mfg DarkscrollZ
 
"Den" Fehler is gut.

1. Verwechsle nicht 0-terminierte C-String aka char* oder char[] mit einem string Objekt. Will heißen ersetze 'string foo = 0' mit 'string foo = ""'.

2. Vergleiche nicht Pointer miteinander sondern das worauf sie zeigen. Will heißen ersetze 'foo == "foo"' durch 'foo.compare("foo")' in den if Konditionen.

3. Verwechsle nicht Vergleich mit Zuweisung. Will heißen ersetze 'foo == "foo"' durch 'foo = "foo"' in den if Bodies.

4. Weise nicht inkompatible Typen einander zu (bei dir verwandt mit 1., weil du C-Strings an string pointer zuweist). Will heißen ersetze 'foo = "foo"' durch 'foo = string("foo")'.

5. Wenn nicht grad geteilt wird, wird der else Zweig in dem calcall immer ausgeführt.

Nach abarbeiten der Liste sollte das Programm wenigstens halbwegs vernünftig laufen, auch wenn der Stil nicht gerade nett ist. ;-)
 

Beliebte Schlagwörter

Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.

Zurück
Oben Unten