Announcement

Collapse
No announcement yet.

Integer-Problem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Integer-Problem

    Folgendes: Mein Programm soll unter anderem das Häufigste Zeichen im Memo-Feld finden. Das sollte ja eigentlich kein Problem sein, aber irgendwie stimmt der Maximal-Wert nicht. Ich weiss einfach nicht woran das liegen könnte.
    Hier mein Quelltext:

    Code:
     ProgressBar -> Max = Memo -> GetTextLen() + 1;
    
      NewText = Memo -> Text;
    
      Maximal = 0;
    
           for (Anzahl = 0; Anzahl < 255; Anzahl++)
    
                Zeichen[Anzahl] = 0;
    
           for (Anzahl = 1; Anzahl < Memo -> GetTextLen() + 1; Anzahl++)
           {
    
            AsciiZeichen = NewText[Anzahl];
    
            Zeichen[AsciiZeichen]++;
    
                 if (Zeichen[AsciiZeichen] > Maximal)
    
                     Maximal = Zeichen[AsciiZeichen];
    
            ProgressBar -> Position++;
    
           }
    
           for (Anzahl = 0; Anzahl < 255; Anzahl++)
           {
    
                if (Zeichen[Anzahl] == Maximal)
    
                    Form4 -> ListBox -> Items -> Add("Häufigstes Zeichen: " + IntToStr(Zeichen[Anzahl]));
    
                else
    
                    Form4 -> ListBox -> Items -> Add(IntToStr(Zeichen[Anzahl]));
    
           }
    
      Form4 -> ListBox -> Items -> Add(IntToStr(Maximal));
    
      Form4 -> Show();
    Ich lasse mir wie Ihr sehen könnt den Maximal-Wert auch mit anzeigen, und der stimmt hinten und vorne nicht und nimmt merkwürdige Ausmaße an.

    Hier noch meine verwendeten Variablen:

    AnsiString NewText;

    int Anzahl , Zeichen[255] , Maximal , AsciiZeichen;

  • #2
    Änder die Ausgabe nach:

    for (Anzahl = 0; Anzahl < 255; Anzahl++)
    {
    String ausgabe=(char)Anzahl;
    ausgabe+=" = "+IntToStr(Zeichen[Anzahl]);
    ListBox1 -> Items -> Add(ausgabe);
    }

    Wenn du die "meisten" rausfinden willst, muss das vorher in einer extra Schleife passieren
    Zuletzt editiert von Christian Marquardt; 18.07.2008, 21:20.
    Christian

    Comment


    • #3
      Änderung, die Meisten werden ja ermittelt:

      for (Anzahl = 0; Anzahl < 255; Anzahl++)
      {
      String ausgabe=(char)Anzahl;
      ausgabe+=" = "+IntToStr(Zeichen[Anzahl]);
      if (Zeichen[Anzahl] == Maximal)
      ausgabe+="Die meisten";
      ListBox1 -> Items -> Add(ausgabe);
      }
      Christian

      Comment


      • #4
        Wie gesagt, alles scheint zu passen, nur das "Maximal" nicht den richtigen Wert aufweisen kann, aber ich komme einfach nicht drauf warum.

        Comment


        • #5
          Wie gesagt, alles scheint zu passen, nur das "Maximal" nicht den richtigen Wert aufweisen kann, aber ich komme einfach nicht drauf warum.
          ?????
          Ich bekomme die korrekten Ausgaben
          Christian

          Comment


          • #6


            Siehe Bild
            Zuletzt editiert von Christian Marquardt; 01.03.2009, 11:03.
            Christian

            Comment


            • #7
              Hmmm... merkwürdig...
              Ohne Sch*** aber ich bekomme einen falschen Wert bei "Maximal". Ich kann es mir auch nicht erklären.
              Am besten ich compiliere das Ding einfach nochmal durch und schau was sich tut...
              [ratloses Gesicht]

              Comment


              • #8
                Ohh man... hab den Fehler "?" gefunden...
                Und zwar funktioniert alles super, solange man nen kleinen Text verwendet, wie du in deinem Beispiel.
                Wenn man allerdings einen etwas größeren Text verwendet (mein Test-Text ist 58 kb groß), dann passieren die Fehler...

                Allerdings ist auch in diesem Text kein einziges Zeichen so oft vorhanden das es den Bereich einer Integer-Variablen sprengen könnte...

                [immer noch ratloses Gesicht]
                Zuletzt editiert von Cre@or; 18.07.2008, 22:30.

                Comment

                Working...
                X