Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » Hilfe while anweisung wird immer größer!!!!!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.07.2005, 22:02 Uhr
Straightflush



hi Leute ich bin blutiger C++ anfänger und habe jetzt vor ein programm zu schreiben bei dem
wenn man auf einen knopf drückt auf 10 verschiedenen Labels was anderes steht (nix gleiches!!!)
Hier mein bisheriger Quelltext:

----------------------------------------------------------------------------
-----------------------------------------------------------------------------
void __fastcall TForm1::Panel1Click(TObject *Sender)
{
Nr = random (9) + 1;
if (Nr == 1) Label1->Caption = "a";
if (Nr == 2) Label1->Caption = "b";
if (Nr == 3) Label1->Caption = "c";
if (Nr == 4) Label1->Caption = "d";
if (Nr == 5) Label1->Caption = "e";
if (Nr == 6) Label1->Caption = "f";
if (Nr == 7) Label1->Caption = "g";
if (Nr == 8) Label1->Caption = "h";
if (Nr == 9) Label1->Caption = "i";
Nr2 = random (9) + 1;
while (Nr == Nr2) Nr2 = random (9) + 1;
if (Nr2 == 1) Label2->Caption = "a";
if (Nr2 == 2) Label2->Caption = "b";
if (Nr2 == 3) Label2->Caption = "c";
if (Nr2 == 4) Label2->Caption = "d";
if (Nr2 == 5) Label2->Caption = "e";
if (Nr2 == 6) Label2->Caption = "f";
if (Nr2 == 7) Label2->Caption = "g";
if (Nr2 == 8) Label2->Caption = "h";
if (Nr2 == 9) Label2->Caption = "i";

Nr3 = random (9) + 1;
while ((Nr == Nr2) || (Nr == Nr3) || (Nr2 == Nr3)) Nr3 = random (9) + 1;
if (Nr3 == 1) Label3->Caption = "a";
if (Nr3 == 2) Label3->Caption = "b";
if (Nr3 == 3) Label3->Caption = "c";
if (Nr3 == 4) Label3->Caption = "d";
if (Nr3 == 5) Label3->Caption = "e";
if (Nr3 == 6) Label3->Caption = "f";
if (Nr3 == 7) Label3->Caption = "g";
if (Nr3 == 8) Label3->Caption = "h";
if (Nr3 == 9) Label3->Caption = "i";
Nr4 = random (9) + 1;
while ((Nr == Nr2) || (Nr == Nr3) || (Nr2 == Nr3) || (Nr4 == Nr) || (Nr4 == Nr2)
|| (Nr4 == Nr3)) Nr4 = random (9) + 1;
if (Nr4 == 1) Label4->Caption = "a";
if (Nr4 == 2) Label4->Caption = "b";
if (Nr4 == 3) Label4->Caption = "c";
if (Nr4 == 4) Label4->Caption = "d";
if (Nr4 == 5) Label4->Caption = "e";
if (Nr4 == 6) Label4->Caption = "f";
if (Nr4 == 7) Label4->Caption = "g";
if (Nr4 == 8) Label4->Caption = "h";
if (Nr4 == 9) Label4->Caption = "i";


-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------

Nun mein Problem: wie ihr seht nimmt die while Bedingung langsam aber sicher ausmasse an da jede variable mit jeder anderen verglichen werden muss........

gibt es noch andere Möglichkeiten?????

Sorry wenn die frage dumm klingt aber ich kenne mich halt einfach noch net so aus

Mfg Straightflush
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.07.2005, 10:00 Uhr
Th



Es gibt zwei Vereinfachungen:

zum einen kannst du in einer Schleife mittels FindComponent("Label"+IntToStr(Nr)) die Labels erfragen, anstatt jede Schleife extra zu programmieren, zum anderen kannst du den Zahlenwert direkt in ein char verwandeln (mittels der ASCII-Tabelle):
Label->Caption = 'a' + nNr - 1;

Außerdem solltest du dich mal mit Arrays auseinandersetzen...

Für den Programmiereinstieg empfehle ich dir außerdem ersteinmal die Konsolenprogrammierung, um die Standard-C++ Programmierung zu erlernen, Anschließend kannst du dann mittels der VCL dann grafischen Schnickschnack hinzufügen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: