Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
nixkoenner Mini JLI'ler
Alter: 32 Anmeldedatum: 15.02.2007 Beiträge: 36
Medaillen: Keine
|
Verfasst am: 14.09.2007, 13:57 Titel: Nameneingabe mit char??? |
|
|
Hallo ich hab leider schon wieder ein Problem!
Ich möchte, dass in einem Programm der Benutzer seinen Namen eingibt.
Ich habs versucht mit char und einer cin Eingabe. Aber natürlich liefert der dann als Antwort nur den ersten Buchstaben der Eingabe. Was kann ich machen? Hier mal ein Beispiel:
CPP: | #include <iostream>
const char NZ = '\n';
char NAME = 0;
using namespace std;
int main(void)
{
cout << "Bitte gib deinen Namen ein:" << NZ;
cin >> NAME;
cout << "Hallo " << NAME << NZ;
}
|
Hoffe ihr könnt mir helfen, es ist aber noch nicht wichtig, da ich, in dem programm das ich gerade mache, es nicht unbedigt brauche, obwohl es später sehr hilfreich wäre.
Zuletzt bearbeitet von nixkoenner am 26.12.2007, 17:00, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Xibus Junior JLI'ler
Alter: 32 Anmeldedatum: 18.02.2007 Beiträge: 91 Wohnort: Deutschland -> NRW -> OWL -> Paderborn -> Salzkotten Medaillen: Keine
|
Verfasst am: 14.09.2007, 13:58 Titel: |
|
|
Hier:
CPP: | #include <iostream>
const char NZ = '\n';
char NAME[128];
using namespace std;
int main(void)
{
cout << "Bitte gib deinen Namen ein:" << NZ;
cin >> NAME;
cout << "Hallo " << NAME << NZ;
}
|
_________________ Signatur
|
|
Nach oben |
|
|
nixkoenner Mini JLI'ler
Alter: 32 Anmeldedatum: 15.02.2007 Beiträge: 36
Medaillen: Keine
|
Verfasst am: 14.09.2007, 14:07 Titel: |
|
|
Danke!
Muss ich da allgemein 128 eingeben oder hängt das von irgendetwas ab? |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 14.09.2007, 14:15 Titel: |
|
|
Ja, da solltest du die maximale Anzahl an eingegebenen Zeichen nicht überschreiten, sonst wird sich das Programm unvorhersehbar verhalten. Du reservierst damit speicher für 128 Zeichen. |
|
Nach oben |
|
|
nixkoenner Mini JLI'ler
Alter: 32 Anmeldedatum: 15.02.2007 Beiträge: 36
Medaillen: Keine
|
Verfasst am: 14.09.2007, 14:29 Titel: |
|
|
ok alles klar
danke fur die schnellen antworten |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 14.09.2007, 14:50 Titel: |
|
|
std::string wäre auch noch ne gute Möglichkeit. Dabei musst du dich nicht damit auseinandersetzen, wie viel den jetzt reinpasst.
Allgemein solltest du dich evtl. mit dem Thema Strings in C++ mal näher auseinandersetzen, da gibt es einiges, was man wissen sollte. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
nixkoenner Mini JLI'ler
Alter: 32 Anmeldedatum: 15.02.2007 Beiträge: 36
Medaillen: Keine
|
Verfasst am: 14.09.2007, 15:27 Titel: |
|
|
ich hab jetzt (für meine Begriffe) ordentlich programmiert und folgendes Programm zustande gebracht:
CPP: | // Programm zur Berechnung von Flächen, Körpern ...
#include <iostream>
const char NZ = '\n';
char NAME[128];
bool Fortsetzten(void);
using namespace std;
int main(void)
{
cout << "Bitte gib deinen Namen ein:" << NZ;
cin >> NAME;
do
{
int allgemein = 0;
cout << "Hallo " << NAME << "! Bitte gib die Ziffer fuer die/den" << NZ;
cout << "Flaeche/Koerper ein, die/den du berechnen moechtest:" << NZ;
cout << NZ;
cout << "1 Quadrat" << NZ;
cin >> allgemein;
if(allgemein == 1)
{
int x = 0;
cout << "Was moechtest du berechnen?" << NZ;
cout << NZ;
cout << "1 Flaeche" << NZ;
cout << "2 Umfang" << NZ;
cin >> x;
if(x == 1)
{
float seiteflaechequadrat = 0;
cout << "Bitte gib die Seitenlaenge ein:" << NZ;
cin >> seiteflaechequadrat;
cout << "Das Quadrat hat eine Flaeche von " << NZ;
cout << seiteflaechequadrat * seiteflaechequadrat;
}
if(x == 2)
{
float seiteumfangquadrat = 0;
cout << "Bitte gib die Seitenlaenge ein:" << NZ;
cin >> seiteumfangquadrat;
cout << "Das Quadrat hat einen Umfang von " << NZ;
cout << 4 * seiteumfangquadrat;
}
else
{
cout << "Dies ist keine gültige Zahl" << NZ;
}
}
} while(Fortsetzen());
system("PAUSE");
return 0;
bool Fortsetzen(void)
{
char JaNein = 'j';
cout << "Moechtest du eine weitere Berechnung durchfuehren?";
cin >> JaNein;
if('j' == JaNein)
{
return true;
}
else
{
return false;
}
}
}
|
Ich würde es noch erweitern mit Rechteck, Dreieck, Kreis, Würfel, ...
Aber die Funktion bool Fortsetzen(void) funktioniert nicht.
ich finde den Fehler nicht, denn eigentlich ist es aus dem Buch heraus abgeschrieben.
Fehler:
1. ( Zeile 67 )
identifier not found, even with argument-dependend lookup
2. ( Zeile 73 )
redefinition; different type modifiers
3. ( zeile 73 )
local funktion definitions are illegal
was hab ich falsch gemacht? |
|
Nach oben |
|
|
GreveN JLI Master
Alter: 37 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 14.09.2007, 15:30 Titel: |
|
|
Definier die Funktion mal vor der main, eine Definition innerhalb einer anderen Definition ist Quatsch. |
|
Nach oben |
|
|
nixkoenner Mini JLI'ler
Alter: 32 Anmeldedatum: 15.02.2007 Beiträge: 36
Medaillen: Keine
|
Verfasst am: 14.09.2007, 15:32 Titel: |
|
|
in welcher definition definiere ich? |
|
Nach oben |
|
|
GreveN JLI Master
Alter: 37 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 14.09.2007, 15:34 Titel: |
|
|
Du definierst "Fortsetzen" innerhalb der Definition von "main". |
|
Nach oben |
|
|
nixkoenner Mini JLI'ler
Alter: 32 Anmeldedatum: 15.02.2007 Beiträge: 36
Medaillen: Keine
|
Verfasst am: 14.09.2007, 15:41 Titel: |
|
|
achso ja
aber jetzt sind immer noch die fehler:
line 67 (wie vorher)
line 74 redefinition; previous definition was a 'formerly unknown identifier'
CPP: | // Programm zur Berechnung von Flächen, Körpern ...
#include <iostream>
const char NZ = '\n';
char NAME[128];
bool Fortsetzten(void);
using namespace std;
int main(void)
{
cout << "Bitte gib deinen Namen ein:" << NZ;
cin >> NAME;
do
{
int allgemein = 0;
cout << "Hallo " << NAME << "! Bitte gib die Ziffer fuer die/den" << NZ;
cout << "Flaeche/Koerper ein, die/den du berechnen moechtest:" << NZ;
cout << NZ;
cout << "1 Quadrat" << NZ;
cin >> allgemein;
if(allgemein == 1)
{
int x = 0;
cout << "Was moechtest du berechnen?" << NZ;
cout << NZ;
cout << "1 Flaeche" << NZ;
cout << "2 Umfang" << NZ;
cin >> x;
if(x == 1)
{
float seiteflaechequadrat = 0;
cout << "Bitte gib die Seitenlaenge ein:" << NZ;
cin >> seiteflaechequadrat;
cout << "Das Quadrat hat eine Flaeche von " << NZ;
cout << seiteflaechequadrat * seiteflaechequadrat;
}
if(x == 2)
{
float seiteumfangquadrat = 0;
cout << "Bitte gib die Seitenlaenge ein:" << NZ;
cin >> seiteumfangquadrat;
cout << "Das Quadrat hat einen Umfang von " << NZ;
cout << 4 * seiteumfangquadrat;
}
else
{
cout << "Dies ist keine gültige Zahl" << NZ;
}
}
}while(Fortsetzen());
system("PAUSE");
return 0;
}
bool Fortsetzen(void)
{
char JaNein = 'j';
cout << "Moechtest du eine weitere Berechnung durchfuehren?";
cin >> JaNein;
if('j' == JaNein)
{
return true;
}
else
{
return false;
}
} |
|
|
Nach oben |
|
|
nixkoenner Mini JLI'ler
Alter: 32 Anmeldedatum: 15.02.2007 Beiträge: 36
Medaillen: Keine
|
Verfasst am: 14.09.2007, 15:51 Titel: |
|
|
ich hab jetzt den absatz von den Beispielprogrammen rüberkopiert und es ist genau das selbe, der fehler kann also nicht an der Definition selber hängen. |
|
Nach oben |
|
|
KI JLI Master
Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 14.09.2007, 16:33 Titel: |
|
|
Vielliecht liegt es daran, dass du oben die Funktion so deklarierst
bool Fortsetzten(void);
und unten das schreibst
bool Fortsetzen(void) |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 14.09.2007, 16:33 Titel: |
|
|
Der Funktionskopf, den du oben zur Verfügung stellst, sollte natürlich genau mit dem unten bei der Definition übereinstimmen.
Wenn du dem Compiler oben sagst, dass er eine Funktion Namens Fortsetzten() vorfinden wird und du bei der do-while-Schleife auf eine Funktion Namens Fortsetzen() zugreifen willst, kann das nicht funktionieren
Bitte in Zukunft die cpp anstatt den code-Tags benutzen. Das ist einfacher zu lesen (siehe nun oben). _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
nixkoenner Mini JLI'ler
Alter: 32 Anmeldedatum: 15.02.2007 Beiträge: 36
Medaillen: Keine
|
Verfasst am: 15.09.2007, 05:07 Titel: |
|
|
achso jetzt check ichs.
ok war ein tipp fehler!
danke an alle!!!! |
|
Nach oben |
|
|
|