Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Dimsssss
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 20
#1

Программа конвертирует фаренгейт в цельсий или наоборот. Перегрузить ввод. - C++

17.06.2013, 22:33. Просмотров 542. Ответов 3
Метки нет (Все метки)

Всем привет! Столкнулся с некоторой трудностью, разбираясь с перегрузками. Пишу следующий код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
 
float CelFar (float);
float CelFar (int);
float FarCel (float);
float FarCel (int);
 
int main()
{int fareng=0;
int celciy=0;
int choose=0;
std::cout<<"Fahrengate or Celciy [F(1)-C(2)]\n";
std::cin>>choose;
std::cout<<"Enter temperature:\n";
if (choose == 1){
std::cin>>fareng;
float FarCel(fareng);
}
if (choose == 2){
std::cin>>celciy;           
float CelFar(celciy);
}
if (choose == 1)
std::cout<<"Your Fahrengate temperature was: "<<fareng<<". And its equal to "<<celciy<<" degrees of Celciy.\n";   
if (choose == 2)
std::cout<<"Your Celciy temperature was: "<<celciy<<". And its equal to "<<fareng<<" degrees of Fahrengate.\n";                                         
system("PAUSE");
}
 
float CelFar (float celciy)
      {
      float fareng;
      fareng = ((celciy * 9)/5) + 32;
      return fareng;
      }
float CelFar (int celciy)
      {
      float fareng;
      fareng = ((celciy * 9)/5) + 32;
      return fareng;
      }      
float FarCel (float fareng)
      {
      float celciy;
      celciy = ((fareng - 32) * 5)/9;
      return celciy;
      }
float FarCel (int fareng)
      {
      float celciy;
      celciy = ((fareng - 32) * 5)/9;
      return celciy;
      }
Прога конвертирует фаренгейт в цельсий или наоборот. В зависимости от выбора. Но в конечном итоге код выводит неправильные данные (вероятно я чего-то напутал). Хотелось бы вас послушать по этому поводу.
З.Ы. я рассмотрел в тестовой версии только 2 варианта выбора. Пожалуйста, не заостряйте внимание на нехватке третьего варианта
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2013, 22:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа конвертирует фаренгейт в цельсий или наоборот. Перегрузить ввод. (C++):

Фаренгейт и Цельсий - C++
Друзья! В книге по С++ есть програмка вывода таблицы температур по фаренгейту и цельсию. Запускаю ее в MS Visual C++ 2008. Вот...

Ошибки - цельсий в фаренгейт - C++
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void Filework(float* r,...

Функция Цельсий и Фаренгейт - C++
Есть задача: Напишите следующие функции:  Функция celsius, которая возвращает температуру по Цельсию, эквивалентную температуре по...

Из Цельсия в Фаренгейт и наоборот - C++
Написать программу, которая переводит значение температуры из шкалы Цельсия в шкалу Фаренгейта и наоборот, и преобразовует. Использовать в...

Конвертер цельсий в фаренгейт и наоборот - Java SE
По заданию должен был написать код, который будет переводить Фаренгейт в Цельсий и наоборот, вроде написал, но что-то все равно не так,...

Преобразование температуры Фаренгейт-Цельсий - Java
Друзья! Кто поможет с объяснение, как реализовать данную задачку? класс TemperatureConverter. метод для преобразования...

3
ITcrusader
Эксперт С++
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
17.06.2013, 22:38 #2
Dimsssss, смари:

C++
1
2
3
4
5
6
float CelFar (int celciy)
      {
      float fareng;
      fareng = ((celciy * 9)/5) + 32;
      return fareng;
      }
тут, например, у тебя следующее: celciy имеет тип int, предположим, ты передашь функции двойку. Получаешь:
((2 * 9) / 5) + 32 = ((18) / 5) + 32 = (18 / 5) + 32 = 3 + 32 = 35. После этого 35 переводится во float и возвращается как результат.
Почему? да потому что целочисленная арифметика работает. убери нафиг int'ы из сигнатуры функций
1
Dimsssss
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 20
17.06.2013, 22:59  [ТС] #3
блин, а как тогда перевести инт во флоат, чтобы примерное значение совпадало? : /
мне же необходимо перегружать функции.
за совет сразу ставлю тебе спасибо (в смысле уже поставил)
0
ITcrusader
Эксперт С++
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
17.06.2013, 23:16 #4
Dimsssss, тай, я не понимаю, цельсии что, требуют int? Я считаю, что int в твоей предметной области - вообще не к месту. Если хочешь его оставить - пользуйся преобразованием типов (за него обычно отрывают руки. А, да, и нога, ну и еще..., довольно, не будем продолжать)
C++
1
2
3
4
5
6
float CelFar (int celciy)
      {
      float fareng;
      fareng = ((static_cast<float>(celciy) * 9)/5) + 32;
      return fareng;
      }
Причем, конструкцию static_cast<float>(celciy) нужно использовать всегда, когда хочешь, чтобы celciy воспринимался как float, являясь при этом int'ом

Для справки, твою функцию можно укоротить в 3 раза)))
C++
1
2
3
4
float CelFar (int celciy)
{      
      return  ( ( static_cast<float>( celciy ) * 9 ) / 5 ) + 32;
}
1
17.06.2013, 23:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2013, 23:16
Привет! Вот еще темы с ответами:

Конвертер температур (Цельсий - Фаренгейт) - Программирование Android
Здравствуйте, для курсовой нужно разработать приложение, я только учусь этому. Вот, что у меня получается: Код: import...

Функция преобразования температуры из Фаренгейт в Цельсий - C (СИ)
Прошу помочь разобраться в проблеме, возникающей при компилляции данной программы. #include &lt;stdio.h&gt; #define lower 0 //нижний...

Конвертер Цельсий/Фаренгейт, необходимо устранить ошибки - Lazarus
1) не выводит дробные значения (ошибку выдает) 2) при очистке график не изменяется.

Добавить в класс метод для преобразования температур (Цельсий <-> Фаренгейт) - Java SE
Здравствуйте! Есть вот такая задача: Создайте новый класс и назовите его TemperatureConverter. Добавьте в него метод для преобразования...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.