Я новичок в c++ и имею эту программу, которая берет сумму денег и вычисляет максимальное количество разрешенных 5 долларовых купюр и присваивает ее numFives
. Остальные деньги будут в numOnes
и должны быть назначены numOnes
. Все это предполагает, что предоставленные деньги - 19.
#include <iostream>
using namespace std;
int main() {
int amountToChange = 0;
int numFives = 0;
int numOnes = 0;
amountToChange = 19;
numFives = amountToChange / 5;
numOnes = amountToChange - (numFives * 5); //error occurs here
return 0;
}
Я предполагаю, что моя логика здесь правильная, но всякий раз, когда я запускаю код, я получаю эту ошибку:
error: ‘numFives was not declared in this scope
Кажется, что переменная инициализирована правильно, и я просто не вижу никаких проблем с кодом.
Если вы используете Visual Studio, вы отправляете сообщение об ошибке, полученное с помощью инструмента Intellisense
, отвечающего за управление тегами исходного кода C++.
Intellisense не является компилятором - если вы видите, что ваш код верен, но Intellisense дает ошибку, это не значит, что ваш код неверен.
Ваша логика правильная, и так вы отправили код.
Итак, если вы не обнаружили серьезную ошибку в своем компиляторе, я хочу сказать, что код, который вы опубликовали, не является кодом, вызывающим эту ошибку.
Мой совет - вернуться к коду и перепроверять, что вы каждый раз numFives
точно так же. Тот факт, что он только жалуется на эту переменную во второй раз, когда вы пытаетесь ее использовать, кажется, указывает на вариант с ошибкой на строке, которую вы отмечаете как ошибку.
Если необходимо, удалите эту строку и повторите ее.
Другая возможность заключается в том, что вы вырезали и вставляли код из приложения, которое позволяет странным символам, что я видел с "умными" цитатами среди прочего:
puts ("won't work");
puts ("will work");
Обычно вы можете узнать, может ли это сделать, сделав шестнадцатеричный дамп вашей программы, например, с программой Linux od
:
$ echo " puts ("won't work");" | od -xc
0000000 2020 2020 7570 7374 2820 80e2 779c 6e6f
p u t s ( 342 200 234 w o n
0000020 7427 7720 726f e26b 9d80 3b29 000a
' t w o r k 342 200 235 ) ; \n
0000035
и ищет вещи, которые не принадлежат. В вашем случае это будет что-то вокруг окончательного появления numFives
.
В стороне, вы также можете изучить использование:
numOnes = amountToChange % 5;
выработать остаток. Он "исправит" вашу проблему в том смысле, что ошибка, надеюсь, исчезнет, но я должен решить основную причину, прежде чем делать это.