2016-05-05 4 views
0

Ich versuche ein binäres Array einzugeben, das eine Beziehung darstellt. Als Beispiel das Array:Eingabe eines Beziehungsfeldes

001 
000 
100 

würde Ausgang (0,2), (2,0)

Um dies zu tun Ich versuche Zeichen einer nach dem anderen von der Eingabe zu packen, und dann Ändern Sie die Zähler basierend auf einer neuen Zeile.

Hier ist mein Code so weit.

char inChar; 
int x = 0; 
int y = 0; 
while (inChar = ins.get() != '$') { 
     //$ is used to terminate input 
     vector <int> orderedPair; 
     if(inChar == '\n') { 
      y++; 
      x=0; 
     } else { 
      x++; 
     } 
     cout << inChar; 
     int isPair = inChar - '0'; 
     if(isPair == 1){ 
      orderedPair.push_back(x); 
      orderedPair.push_back(y); 
      pointsList.push_back(orderedPair); 
      orderedPair.clear(); 
     } 

} 

Doch diese Cout-Linie gibt nur ... Smiley-Gesichter? Egal, was ich betrete, ich bekomme nur Smiley-Gesichter. Ich bin hier verloren. Ich habe nach einer zufälligen Zuordnung gesucht, und ich dachte, es könnte ein Problem mit meiner Typumwandlung sein, aber das ist später.

Antwort

1

inChar = ins.get() != '$' bedeutet inChar = (ins.get() != '$') und ob das gelesene Zeichen gleich '$' oder nicht, wird auf inChar anstelle des Zeichens selbst gespeichert werden. Sie können (inChar = ins.get()) != '$' verwenden, um die Eingabe zu speichern, indem Sie prüfen, ob die Eingabe '$' ist.

Beachten Sie auch, dass orderedPair bei jeder Iteration gelöscht wird, da es als lokale Variable des Blocks deklariert ist, so dass Sie orderedPair.clear(); nicht benötigen.

Verwandte Themen