Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

11

05.09.2010, 15:57

@Architekt:
Ich dachte immer, man muss sich, genau wie bei dem Beispiel mit der Klasse erstmal den Speicherplatz reservieren! Sonst könnte der Zeiger ja theoretisch unendlich lang sein!

Mfg Harry222

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

12

05.09.2010, 16:09

schau dir mal das an.
wie kann nen zeiger unendlich lang sein?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

13

05.09.2010, 16:12

Ups, da hab ich mich wohl geirrt! ^^

Mfg Harry222

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

14

05.09.2010, 16:53

Vielleicht hat er Zeiger mit Array oder Speicherplatz verwechselt ;)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

15

05.09.2010, 16:58

danke, aber...

Vielen dank für die antworten, raff sie aber leider alle nicht, bin ncoh anfänger...
der quellcode ist jetzt soweit fertig bis auf die sache mit dem namenxD
aber jetzt kommt auch noch ne mir unerklärliche fehlermeldung:

error C2051: case-Ausdruck ist keine Konstante


jetzt raff ich gar nichts mehr leute, kann einer vielleicht kurz den quelltext durchgehen??
vielleicht noch verbessern wär nett, in rot markieren



#include
using namespace std;
int main ()
{
//Variablen
//
char chName0;
char chName1;
char chName2;
char chName3;
char chName4;
char chName5;
char chName6;
char chName7;
char chName8;
char chName9;
int Zahl;
char chJaNein;

//Bitte den Name einzugeben
//
cout<<"Bitte geben Sie ihren Namen ein (max. 10 Buchstaben):"<

//Spieler definiert Variable "chName"
//
cin>>chName0;
cin>>chName1;
cin>>chName2;
cin>>chName3;
cin>>chName4;
cin>>chName5;
cin>>chName6;
cin>>chName7;
cin>>chName8;
cin>>chName9;

//Bestätigung und Begrüßung
//
cout<<"Hallo\t"<<<"\tschoen dich zu sehen!"<

//Frage nach Zahl
//
cout<<<",gib bitte eine Zahl zwischen 1 und 10 ein!"<

//Spieler definiert Variable "Zahl"
//
cin>>Zahl;

//Kleines Danke
//
cout<<"Danke, deine Zahl ist:"<<<"richtig?J)a oder (N)ein?"<

//Spieler deklariert die Variable "JaNein"
//
cin>>chJaNein;

//if J und N
//
if ((chJaNein=='j') || (chJaNein=='J'))
{
switch (Zahl)
{
case (Zahl=1):
{
cout<<<", du wirst Tomatenforscher"<
}break;

case (Zahl=2):
{
cout<<<", du wirst Schauspieler"<
}break;

case (Zahl=3):
{
cout<<<", du wirst Straßenfaeger"<
}break;

case (Zahl=4):
{
cout<<<", du wirst Arzt"<
}break;

case (Zahl=5):
{
cout<<<", du wirst Lottogewinner"<
}break;

case (Zahl=6):
{
cout<<<", du wirst Arbeitslos"<
}break;

case (Zahl=7):
{
cout<<<", du wirst Aldi-Filialleiter"<
}break;

case (Zahl==8:
{
cout<<<", du wirst Bauarbeiter"<
}break;

case (Zahl=9):
{
cout<<<", du wirst Hausfrau"<
}break;

case (Zahl=10):
{
cout<<<", du wirst Fabrikarbeiter"<
}break;

default:
{
cout<<"Falsche Eingabe,"<<
}

}
}
else
{
cout<<"Starte das Programm bitte erneut,\t"<<
}
return 0;
}




Vielen dank im voraus

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

16

05.09.2010, 17:01

Code Tags bitte!
Und ja, switch ist folgendermaßen aufgebaut:

C-/C++-Quelltext

1
2
3
4
switch (zahl) {
case 10:
    cout << "zahl ist 10 << endl;
break;

und nicht "case (zahl = 10):". Nichtmal wenn es eine if Abfrage wäre, wäre es korrekt, da ein Gleichheitszeichen eine Zuweisung von Variable und Wert ist (Bsp: const float PI = 3.14; ) und müsste folge richtig if (zahl == 10) lauten.

Weswegen eig. die ganzen Namens Variablen? Und wieso nicht ein Array dafür?

edit: Zu deinem Verständnis Problem: char ist ein Zeichen, bzw. speicher für ein Zeichen. Wenn du mehrere Zeichen speichern willst, brauchst du auch mehr Platz. Deswegen entweder std::string, Beispiel:

C-/C++-Quelltext

1
std::string name = "foobar";
oder aber ein char array bzw. Zeiger falls du, wie es den Anschein macht, noch keine Arrays kennst, Beispiel:

C-/C++-Quelltext

1
char * name = "foobar";

Dein bereinigter Code also:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>

using namespace std;

int main () {
    //Variablen
    //
    char chName[10];
    
    //Bitte den Name einzugeben
    //
    cout << "Bitte geben Sie ihren Namen ein (max. 10 Buchstaben):";
    
    //Spieler definiert Variable "chName"
    //
    cin >> chName;

        int zahl;
        cout << "Bitte geben Sie eine Zahl an:";
        cin >> zahl;

    switch (zahl) {
        case 1:
            cout << ", du wirst Tomatenforscher";
        break;
        
        case 2:
            cout << ", du wirst Schauspieler";
        break;
        
        case 3:
            cout << ", du wirst Straßenfaeger";
        break;
        
        case 4:
            cout << ", du wirst Arzt";
        break;
        
        case 5:
            cout << ", du wirst Lottogewinner";
        break;
        
        // usw.
        
        default:
            cout << "Falsche Eingabe,";
    }
    
    return 0;
}
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Architekt« (05.09.2010, 17:20)


17

05.09.2010, 17:12

Und ihr seid euch also sicher dass das geht?

C-/C++-Quelltext

1
2
#include <iostream>
int main() { char* input; std::cin>>input; std::cout << input; }
? :D

Harry222

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>

using namespace std;

int main ()
{
  //Variablen
  char chName[512]; //ARRAY!!!
  int Zahl; //Wofür ist die überhaupt?

  //Bitte den Name einzugeben
  printf("Bitte geben Sie ihren Namen ein:");

  //Spieler definiert Variable "chName"
  gets(&chName);

  //Bestätigung und Begrüßung
  printf("Hallo\t%s\tschoen dich zu sehen", chName;
}
ja und wir sind bei C++.
Du bist dir also sicher das der Header <stdio.h> und nicht <cstdio> heißt? Und das deine Funktionen bei dem von dir gewählten Header tatsächlich im namspace std liegen? Na sowas :) Davon mal abgesehen guck dir mal std::fgets (<cstdio>) an, da rennt dir wenigstens keiner über die Grenzen.

SaRu
Tatsache das geht? Kenn keinen Streamoperator von std::string der das kann ^^

Achja bei arrayinitialisierung kannst auch das machen:

C-/C++-Quelltext

1
2
char array_one[3] = "ab";
char array_two[3] = { 'A', 'B', 0 }; // 0 == '\0' -> Nullterminierung


NachoMan
Nja wenn du richtig zitieren würdest, wüsstest du dass das sogar so geht, auch wenn wahrscheinlich nicht beabsichtigt.
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

18

05.09.2010, 17:20

NachoMan
Nja wenn du richtig zitieren würdest, wüsstest du dass das sogar so geht, auch wenn wahrscheinlich nicht beabsichtigt.

er hats nach meinem beitrag editiert -.-

@EnCore: c++ kann man nicht mit tutorials lernen. da steht teilweise ziemlich viel müll. kauf dir c++ für spieleprogrammierer, lies es aufmerksam durch und mach die übungen wenn du es ernst meinst. solltest du schon ein buch haben dann lies es nochmal ohne etwas zu überspringen.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NachoMan« (05.09.2010, 17:28)


Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

19

05.09.2010, 18:29

@Deviloper:
Naja, so hab ich es eben gelernt! ;)

Mfg Harry222

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

20

05.09.2010, 18:33

@Deviloper:
Naja, so hab ich es eben gelernt! ;)

Mfg Harry222

Nur das du eben C++ und C mixt, bzw. eher auf C eingehst.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Werbeanzeige