char zu int

mhribernik

Erfahrenes Mitglied
Hallo Ihr da draußen. :p

Ich habe vor einigen Minuten mein erstes "primitives" Programm in ANSII C++ geschrieben. Ich bin noch Anfänger in C++ und hab eine Frage. Was muss ich machen wenn mir mein Compiler folgende Fehlermeldungen ausspuckt:

Cpp1.cpp(28) : error C2446: '==' : Keine Konvertierung von 'char *' in 'int' Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat

Cpp1.cpp(28) : error C2040: '==' : 'int' unterscheidet sich von 'char [8]' in bezug auf die Anzahl vorgenommener Dereferenzierungen

Was mach ich falsch? Wie muss ich vorgehen um diesen Fehler zu beseitigen?



PS: Hier noch ein Teil meines Codes:

Code:
if (operation == "Addieren")
{
  cout << "\n\nBitte geben Sie die zu addierenden Zahlen ein: ";
  int zahl1, zahl2; 
  cin >> zahl1;
  cin >> zahl2;
  int produkt = addition(int zahl1, int zahl2);
  cout << "Das Ergebniss lautet: " << produkt << "\n\n";
}
 
Von welchem Datentyp ist den die Variable operation?
Wenn ich mir die Fehlermeldungen angucke wuerde ich fast auf int tippen.
Welche Zeile ist den Zeile 28?
 
Zeile 28 ist folgende:

Code:
if (operation == "Addieren")

Ja, operation ist vom Typ int.
Was muss ich denn machen?
 
Es waere vielleicht nützlich die andere Zeilen zu kennen, zumindest was vor der Abfrage noch so passiert, aufjedenfall ist das Problem das du versuchst einen int also eine Zahl mit der Zeichenkette "Addieren" zu vergleichen.
 
Hoppla, operation ist vom Typ char.

Hier der gesammt Quellcode:

Hoffe ihr könnt mir helfen.

Code:
#include <iostream.h>



bool pass_valid (int);
int addition (int, int);




int main()
{
	int x;
	bool weiterleitung;
	cout << "In main\n\n";
	cout << "Bitte geben sie das Passwort ein:";
	cin >> x;
	weiterleitung = pass_valid(x);
	if (weiterleitung == 1)
	{
		while (weiterleitung == 1)
		{
			char aktion;
			cout << "Bitte Aktion eingeben: ";
			cin >> aktion;


			if (aktion == "Rechner")
			{
				bool rechner = 1;
				while (rechner == 1)
				{
					cout << "\n\nWelche operation soll durchgeführt werden?";
					char operation;
					cin >> operation;
	
					if (operation == "Addieren")
					{
						cout << "\n\nBitte geben Sie die zu addierenden Zahlen ein: ";
						int zahl1, zahl2;
						cin >> zahl1;
						cin >> zahl2;
						int produkt;
						produkt = addition(int zahl1, int zahl2);
						cout << "Das Ergebniss lautet: " << produkt << "\n\n";
					}
	
					if (operation == "Subtrahieren")
					{
						cout << "in subtrahieren\n\n";
					}
	
					if (operation == "Multiplizieren")
					{
						cout << "in multiplizieren\n\n";
					}

					if (operation == "Dividieren")
					{
						cout << "in dividieren\n\n";
					}

					if (operation == "Quadrieren")
					{
						cout << "in quadrieren\n\n";
					}

					if (operation == "Quadretwurzel")
					{
						cout << "in quadratwurzel\n\n";
					}

					if (operation == "Programm Beenden")
					{
						cout << "Programm wird beendet...\n\n";
						rechner = o;
					}
				}
			}

				
			if (aktion == "Aufgaben")
			{
				cout << "aufgaben\n\n";
			}
			if (aktion == "Programm beenden")
			{
				cout << "Programm wird beendet...\n\n";
				weiterleitung = 0;
			}
		}
	}
}





bool pass_valid (int y)
{
	int pass_ok = 12345;
	bool x;
	if (y == pass_ok)
	{
		cout << "Login gelungen!\n\n\n";
		x = 1;
	}
	else
	{
		cout << "Login fehlgeschlagen!\n\n\n";
		x = 0;
	}
	return x;
}

int addition (int x, int y)
{
	return x + y;
}
 
