Форум программистов, компьютерный форум CyberForum.ru

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

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

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

17.06.2013, 22:33. Просмотров 523. Ответов 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 варианта выбора. Пожалуйста, не заостряйте внимание на нехватке третьего варианта
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2013, 22:33     Программа конвертирует фаренгейт в цельсий или наоборот. Перегрузить ввод.
Посмотрите здесь:

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

Программа выводящая строку наоборот - C++
Необходимо сделать программу, с функцией, сперва меняющей местами первую и последнюю букву строки, после вторую и т.д. Функция main()...

программа переставляет слова в строке наоборот - C++
программа переставляет слова в строке наоборот, как ее дописать чтобы она ни слова а буквы переставляла #include &lt;string.h&gt; #include...

Программа, которая выводит массив наоборот - C++
Помогите написать программу: Исходными данными являются массив из 10 элементов, заполненный пользователем с клавиатуры. Написать...

Гиперболический косинус - из градусов в радианы или наоборот - C++
Помогите новичку! Нужен код нахождения Гиперболического косинуса из градусов в радианы или наоборот. Заранее благодарен!

Принадлежит ли круг целому кругу или наоборот - C++
Проверить принадлежит ли кругцелому кругуили наоборот. По принципу истина и ложь Добавлено через 22 часа 26 минут Я уже 2 день её...

Перевод числа из двоичной системы в десятичную или наоборот - C++
Нужно написать программу переводящую числа из двоичной в десятеричную систему счисления и наоборот. (Я пока что новенький искал чё-т не...

Перевод числа из двоичной системы в десятичную или наоборот - C++
Помогите написать прогу которая переводчит число из двоичной системы в десятичную или наоборот из десятичной в двоичную... Заранее...

Проверка чисел на чётность или наоборот, дальнейший вывод - C++
Написать программу, в которой вводятся 3 числа: А,В,С. Если среди них имеется хотя бы одно четное вычислить максимальное, иначе –...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ITcrusader
Эксперт C++
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'ы из сигнатуры функций
Dimsssss
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 20
17.06.2013, 22:59  [ТС]     Программа конвертирует фаренгейт в цельсий или наоборот. Перегрузить ввод. #3
блин, а как тогда перевести инт во флоат, чтобы примерное значение совпадало? : /
мне же необходимо перегружать функции.
за совет сразу ставлю тебе спасибо (в смысле уже поставил)
ITcrusader
Эксперт C++
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;
}
Yandex
Объявления
17.06.2013, 23:16     Программа конвертирует фаренгейт в цельсий или наоборот. Перегрузить ввод.
Ответ Создать тему
Опции темы

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