Programmieren - alles kontrollieren 4.937 Themen, 20.662 Beiträge

Problem mit Arrays (Borland C++ 5.0)

Selecta / 9 Antworten / Flachansicht Nickles

Hi, ich wollte ein Programm schreiben, das ganz viele eingegebene Zahlen eines Memo Feldes überprüft und ggf. doppelte ausgibt.
Das Problem: Es gibt bei mehreren doppelten Zahlen auch mehrmals die doppelten aus. Aber es soll zum Beispiel bei der Eingabe "1111" nur "1" ausgeben, weil 1 ist nunmal doppelt, wie oft ist vollkommen egal.

Quelltext:

void __fastcall TfrmMain::edtEingabeKeyDown
(TObject *Sender, WORD &Key,TShiftState Shift)
{
if(Key==VK_RETURN){
Zahlen[i]=StrToInt(edtEingabe->Text);
memoEingabe->Lines->Add(IntToStr(Zahlen[i]));
i++;
edtEingabe->SelectAll();
}
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::btnEingabeClick(TObject *Sender)
{
for (int d=0; d!=i; d++)
{
for(int c=d+1;c!=i;c++){
if (Zahlen[d] == Zahlen[c])
{
memoAusgabe->Lines->Add(Zahlen[c]);
}
}
}
}
Mir ist schon klar warum das so ist. ABer wie kann ich denn Zahlen[c] selber an Positionen überprüfen ? Zahlen[c(2,0)] oder Ähnliches funktioniert nicht.
Möchte einfach wissen wie ich von Arrays Stellen ausgeben kann.

GreeTz Selecta

P.S: Komplette Lösungen akzeptiere ich auch ;)

bei Antwort benachrichtigen
mr.escape Selecta „Das klappt leider nicht. Gebe ich dies ein: 1 1 1 1 1 Gibt er: 1 aus. RICHTIG....“
Optionen

Ja, stimmt. Richtig kommentiert, aber der code war falsch. Das sollte es aber sein:
memoAusgabe->Lines->Add(Zahlen[0]);//gibt es auf jeden fall, ausgeben
for (int d=1; d<i; d++){//prüfe Zahlen[d] beginnend bei d=1
  int gut=1;
  for(int c=0;c<d;c++){
    if (Zahlen[d] == Zahlen[c]){//oops, gibt es schon und wurde darum auch schon ausgegeben
      gut=0;
      break;//beende "for c"
    }
  }
  if(gut)//kein duplikat, ausgeben
    memoAusgabe->Lines->Add(Zahlen[d]);//ok, Zahlen[d] taucht zum ersten mal auf
}


mr.escape

"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen