Как получить правильный ответ, а не только случайные числа? - PullRequest
0 голосов
/ 20 апреля 2020

Как я уже сказал, я пытаюсь провести политический тест, и я сделал тест, чтобы убедиться, что могу добавить ось 'их значение, но это просто дает мне случайное число вместо желаемых ответов. Я довольно новичок в C ++ и пытался напрячь свои мышцы, создающие функции, но, вероятно, что-то напутал. Я много чего перепробовал, но это просто не сработало. Если вы можете, пожалуйста, помогите мне и скажите, как получить правильное значение.

#include <iostream>

int adding_value (int, int);

int main() {
    int x; //this was to be the answer of the user
    int y; //this was to be the axis that gets value added 
    std::cin >> x;
    std::cout << "\n";
    int z = adding_value(x, y);
    std::cout << z << std::endl;

}

int adding_value (int x, int y) {

    switch (x) {
        case 1: {
            int y = y + 2;
            break; }
        case 2: {
            y++;
            break; }
        case 3: {
            break; }
        case 4: {
            y--;
            break; }
        case 5: {
            y = y - 2;
            break; }
    return y;
}
}

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Первое, что вам нужно сделать, это включить предупреждения вашего компилятора. Если бы вы сделали это, вы бы увидели:

<source>: In function 'int main()':

<source>:10:25: warning: 'y' is used uninitialized in this function [-Wuninitialized]

   10 |     int z = adding_value(x, y);

      |             ~~~~~~~~~~~~^~~~~~

Compiler returned: 0

y не инициализировано. Доступ к нему ведет к неопределенному поведению. Вы, вероятно, хотели читать из cin в y.


<source>:34:1: warning: non-void function does not return a value [-Wreturn-type]

}

<source>:19:21: warning: variable 'y' is uninitialized when used within its own initialization [-Wuninitialized]

            int y = y + 2;

                ~   ^
0 голосов
/ 20 апреля 2020

Попытайтесь инициализировать y перед передачей его в качестве параметра в функцию add_value ().

Случайное значение y , проходящее через функцию add_value () и некоторые операции y дает случайное значение, поэтому вы получаете случайное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...