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


Anmelden zum Antworten