PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfänger!!!Problem mit "switch"



sic
27-09-2002, 14:09
Bitte sagt mir was ich machen muss, damit die Variable "char cAlkan[10]" auch ausserhalb des switch-Befehls bekannt ist bzw. der Wert der ihr gegeben wurde auch ausserhalb ausgegeben werden kann.Hoffe ihr wisst was ich meine.
*kurzvormverzweifeln*
sic


#include <iostream.h>
#include <conio.h>
int iKette;
char cAlkan[10];
int main()
{
cout<<"Bitte geben sie die l\x84ngste Kette an ";
cin>>iKette;

switch(iKette)
{
case 1:
{
char cAlkan[10] = {'M','e','t','h','a','n'};
break;
}
case 2:
{
char cAlkan[10] = {'E','t','h','a','n'};
}
case 3:
{
char cAlkan[10] = {'P','r','o','p','a','n'};
}
case 4:
{
char cAlkan[10] = {'B','u','t','a','n'};
}
case 5:
{
char cAlkan[10] = {'P','e','n','t','a','n'};
}
case 6:
{
char cAlkan[10] = {'H','e','x','a','n'};
}
case 7:
{
char cAlkan[10] = {'H','e','p','t','a','n'};
}
case 8:
{
char cAlkan[10] = {'O','c','t','a','n'};
}
case 9:
{
char cAlkan[10] = {'N','o','n','a','n'};
}
case 10:
{
char cAlkan[10] = {'D','e','c','a','n'};
}
default:
{
cout<<"Es sind net wirklich soviele, oder?";
break;
}
}
cout<<cAlkan;
getch();

}

Lin728
27-09-2002, 15:28
Na klar, definitionen sind nur innerhalb des Klammerausdrucks sichtbar (und natürlich allen untergeordneten Klammerausdrücken) ind denen sie definiert wurden.

Weiter oben definieren!

BsP:

{
char a[] = "Ich bin ein böser String!";
}

printf("%s", a); //Geht nicht, a nicht mehr sichtbar.

So gehts:

char a[20];

{
a="A ist böse!";
}

printf("%s", a); //hier gehts, weil a innerhalb des selben Blocks definiert wurde.

micha
27-09-2002, 17:31
Hi,

Du definierst cAlkan zuerst global ( Zeile 4 ). Aber anstatt diese Variable dann zu benutzen, überschreibst Du cAlkan innerhalb des switch-Blockes mit einer neuen Variablen, die außer dem gleichen Typ und Namen nichts weiter gemeinsam hat mit der in Zeile 2 definierten. Also nicht neu definieren, sonder der alten den Wert einfach zuweisen:

strcpy (cAlkan, "Methan");

Gruß micha

microdigi
28-09-2002, 10:13
sic...

hast du nicht das 'break;' bei den meisten 'case' vergessen?

switch (x)
{ case 1:
tu was;
break;
case 2:
tu noch was;
break;
default:
tu was dir einfaellt;
break;
}

sic
28-09-2002, 10:54
Japp.Hatte ich zu dem Zeitpunkt net.Hatte ich mittlerweile aber auch eingebaut, aber dadurch gings trotzdem net...Aber habs jetzt hinbekommen.
Aber es hat keiner gesagt dass man "#include <stream.h>" o.ä. braucht.
Trotzdem danke.
sic

anda_skoa
28-09-2002, 10:59
Original geschrieben von sic
Aber es hat keiner gesagt dass man "#include <stream.h>" o.ä. braucht.


string.h für strcpy

Aber wenn du C++ verwendest und Strings benutzt, dann kann ich nur empfehlen die Standard Stringklasse zu verwenden:



#include <string> // nicht string.h
#include <iostream> // statt iostream.h

using namespace std;

int main()
{
string kette;

switch(laenge)
{
kette = "Methan";
break;
}
}


Ciao,
_