@maybeivan

C++ как исправить ошибки в простейшем коде?

Добрый вечер господа. С сегодняшнего дня начал постигать основы программирования по книге Р. Лафоре, ООП C++ и тут же возникли проблемы на первых шагах в написании кода. Сам компилятор при отладке ошибок не показывает, но при запуске программы я получаю не тот результат которые описывается в книге, возможно я где то ошибся. Прошу помощи) огромное желание освоить программирование, но без помощи опытных и закаленных профи, чувствую не обойдусь, заранее спасибо
#include <iostream>
using namespace std;
int main()
{
	int ftemp; 
	cout << "Fahrenheit temperature: 212 ";
	cin >> ftemp;
	int ctemp = (ftemp-32)*5 / 9;
	cout << "Celsius temperature " << ctemp << endl;
	return 0;
}


И так же возникла проблема с символьными константами
#include <iostream>
using namespace std;
int main()
{
	char charvar1 = 'A ';
	char charvar2 = '\t ';
	cout <<charvar1;
	cout <<charvar2;
	charvar1 = 'B';
	cout <<charvar1;
	cout <<'\n '; 
	return 0;
}
  • Вопрос задан
  • 2503 просмотра
Пригласить эксперта
Ответы на вопрос 3
tsarevfs
@tsarevfs Куратор тега C++
C++ developer
Значения температуры могут получаться не правильными из-за округления при делении. int хранит только целые числа, поэтому при делении на 9 дробная часть отбрасывается. Возможные варианты исправления:
double ctemp = (double)(ftemp - 32) * 5 / 9; //явно привести тип
double ctemp = static_cast<double>(ftemp - 32) * 5 / 9; //C++ style cast - безопаснее первого (ругнется если вы пытаетесь привести что-то не то)
double ctemp = (ftemp - 32) * 5 / 9.0; //делить на константу типа double


Во втором примере char представляет только один символ (в отличие от строки). У вас же 2 вместе с пробелом.
char charvar1 = 'A '; //пробел после A
char charvar2 = '\t '; //пробел после \t
charvar1 = 'B'; //OK
cout <<'\n '; //пробел после \n


При запуске из студии консоль с выводом программы закрывается сразу же при завершении программы. Вы можете не успеть ничего увидеть.
#include <cstdlib>
...
system("pause"); //перед return 0;
Ответ написан
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Уберите дорой русские буквы из имен файлов.
Если вы списали пример со "\n" вместо endl в качестве окончания строки из учебника, учебник - на помойку.

Одинарные кавычки должны окружать ровно один символ 'a' или спецсимвол '\n'
У вас же за каким-то чертом там еще и пробел завелся, перед закрывающей кавычкой.
Ответ написан
@kstyle
одинарные кавычки на двойные замените (там где \n)
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы