3.4k Aufrufe
Gefragt in Anwendungen(Java,C++...) von xardasdm Mitglied (113 Punkte)
hi ich habe ein kleines problem.
ich habe neulich wieder angefangen mir anhand eines buches c++ beizubringen. jetzt wollte ich ein programm schreiben (nur zur übung erstmal) das mich fragen soll wie ich heiße, dann gebe ich meinen namen ein (Xardas). wenn dies erfolgt ist soll er: "hallo Xardas" schreiben.
falls ich einen anderen namen eingebe soll er: "dich kenne ich nicht" ausgeben.

ich habe viele sachen probiert immoment ist mein quellcode so:

//bspl000dsa.cpp
#include <iostream>
using namespace std;

int main() {
int name;
cout << "\n Gib deinen Namen ein ";
cin >> name;
const_cast<int>(name) ;
if(name == "Xardas" || "xardas" || "XARDAS") {
cout << "\nHallo Xardas";
}
else {
cout << "dich kenne ich nicht" << name <<"!";
}
return 0;
}


ich benutze: microsoft Visual C++ 2008 Express Edition
mein compiler bringt aber folgende meldung anstatt zu kompilieren:


bspl000dsa.cpp
C:\Dokumente und Einstellungen\XardasDerMagier\Eigene Dateien\bspl000dsa.cpp(9)
: error C2440: 'const_cast': 'int' kann nicht in 'int' konvertiert werden
Diese Konvertierung ist eine gültige Standardkonvertierung, die implizit
oder mit dem static_cast-Operator oder mit einer Typumwandlung im C- oder Funkt
ionsformat durchgeführt wird
C:\Dokumente und Einstellungen\XardasDerMagier\Eigene Dateien\bspl000dsa.cpp(10)
: error C2446: '==': Keine Konvertierung von 'const char *' in 'int'
Es gibt keinen Kontext, in dem diese Konvertierung möglich ist
C:\Dokumente und Einstellungen\XardasDerMagier\Eigene Dateien\bspl000dsa.cpp(10)
: error C2040: '==': 'int' unterscheidet sich von 'const char [7]' in Bezug auf
die Anzahl vorgenommener Dereferenzierungen


wie löse ich das?? ich komme einfach nicht weiter.
ich hoffe ihr könnt mir helfen.
ich habe versucht den beitrag einigermaßen übersichtlich zu schreiben.
und habt bitte nachsicht ich fange erst an mit programmieren.
MFG Xardas

9 Antworten

0 Punkte
Beantwortet von rowalind Einsteiger_in (85 Punkte)
Hallo,

Deine Variable "name" hast Du als "int" deklariert.
int steht für Integer = Zahl,

richtig wäre:
char name[30]

Deklariert eine Stringvariable die maximal 29 Zeichen aufnehmen kann , die 30.Stelle bleibt für das Stringende reserviert "\0"

Dein Vergleich if (name == "X......") funktioniert so auch nicht,
schau Dir dazu die Funktion "StrComp" an.

Gruß Rowalind
0 Punkte
Beantwortet von xardasdm Mitglied (113 Punkte)
erstmal vielen dank für die schnelle antwort!
jetzt habe ich das problem dass ich zu strcomp nicht allzuviel finde
ich habe jetzt meinen text in folgendes umgeändert:


//bspl000dsa.cpp
#include <iostream>
using namespace std;

int main() {
char name[30];
cout << "\n Gib deinen Namen ein ";
cin >> name;
if(strcomp(name, "Xardas" || "xardas" || "XARDAS")) {
cout << "\nhallo Xardas";
}
else {
cout << "dich kenne ich nicht" << name <<"!";
}
return 0;
}



jetzt sagt mein compiler:

bspl000dsa.cpp
C:\Dokumente und Einstellungen\XardasDerMagier\Eigene Dateien\bspl000dsa.cpp(9)
: error C3861: "strcomp": Bezeichner wurde nicht gefunden.

ich verstehe es nicht bitte um hilfe^^
mfg Xardas
0 Punkte
Beantwortet von
Hi,
also diese Zeile if(strcomp(name, "Xardas" || "xardas" || "XARDAS")) {
is quatsch der syntax dürfte so nicht richtig sein.

wenn du den namen als string im char array anlegst kannst du meiner meinung nach einfach so abprüfen wie du im ursprünglichen Programm gemachst hast.
0 Punkte
Beantwortet von xardasdm Mitglied (113 Punkte)
hmm jetzt verstehe ich garnichtsmehr : )
wie müsste die char array mit string denn aussehen/ string ist mor nämlich völlig unbekannt
0 Punkte
Beantwortet von rowalind Einsteiger_in (85 Punkte)
Hallo,

if(name == "Xardas")
vergleicht nur das erste Zeichen des String Arrays

richtig wäre

int iResult;

iResult = StrComp(name, "Xardas")
if(iResult == 0)
{
cout << "\nhallo Xardas";
}
else
{
cout << "dich kenne ich nicht" << name <<"!";
}

Du solltest Dir neben den Variablentypen die es so gibt auch die Stringbehandlung ansehen.

Ansonsten wünsche ich Dir viel Geduld und gib nicht auf das wird schon noch.

Gruß Rowalind
0 Punkte
Beantwortet von xardasdm Mitglied (113 Punkte)
ich habe jetzt das:

//bspl000dsa.cpp
#include <iostream>
using namespace std;

int main() {
char name[30];
cout << "\n Gib deinen Namen ein ";
cin >> name;

int iResult;

iResult = StrComp(name, "Xardas");
if(iResult == 0)
{
cout << "\nhallo Xardas";
}
else
{
cout << "dich kenne ich nicht" << name <<"!";
}
return 0;
}




ihm fehlt immernoch der bezeichner für StrComp
was muss ich tun?
0 Punkte
Beantwortet von rowalind Einsteiger_in (85 Punkte)
Hallo,

ich schreibe mit dem Borland Compiler.

Eventuell ist es bei Microsoft anders.
Einfach mal in der Hilfe nachsehen.


Gruß Rowalind
0 Punkte
Beantwortet von rowalind Einsteiger_in (85 Punkte)
Hallo,

so sollte es bei Dir auch funktionieren

#include <string.h>
iResult = strcmp(name, "Xardas");


Gruß Rowalind
0 Punkte
Beantwortet von xardasdm Mitglied (113 Punkte)
danke jetzt gehts sehr nett von dir!
mfg Xardas
...