Abfrage von doppelten Zahlen
-
Also hier mein Programm: http://mandrill.fuxx0r.net/c++/paste.php?p=1827
Wenn ich in Zeile 14 die Werte eingebe soll danach gepüft werden ob die Zahlen
schonmal eingegeben worden. Ich wollte es mit einer If_Anweisung lösen, bin aber
zu keinem Erfolg gekommen. Also wie mach ich das...Könnte irgendwer komp. Lösungen bieten?
Wäre sehr nett.
-
Mach ne Schleife über die bis jetzt eingegebenen Werte oder nimm std::map oder benutze std::find.
MfG Jester
-
hm.. das was du da geschrieben hast sagt mir nix, sowas hatten wir noch nicht..
-
Du könntest z.B. die Zahlen in ein Array schreiben und dann jedesmal mit einer Schleife testen, ob schon eine gleiche Zahl darin ist
#include <iostream> using namespace std; bool IstInFeld(int zahl,int array[],int elements) { for(int n=0;n<elements;++n) // 1. Schleife durch alle Feldelemente { if(array[n]==zahl) //Wenn gefunden... { cout<<"Schon vorhanden"<<endl; //..Meldung raus return true; //true zurückgeben } } return false; //ansonsten false } int main() { int feld[10]={0}; //Feld von 10 Elementen, mit 0 initialisieren short input; //Eingabevariable for (int i=0;i<10;++i) //Alle Feldelemente eingeben { do{ cin>>input; }while(IstInFeld(input,feld,10)); //Wenn Zahl schon im Feld vorhanden. Eingabe wiederholen feld=input; //Zahl ins Feld schreiben } return 0; }
Da gibt es jetzt allerdings noch einiges zu verbessern, die Version ist mir aber da spontan eingefallen. z.B. bietet sich bei großen Feldern an, die Schleife bei 1. an die aktuelle Feldgroeße anzupassen. Weiterhin hat die Initialisierung mit 0 zur Folge, dass keine 0 eingegeben werden kann, also auch hier ein Nachteil.Dennoch reicht das für viele Zwecke schon aus...musst halt schaun, ob's hinhaut, ansonsten poste halt weiter...
Viele Grüße
[i]E-the-Real*
-
@Jester: du bist einfach zu schnell, da komm ich net hinterher mit dem Post...
-
In dem Quelltext von deiner Site ist noch ein kleiner Fehler:
Nur Standard Headerdateien enden ohne .h deine conio braucht ein .h,
denn sie ist kein Standard Header!MfG Max
-
OK , ich habs anders gelößt
for(i=0;i<6;i++)
{
do
{
cout <<"Die " << i+1 <<". getippte Zahl: ";
cin >> gib[i];
for (l=1;l<i;l++)
{
if(gib[l]==gib[i])
{
i--;
}
}
}
while(gib[i]>36|gib[i]<1);