000
03.04.2004, 15:41 Uhr
~Sietsch
Gast
|
Moin!
Seit 2 Std. sitz' ich nun schon an dem Schei** hier. Also, folgendes Problem. Ich will den Inhalt 2er Arrays vergleichen. In den Arrays befinden sich je 4 Felder mit je einer Ziffer. Verglichen werden soll einmal in einer Methode, die prüft ob im einen Array Ziffern gleich und an der gleichen Stelle sind, wie im anderen Array: 1 3 2 2 (Trifft hier zu) 3 1 4 1
In der anderen Methode soll geprüft werden, ob sich im einen Array Ziffern befinden, die NICHT an der richtigen Stelle sind, aber vorhanden:
1 3 (trifft hier zu) 2 2 3 1 (trifft hier zu) 4 1
Die Schwierigkeit liegt darin, dass eine Ziffer, die an der richtigen Stelle sitzt (Methode eins) auch gleichzeitig NUR vorhanden ist, also Methode zwei auch true liefert. Ich habe da schon einiges gemacht, aber es besteht nach wie vor ein Problem. Einfach wäre es, könnte man wie in PERL den Inhalt des Arrays mit push() und pop() eifach verschieben und den dann leeren Teil des Array einfach "abschneiden". Geht da in C++? Ich habe den Code mal etwas geändert, damit man ihn einfach copy&pasten kann:
C++: |
#include <iostream>
using namespace std;
int main() { int arrUser[4] = {0}; //Array mit 4 "Zellen" int arrComp[4] = {0}; //Array mit 4 "Zellen"
int userNumber = 1211; cout << userNumber << "(Zaehler i)" << endl; int compNumber = 1111; cout << compNumber << "(Zaehler j)" << endl;
//Int userNumber wird in das Array eingelesn arrUser[0] = (userNumber/1000) ; //1000er stelle von userNumber arrUser[1] = (userNumber/ 100) % 10; // 100er stelle von userNumber arrUser[2] = (userNumber/ 10) % 10 ; // 10er stelle von userNumber arrUser[3] = (userNumber% 10) ; // 1er stelle von userNumber //Int compNumber wird in das Array eingelesn arrComp[0] = (compNumber/1000) ; //1000er stelle von compNumber arrComp[1] = (compNumber/ 100) % 10; // 100er stelle von compNumber arrComp[2] = (compNumber/ 10) % 10; // 10er stelle von compNumber arrComp[3] = (compNumber% 10) ; / 1er stelle von compNumber int right = 0; for(int i=0; i<4; i++) //Zähler i für das Array arrUser { for (int j=0; j<4; j++) //Zähler j für das Array arrComp { if ((arrUser[i] == arrComp[j]) && (i!=j)) //Vergleiche die Inhalte // der Arrays {right += 1; //Wenn die Inhalte gleich, //zähle "right" um eines //nach oben cout << "\ni = " << i << "| j = " << j << "| right = " << right << endl; arrUser[i] = 0; //und lösche die übereinstimmenden //Werte, damit sie nicht mehr arrComp[j] = 0; //berückstichtig werden }//if }//for }//for
cout << "Ziffern an vorhanden, aber nicht an der richtigen Stelle: " << right << endl; return 0;
}
|
|