benutz lieber strings
Das Problem ist auch char aktion reserviert eigneltihc nur speicher fuer ein Zeichen


Code:
#include <iostream>
#include <string>
using namespace std;



bool pass_valid (int);
int addition (int, int);




int main()
{
	int x;
	bool weiterleitung;
	cout << "In main\n\n";
	cout << "Bitte geben sie das Passwort ein:";
	cin >> x;
	weiterleitung = pass_valid(x);
	if (weiterleitung == 1)
	{
		while (weiterleitung == 1)
		{
			string aktion;
			cout << "Bitte Aktion eingeben: ";
			cin >> aktion;


			if (aktion == "Rechner")
			{
				bool rechner = 1;
				while (rechner == 1)
				{
					cout << "\n\nWelche operation soll durchgeführt werden?";
					string operation;
					cin >> operation;
	
					if (operation == "Addieren")
					{
						cout << "\n\nBitte geben Sie die zu addierenden Zahlen ein: ";
						int zahl1, zahl2;
						cin >> zahl1;
						cin >> zahl2;
						int produkt;
						produkt = addition(zahl1, zahl2);
						cout << "Das Ergebniss lautet: " << produkt << "\n\n";
					}
	
					if (operation == "Subtrahieren")
					{
						cout << "in subtrahieren\n\n";
					}
	
					if (operation == "Multiplizieren")
					{
						cout << "in multiplizieren\n\n";
					}

					if (operation == "Dividieren")
					{
						cout << "in dividieren\n\n";
					}

					if (operation == "Quadrieren")
					{
						cout << "in quadrieren\n\n";
					}

					if (operation == "Quadretwurzel")
					{
						cout << "in quadratwurzel\n\n";
					}

					if (operation == "Programm Beenden")
					{
						cout << "Programm wird beendet...\n\n";
						rechner = 0;
					}
				}
			}

				
			if (aktion == "Aufgaben")
			{
				cout << "aufgaben\n\n";
			}
			if (aktion == "Programm beenden")
			{
				cout << "Programm wird beendet...\n\n";
				weiterleitung = 0;
			}
		}
	}
}





bool pass_valid (int y)
{
	int pass_ok = 12345;
	bool x;
	if (y == pass_ok)
	{
		cout << "Login gelungen!\n\n\n";
		x = 1;
	}
	else
	{
		cout << "Login fehlgeschlagen!\n\n\n";
		x = 0;
	}
	return x;
}

int addition (int x, int y)
{
	return x + y;
}

Ist jetzt nur grob gemahct weil ich gerade nicht mehr viel Zeit habe, iich hoffe mal das ich ncihts uebersehen habe.
 
Jea. Danke dir. Es klappt nun. Eine Frage hätte ich noch. Wie viel Zeichen kann string speichern? Sonderzeichen weden nicht unterstützt oder?
 
Hm Sonderzeichen hab ich nie wirklich ausprobiert, musst du halt selber machen und ob es da ein offizilles maximum gibt weiss ich gar nicht wuerde mich gerade auch mal interessieren.
 
moin


Da is man mal 5 Minuten weg....

Also
Code:
if (operation == "Addieren")
geht so natürlich nicht.
Mach
Code:
if (strcmp(operation, "Addieren") == 0)

Jea. Danke dir. Es klappt nun. Eine Frage hätte ich noch. ....... Sonderzeichen weden nicht unterstützt oder?
Klar kann man die darin speichern, du kannst alles darin speichern was in der ASCII Tabelle steht.

Wie viel Zeichen kann string speichern?
Theoretisch soviele bis der Speicher voll ist, das ist jetzt aber sehr "frei" ausgedrückt.


mfg
umbrasaxum
 
Strings werden dynamisch verwaltet. Das heißt, dass immer genau soviel Platz da ist, wie deine Zeichenkette lang ist. Du kannst in einem String mal ein 12 Zeichen langes Wort, mal ein 35 Zeichen langes speichern -- egal. Da sich, wie gesagt, die Länge eben der Zeichenkette anpasst, kann die Zeichenkette solang sein, wie der Speicher Platz hat.
Strings haben aber noch mehr Vorteile, schau dir mal den Referenz-Eintrag zu C++-Strings an.
 
Zurück