JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=8346ed518513726df15a1ca2ddc2b108Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Nameneingabe mit char???
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
nixkoenner
Mini JLI'ler


Alter: 32
Anmeldedatum: 15.02.2007
Beiträge: 36

Medaillen: Keine

BeitragVerfasst am: 14.09.2007, 13:57    Titel: Nameneingabe mit char??? Antworten mit Zitat

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. Wink


Zuletzt bearbeitet von nixkoenner am 26.12.2007, 17:00, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Xibus
Junior JLI'ler


Alter: 33
Anmeldedatum: 18.02.2007
Beiträge: 91
Wohnort: Deutschland -> NRW -> OWL -> Paderborn -> Salzkotten
Medaillen: Keine

BeitragVerfasst am: 14.09.2007, 13:58    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nixkoenner
Mini JLI'ler


Alter: 32
Anmeldedatum: 15.02.2007
Beiträge: 36

Medaillen: Keine

BeitragVerfasst am: 14.09.2007, 14:07    Titel: Antworten mit Zitat

Danke!

Muss ich da allgemein 128 eingeben oder hängt das von irgendetwas ab?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 14.09.2007, 14:15    Titel: Antworten mit Zitat

Smile 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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
nixkoenner
Mini JLI'ler


Alter: 32
Anmeldedatum: 15.02.2007
Beiträge: 36

Medaillen: Keine

BeitragVerfasst am: 14.09.2007, 14:29    Titel: Antworten mit Zitat

ok alles klar

danke fur die schnellen antworten Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 14.09.2007, 14:50    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
nixkoenner
Mini JLI'ler


Alter: 32
Anmeldedatum: 15.02.2007
Beiträge: 36

Medaillen: Keine

BeitragVerfasst am: 14.09.2007, 15:27    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 14.09.2007, 15:30    Titel: Antworten mit Zitat

Definier die Funktion mal vor der main, eine Definition innerhalb einer anderen Definition ist Quatsch.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
nixkoenner
Mini JLI'ler


Alter: 32
Anmeldedatum: 15.02.2007
Beiträge: 36

Medaillen: Keine

BeitragVerfasst am: 14.09.2007, 15:32    Titel: Antworten mit Zitat

in welcher definition definiere ich?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 14.09.2007, 15:34    Titel: Antworten mit Zitat

Du definierst "Fortsetzen" innerhalb der Definition von "main".
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
nixkoenner
Mini JLI'ler


Alter: 32
Anmeldedatum: 15.02.2007
Beiträge: 36

Medaillen: Keine

BeitragVerfasst am: 14.09.2007, 15:41    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
nixkoenner
Mini JLI'ler


Alter: 32
Anmeldedatum: 15.02.2007
Beiträge: 36

Medaillen: Keine

BeitragVerfasst am: 14.09.2007, 15:51    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 14.09.2007, 16:33    Titel: Antworten mit Zitat

Vielliecht liegt es daran, dass du oben die Funktion so deklarierst

bool Fortsetzten(void);

und unten das schreibst

bool Fortsetzen(void)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 14.09.2007, 16:33    Titel: Antworten mit Zitat

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 Wink

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nixkoenner
Mini JLI'ler


Alter: 32
Anmeldedatum: 15.02.2007
Beiträge: 36

Medaillen: Keine

BeitragVerfasst am: 15.09.2007, 05:07    Titel: Antworten mit Zitat

achso jetzt check ichs.

ok war ein tipp fehler!

danke an alle!!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum