Задать вопрос
@Danyatuzat

C++. В программе ошибка не могу найти, скажите где она?

#include
#include
#include

using std::cin;
using std::cout;
using std::endl;

int main()

{
setlocale ( LC_ALL, "Russian");

const double Size = 1000;

double Kilometers;
double Meters;
double Santimeters;
double Milimeters;

cout << "Введите кол-во километров" << endl;
cin >> Kilometers;

Kilometers = Meters * Size;
Meters = Santimeters * Size;
Santimeters = Milimeters * 10;

cout << "В " << Kilometers << "километрах есть " << Meters << " метров\n" << endl;
cout << "В " << Meters << "метрах - " << Santimeters << " сантиметров\n" << endl;
cout << "В " << Santimeters << "сантиметрах есть " << Milimeters << "миллиметров\n" << endl;

_getch();
return 0;
}
____________________________________________________________________________________________________________________

1>------ Построение начато: проект: Проект8, Конфигурация: Debug Win32 ------
1> main.cpp
1>c:\users\danyatuzat\documents\visual studio 2012\projects\проект8\проект8\main.cpp(25): error C4700: использована неинициализированная локальная переменная "Meters"
1>c:\users\danyatuzat\documents\visual studio 2012\projects\проект8\проект8\main.cpp(26): error C4700: использована неинициализированная локальная переменная "Santimeters"
1>c:\users\danyatuzat\documents\visual studio 2012\projects\проект8\проект8\main.cpp(27): error C4700: использована неинициализированная локальная переменная "Milimeters"
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
  • Вопрос задан
  • 650 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
@vilgeforce
Раздолбай и программист
Вам компилер русским по белому написал: используется неинициализированная переменная. Указал какая и где. Читайте сообщения компилера ПЕРЕД тем как задавать вопросы.
Ответ написан
Ashlst
@Ashlst
Фанат эстетики и красивых решений.
Могу ошибаться т.к. давно не писал на плюсах
#include
#include
#include

Что подключил??

cout << "Введите кол-во километров" << endl;
cin >> Kilometers;
Kilometers = Meters * Size;

Зачем вводить,а потом перезаписвать значение переменной??

double Kilometers;
double Meters;
double Santimeters;
double Milimeters;

Переменные неинициализированны.

Вообще,какой-то трудночитаемый код получился (имхо)
Ответ написан
Комментировать
@localghost
Попробуйте взять на себя роль компилятора и построчно пройти по программе сверху вниз.
Что вы, как компилятор, должны были бы посчитать в строке 25?

Edited: И не обращайте внимания на резкий комментарий выше. В рунете почему-то не принято помогать абсолютным новичкам. Такое впечатление, что у людей массово не работает theory of mind и любую очевидную для себя вещь они полагают очевидной всем, а любую попытку выяснить что-то простое принимают за попытку свалить свою работу на другого.
Ответ написан
@n3k0
Я в крестах дилетант, но рискну предположить, что они (кресты) после объявления переменных записывают в них какой-нибудь null или NaN или вообще ничего.
Соответственно компилятор в строке 25 (и последующих) давится на следующем:

Kilometers = Meters * Size
Kilometers у тебя инициализированна руками, через cin.
Size у тебя константа инициализированная при объявлении.
А вот в переменной Meters у тебя null / NaN / еще какой-нибудь мордор.

Поправьте, если я что-нибудь напутал.
Ответ написан
Skellig
@Skellig
Fratercula arctica
Различайте объявление (указание типа и имени) и инициализацию (присваиваивание значения) переменной. Память для переменной выделяется не при объявлении, а именно при инициализации. Если вы считали, что этим переменным при объявлении присваивается дефолтное численное значение 0, то вы ошибались – на момент использования Meters, Santimeters и Milimeters для компилятора просто не существуют. Удачи.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы