Переменная не объявлена в этой области c ++

0

Я новичок в 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

Кажется, что переменная инициализирована правильно, и я просто не вижу никаких проблем с кодом.

  • 1
    Выглядит правильно для меня - это код, который дает ошибку?
  • 1
    Просто к вашему сведению, «определенные» и «объявленные» не означают одно и то же. Но ваш код должен скомпилироваться.
Показать ещё 6 комментариев
Теги:

2 ответа

0

Если вы используете Visual Studio, вы отправляете сообщение об ошибке, полученное с помощью инструмента Intellisense, отвечающего за управление тегами исходного кода C++.

Intellisense не является компилятором - если вы видите, что ваш код верен, но Intellisense дает ошибку, это не значит, что ваш код неверен.

0

Ваша логика правильная, и так вы отправили код.

Итак, если вы не обнаружили серьезную ошибку в своем компиляторе, я хочу сказать, что код, который вы опубликовали, не является кодом, вызывающим эту ошибку.

Мой совет - вернуться к коду и перепроверять, что вы каждый раз 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;

выработать остаток. Он "исправит" вашу проблему в том смысле, что ошибка, надеюсь, исчезнет, но я должен решить основную причину, прежде чем делать это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню