2016-05-14 12 views
-3

Ich bin verwirrt darüber, wie ich durch meine Int durchlaufen kann, und dann das Ergebnis in einen Int-Vektor .. Ich muss dies für ein Spiel tun, Hilfe würde sehr geschätzt werden .. ehrlich gesagt, ich habe keine Vorstellung davon, wie diese Funktion zu machen, die durch int laufen wird ...Wie iterate durch int?

cout << "\n PLEASE ENTER A 4 DIGIT BINARY! OR PROGRAM WILL EXIT \n\n\t"; 
cin >> binaryCin; 
evaluateNum(binaryCin);  

void MasterMind::evaluateNum(int &bin) { 
    // Need to iterate through binarycin and then put it in a vector<int>.. 
} 
+0

So erwarten Sie 1010? Oder 1234? Oder 1 eingeben 2 eingeben 3 usw.? – Caperneoignis

+0

Was möchten Sie in diesem Vektor von Ints? Nur die eine Nummer? – cuniculus

+0

yea @Caperneoignis ein 4letter binär – SDFSF

Antwort

1

okay, da Sie keine Strings verwenden können, muss ich werde meine Antwort ändern. Also für den Sack der Geschwindigkeit. Ich werde Mathe verwenden. Zero ist ein bisschen ein Problem, aber habe einfach eine if-Anweisung, um den Platzhalter nach der Division zu überprüfen, und geh einfach von dort. Ich bin mir sicher, dass es eine Bibliothek gibt, mit der du das leichter machen kannst, aber es klingt nicht so, als könntest du das alles benutzen, fast so, als ob es Hausaufgaben wären. Also müssen wir es so machen. Sorgen Sie auch nicht um die Dezimalstelle, da es die Dezimalstelle absenkt. soo 427/100 = 4.27 was in int wird nur 4. Ich glaube, der Compiler schneidet immer ab, wenn ich falsch liege, lass es mich wissen.

void MasterMind::evaluateNum(int &bin) 
{ 
    std::vector<int> numbers(); 
    int thousand,hundred,ten; 
    int placeholder = 0; 
    thousand = 1000; 
    //bin = 4327 
    placeholder = thousand/bin; 
    //subtract the thousand position out of bin 
    bin -= placeholder * thousand; 
    numbers.push_back(placeholder); 
    //now you have 327 
    //subtract the hundreds spot now 
    hundred = 100; 
    placeholder = hundred/bin; 
    bin -= placeholder * thousand; 
    numbers.push_back(placeholder); 
    //now you have 27 now tens 
    ten = 10; 
    placeholder = ten/bin; 
    bin -= placeholder * ten; 
    //now you have just 7 in bin and 2 in place holder 
    numbers.push_back(placeholder); 
    numbers.push_back(bin); 
} 

Das ist, wie Sie die Ints auseinander ziehen, die vom Benutzer übergeben wurden. Sie sollten eine Überprüfung durchführen, um sicherzustellen, dass die Nummer nicht zu groß ist. Sie müssen eine Überprüfung/Bedingung für 0 hinzufügen und den Platzhalter einfach weglassen, wenn der Wert 0 ist, also anstelle von bin -= placeholder * ten. es wäre bin -= ten; oder einfach überspringen Sie es vollständig, ich erinnere mich nicht, wenn C++ 026 als 026 oder nur 26 behandelt. Führen Sie es einmal mit einer Null und Sie werden Ihre Antwort haben.

+0

Ich möchte nicht in String ändern .. das ist der Punkt. Ich schlafe jetzt – SDFSF

0

Dies wäre besser als

mathematische Grundlage Berechnung festen Tun
void MasterMind::evaluateNum(int &bin) { 
     int n = bin; 
     int i=0; 
     vector<int> arr; 
     while(n!=0){     // loop will work for any size of binary number 
      int tmp = n & 1; 
      arr.push_back(tmp); 
      n>>=1; 
      i++; 
     } 
     std::reverse(arr.begin(),arr.end()); // since loop will give you reverse 
} 

Und ich sehe keine Zeichenfolge, die Sie „nicht geändert“ wollen würden, aber wenn u ist beziehe wurden dann wird es nicht geändert werden mit zusätzlichen Variable