2011-10-31 11 views
6

Soy nuevo en C++ y estoy tratando de aumentar los automóviles comenzando con el valor 50, pero solo aumentaré en uno si el daño es mayor que un daño. Quiero que los autos mantengan su valor para la próxima vez que lo haga a través del circuito. Espero que esto tenga sentido.cómo incrementar una variable referenciada por 1

int Power (int &car); 

int main(){ 
    int car = 50; 
    // ... 
    // ... 
    // ... 

    int carDamage = 0; 
    int yourDamage = 0; 
    // pick a random number between 1 to 50 
    yourDamage = 0 + rand() % (50 - 0 + 1); 
    carDamage = 0 + rand() % (50 - 0 + 1); 
    cout << "You hit the car and cause damage of: " << carDamage << endl; 
    cout << "The car hits you and causes damage of: " << yourDamage << endl; 
    cout << endl; 

    if(carDamage < yourDamage) 
    { 
     cout << "You win" << endl; 
     cout << "You gain strength." << endl; 
     cout << endl; 
     int car = car + 1; 
    } 
    else 
    { 

Respuesta

8

Usted está declarando una nueva variable que cubrían el original.

cambio

int car = car + 1; 

a

car = car + 1; 
7

necesita reasignar a la misma variable. Estás declarando una nueva variable.

cambiar esta situación:

int car = car + 1; 

A esto:

++car; 
0

Usted está declarando una variable nueva car dentro de la sentencia if que oculta la car variable original del alcance anteriormente. La eliminación del tipo le permitirá hacer referencia a la variable existente en lugar de declarar una nueva.

En resumen, el cambio

int car = car + 1; 

a

car = car + 1; 
0

Su problema es que cuando se dice

int car = car + 1; 

Estás creando básicamente un coche variable local llamada (local al instrucción if) a la que se le asigna el valor de 51 (dado que la variable de ámbito local original (de local a main) contiene 5 0 y agrega 1). Esta variable local (el encendido en la declaración if) se destruye una vez que sale de la instrucción if.

Si cambia esto a

car = car + 1; 

Ahora está modificando la variable local al principal, y por lo tanto se mantendrá la actualización.

0

no veo un lazo, pero voy a aventurar una respuesta que su problema es que usted está haciendo esta línea:

int car = car + 1; 

en su:

if(carDamage < yourDamage) 

declaración que significa que está redeclarando cada vez, restableciendo su valor.

escribir la int car; outsize la declaración y sólo hacer ++car; dentro del bucle en el que originalmente escribió int car = car + 1;

1

Al hacer esto:

int car = car + 1; 

Usted está redefiniendo coche como un entero.

véase:

#include <stdio.h> 
int car; 
int main() { 
    car = 0; 
    for (int i = 0; i < 10; i++) { 
     int car = 0; 
     car++; 
    } 
    printf("%3d", car); 
} 

vs

#include <stdio.h> 
int car; 
int main() { 
    car = 0; 
    for (int i = 0; i < 10; i++) { 
     car++; 
    } 
    printf("%3d", car); 
} 
Cuestiones relacionadas