2016-07-18 5 views
-1

In meinem Programm arbeite ich an einer Funktion, die Benutzer eingegebene Zeile, Spalte und neuen Wert, die den alten Wert im gleichen Index eines 2d-Array von gleichen Dimensionen, die auf eine Konstante Int 5 gesetzt wurden, ersetzt. (es ist ein Quadrat) Hier ist, was ich zu tun versucht:Wie ändert man den Wert bei einer vom Benutzer eingegebenen Zeile und Spalte eines 2d C++ Arrays?

cout << "Input the row, the column, and new value: " << endl; 
    cin >> changeR >> changeC >> newval; 

    Sqarr[changeR, changeC] = newval; 

ich eine Fehlermeldung bekam, dass mein Ausdruck ein modifizierbarer Wert sein muss.

Ist meine Strategie falsch? kann ich das nicht mit einem 2d Array tun?

+2

Ein Array von Arrays in C++ (oder C) wird indiziert als 'Squar [changeR] [changeC] = ...'. Ihr Code versucht im Wesentlichen "Squar [changeC] = ..." zuzuweisen. Sehen Sie sich den [comma operator] (http://en.cppreference.com/w/cpp/language/operator_other) an, um besser zu verstehen, was Sie eigentlich tun. – WhozCraig

+0

Lesen Sie Ihre Notizen erneut. Auf ein 2D-Array in C++ wird mit '[x] [y]', nicht '[x, y]' zugegriffen. – PaulMcKenzie

Antwort

2

Sie haben einfach die falsche Syntax verwendet. Während das, was Sie Werke für andere Sprachen haben, in C/C++ hat es eine andere Bedeutung:

Sqarr[changeR, changeC] = newval; 

nicht tut, was es in anderen Sprachen tut. Was Sie wollen, ist:

Sqarr[changeR][changeC] = newval; 

Die Top-Anweisung verwendet C-Schema „Komma“ Operator, der den ersten Wert auswertet (changeR) wertet dann den zweiten Wert (changeC) und gibt einfach den zweiten Wert. Das würde nur die Zeile Sqarr indizieren, die Sie nicht newval zuweisen können.

Die untere sagt "Holen Sie sich die changeR Reihe von Sqarr, und indizieren Sie dann die changeC Spalte aus."

0

Falsche Syntax. Es muss sein:

array[row][col] = value; 

Und ich würde Array-Indizes überprüfen.