ansprechen von Ziffern
-
Hallo,
ich möchte eigentlich nur wissen wie ich von einer zahl die Ziffer 1,2,3... ansprechen kann
ich will nämlich ein Programm schreiben welches mir von einer bestimmten zahl zur anderen die Ziffern sagt welche da zwischen vokommen sollen.
wer das jetzt noch nicht verstanden hat hier ist bis dahin mein Code
(es gibt 10 Labels[einer Reicht auch]; 1 Button; zwei Editfelder)int x, y;
int eins, zwei, ... bis null
//-----------------------------for (x < y)
{
x++
if (Ziffer1_von_x == 1)
eins++;
if (Ziffer2_von_x == 1)
eins++;...
verstanden?

-
Nur zum Verständnis:
Du hast eine Zahl, z.B. 512127. Jetzt möchtest Du alle Ziffern wissen, die zwischen der 5 und der 7 liegen und wie oft diese vorkommen?
Für dieses Beispiel brauchst Du ein Form, einen Button und ein Memo:
void __fastcall TForm1::Button1Click(TObject *Sender) { int iArray[10]; int iTest = 512127; AnsiString asTest = AnsiString(iTest); int pos1 = asTest.AnsiPos("5") + 1; int pos2 = asTest.AnsiPos("7") - 1; for (int i = 0; i < 10; i++) iArray[i] = 0; if (pos2 > pos1) { for (int i = pos1; i <= pos2; i++) { int iZiffer = asTest.SubString(i,1).ToIntDef(-1); if (iZiffer) iArray[iZiffer]++; } } for (int i = 0; i < 10; i++) Memo1->Lines->Add(AnsiString(i) + " - " + AnsiString(iArray[i])); }Grüße Jochen
-
clekilein schrieb:
ich möchte eigentlich nur wissen wie ich von einer zahl die Ziffer 1,2,3... ansprechen kann
In einen String umwandeln und auf die einzelnen Zeichen zugreifen, diese dann ggf. wieder in Zahlen umwandeln.
-
ich meinte eigentlich von der zahl 24 und 32. und welche ziffern sind da zwischen sind (25 (2 und 5)) 26 (2 und 6))
und somit habe ich 5x2 1x5 etc. ...
-
Auch dazu läßt sich mein obiges Bespiel verwenden - mit ein paar kleinen Änderungen.
Bekommst Du das hin? Sonst poste noch mal.
Grüße
-
naja, sei mir bitte nicht böse, aber so richtig verstehe ich dass nicht und werde das deshalb auch nicht hinbekommen!,
wenn du noch ein paar kleine Wörtchen dazu schreiben könntest, wäre ich dir zu Dank verbunden!
leider

-
void __fastcall TForm1::Button1Click(TObject *Sender) { int iArray[10]; // enthält Ergebnisse int iTest; // aktuell auszuwertende Zahl AnsiString asTest; // aktuell auszuwertende Zahl als String int iStart, iEnde; // Start- und Endinteger (auszwertertender Bereich int iZiffer; // temporäre Variable for (int i = 0; i < 10; i++) iArray[i] = 0; // Ergebnisarray 'initialisieren', damit da auch wirklich überall 0 drinsteht iStart = 24; iEnde = 32; for (int i = iStart + 1; i < iEnde; i++) // Schleife für die auszuwertenden Zahlen iStart + 1 bis iEnde - 1 { asTest = AnsiString(i); // in String umwandeln for (int z = 1; z <= asTest.Length(); z++) // für alle 'Ziffern' in asTest { iZiffer = asTest.SubString(z,1).ToInt(); // wieder in Zahl wandeln iArray[iZiffer]++; // int an der entsprechende Stelle des Array's erhöhen } } for (int i = 0; i < 10; i++) Memo1->Lines->Add(AnsiString(i) + " - " + AnsiString(iArray[i])); }
-
danke, hast mir sehr geholfen!
aber wieso hast du iTest vereinbart? wird doch nicht benutzt!
-
Hast recht, hab' ich vergessen aus rauszulöschen. Hab' das erste Beispiel kopiert und geändert.
