2010-03-07 6 views
11

Dies ist nur der erste Teil meiner Hausaufgaben, ich habe alle anderen Kompilierungsfehler behoben, aber ich bekomme diesen Fehler, Theres fünf.Versuchen, diese Hausaufgabe zu tun, aber ich bekomme immer einen Kompilierungsfehler

1>\takehome\main.cpp(39) : error C2065: 'j' : undeclared identifier 
1>\takehome\main.cpp(44) : error C2065: 'j' : undeclared identifier 
\takehome\main.cpp(45) : error C2065: 'j' : undeclared identifier 
\takehome\main.cpp(76) : error C2065: 'j' : undeclared identifier 
\takehome\main.cpp(80) : error C2065: 'j' : undeclared identifier 

Ich habe versucht, mit ihm alles zu tun, aber ich bin wahrscheinlich etwas zu tun wrong..obviously bin ich. Ich könnte etwas Hilfe gebrauchen, wenn es Ihnen nichts ausmacht :). Übrigens, falls jemand sich wundert, macht Simpletron.

#include <iostream> 
using namespace std; 

int main() 
{ 
int memory[100]; //Making it 100, since simpletron contains a 100 word mem. 

int operation; //taking the rest of these variables straight out of the book seeing as how they were italisized. 

int operand; 

int accum = 0; // the special register is starting at 0 

int position = 0; //making the starting position to be 0. 

for (int j = 0; j < 100; j++) //Simply stating that for int j is = to 0, j must be less than 100 because that is the memory limit, and for every pass-through, increment j. 

    memory[j] = 0; 


// This is for part a, it will take in positive variables in a sent-controlled loop and compute + print their sum. These are random variables. 
memory [0] = 2942; 

memory [1] = 2342; 

memory [2] = 3523; 

memory [3] = 2031; 

memory [4] = 5000; 

memory [5] = 8080; 

memory [6] = 3425; 

j = 0; //Makes the variable j start at 0. 

while (true) 
{ 

    memory[ j ]%100 = operand; // Finds the op codes from the limit on the memory (100) 
    memory[ j ]%100 = operation; 

    //using a switch loop to set up the loops for the cases 
    switch (operation){ 
    case 1: //reads a variable into a word from loc. 
    cout <<"\n Input a positive variable: "; 
    cin >> memory[ operand ]; break; 

    case 2: // takes a word from location 
    cout << "\n\nThe content at location " << operand << "is " << memory[operand]; break; 

    case 3:// loads 
    accum = memory[ operand ]; break; 

    case 4: //stores 
    memory[ operand ] = accum; break; 

    case 5: //adds 
    accum = accum + memory[ operand ]; break; 


    case 6: // subtracts 
    accum = accum - memory[ operand ]; break; 

    case 7: //divides 
    accum = accum/(memory[ operand ]); break; 

    case 8: // multiplies 
    accum = accum*memory [ operand ]; break; 

    case 9: // Branches to location 
    j = -1; break; 

    case 10: //branches if acc. is < 0 
    if (accum < 0) 
    j = 5; break; 

    case 11: //branches if acc = 0 
    if (accum == 0); break; 

    case 12: // Program ends 
    exit(0); break; 
} 
j++; 
} 
return 0; 
} 
+0

@pickypg Bitte fügen Sie keinen Hausaufgaben-Tag zu Fragen, es ist derzeit auf der schwarzen Liste (lesen Sie die Tag-Beschreibung). – Tim

+0

@Tim Ich habe die Änderung rückgängig gemacht, die der Beschreibung des Tags folgte und nicht entfernt wurde, außer die Frage musste bereinigt werden. Um ehrlich zu sein, hatte ich es immer noch zu einigen neuen Fragen hinzugefügt. – pickypg

+0

@Josh: Sie sollten sich bemühen, den Eindruck konsistent zu halten.Sie werden vielleicht überrascht sein, wie viele Fehler durch korrektes Einrücken vermieden werden können, weil Sie die Fehler beim Einrücken sehen, z. B. Variablen, die im falschen Bereich deklariert sind, wie es hier der Fall ist. :) –

Antwort

18

"j" außerhalb der "for" -Schleife deklarieren. Wenn Sie es innerhalb der Loop-Header deklarieren, ist es lokal auf den Block der Schleife und nicht sichtbar außerhalb der Schleife.

3

Sie setzen j = 0 ohne zu deklarieren wie int j = 0.

Du hast es in der for Schleife aber der lokale Bereich dauert nur für den Körper der Schleife ..

11

Wenn Sie eine Variable innerhalb einer for Aussage erklären, dass Variable ist nur in ihrem Umfang für den Körper die for Schleife, z

for (int j = 0; j < 100; j++) 
{ 
    // j is defined in here 
} 

// But j is undefined out here 
2

Wenn Sie etwas wie

for (int i = 0; i < k; ++i) 
{ 
// stuff 
} 

i im Rahmen der for Schleife nur verfügbar ist, wenn Sie also etwas tun:

for (int i = 0; i < k; ++i) 
{ 
// stuff 
} 
cout << i; 

Sie erhalten eine Zusammenstellung Fehler bei cout << i;, weil i nicht mehr existiert, nachdem die for Schleife beendet.

1

Die Variable j ist lokal für die for-Schleife. Sie müssen in ihrem Umfang zu erhöhen, um so etwas wie dies zu tun:

int j; 
for(j = 0; j < 100; ++j) 

oder es neu deklarieren später:

for(int j=0; j<100; ++j) 
... 
... 
int j = 0; 
while(true) 
... 
1

j nur in der for-Schleife existiert, dh in Anweisung

for (int j = 0; j < 100; j++) //Simply stating that for int j is = to 0, j must be less than 100 because that is the memory limit, and for every pass-through, increment j. 
    memory[j] = 0; 

Sie sollten geschrieben haben

int j; 
for(j=0;j<100;j++) 
... 
2

In C++ ist der Gültigkeitsbereich einer in einer for-Schleife deklarierten Variablen die Schleife. Also wenn du sagst:

for (int j = 0; j < 100; j++) { 
    // j only exists here (and in the for statement itself) 
} 

Die Variable j existiert nur im Körper der Schleife.

Verwandte Themen