Programmieren - alles kontrollieren 4.934 Themen, 20.613 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 „Nein doch nicht ganz, er gibt auch die zahlen aus, wenn sie nur 1x ausgegeben...“
Optionen

Hatte übersehen, dass nur (mehrfache) duplikate ausgegeben werden sollen. Nächster versuch:
for (int d=1; d<i; d++){//prüfe Zahlen[d] beginnend bei d=1
  int dupli=0;
  for(int c=0;c<d;c++){
    if (Zahlen[d] == Zahlen[c]){//duplikat
      if(++dupli>1)
        break;//beende "for c", da zweites oder noch späteres duplikat
    }
  }
  if(dupli==1)//erstes duplikat, ausgeben
    memoAusgabe->Lines->Add(Zahlen[d]);
}


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