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

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

Войти
Регистрация
Восстановить пароль
 
go100gi
1 / 1 / 0
Регистрация: 31.07.2013
Сообщений: 31
Завершенные тесты: 1
#1

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

12.01.2014, 18:48. Просмотров 1132. Ответов 10
Метки нет (Все метки)

Это 2 моя прога, первая была простая которая выводила Hello World так что не судите если код плохой,еще учусь.

Нужно написать программу которая переводит градусы Цельсия по Фарангейту и наоборот, используя при этом всего 1 функцию.

вот что я написал, но прога не компилится(я использовал 3 переменную т.к результаты нужной мне меняется, и для этого я создал 2 переменные с одинаковым результатом)
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
#include <iostream>
#include <conio.h>
using namespace std;
 
float Convertor(float);
 
int main()
{
 setlocale(LC_ALL, "Russian");
float tempCel,tempFar,tempConv;
cout << "Конвертор температуры" << endl; 
cout << "Введите температуру по Форангейту: ";
cin >> tempFar;
cout << "Введите температуру по цельсию: ";
cin >> tempCel;
tempConv = tempCel;
cout << "\nВы ввели:\nF="<< tempFar << "\nC=" << tempCel << endl;
 
tempCel = Convertor(tempFar);
cout << "Цельсий по Форангейту= " << tempCel << endl;
tempConv = Convertor(tempConv);
cout << "Форангейт по Цельсию= " << tempConv << endl;
_getch();
return 0;
}
 
float Convertor(float tempFar,float tempConv)
 
{
    float num1,num2;
 
    if (tempFar == tempFar)
    {
        num1 = ((tempFar - 32) * 5) / 9;
        return tempFar;
    } else
        num2 = ((tempConv * 9) / 5) + 32;
        return tempConv;
}
код ошибки:
1>------ Построение начато: проект: Проект1, Конфигурация: Debug Win32 ------
1>Исходный код.obj : error LNK2019: ссылка на неразрешенный внешний символ "float __cdecl Convertor(float)" (?Convertor@@YAMM@Z) в функции _main
1>C:\Users\Alex\documents\visual studio 2012\Projects\Проект1\Debug\Проект1.exe : fatal error LNK1120: неразрешенных внешних элементов: 1
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2014, 18:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не компилится программа, которая переводит градусы Цельсия по Фарангейту и наоборот (C++):

Перевод из градусов Цельсия в градусы Фаренгейта - C++
Я попытался написать программу по переводу градусов цельсия в градусы фаренгейта, но программа не запускается, так как мне бы хотелось,...

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

Программа, которая переводит числа в слова - C++
Здрасти всем. Есть код: #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;stdlib.h&gt; string...

Программа которая переводит из 2ой системы в 10ую - C++
Создать программу которая переводит из двоичной системы в десятичную. P.S вообще то я знаю как переводить 2ую в 10ую, ну например -...

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

программа которая переводит введенные числа в буквенную начертанию (надо немного исправить) - C++
Уважаемые программисты, помогите исправить программу, программа должна введенное с клавиатуры число переводить в письменное начертание,...

10
AnDrew_LP
160 / 160 / 9
Регистрация: 29.05.2010
Сообщений: 435
12.01.2014, 18:54 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
float Convertor(float tempFar)
 
{
    float num1,num2,tempConv;
 
    if (tempFar == tempFar)
    {
        num1 = ((tempFar - 32) * 5) / 9;
        return tempFar;
    } else
        num2 = ((tempConv * 9) / 5) + 32;
        return tempConv;
}
Что это за странное условие такое?Зачем здесь if?
C++
1
 if (tempFar == tempFar)
Вам надо написать отдельно функцию для перевода градусов Цельсия в Фаренгейт и отдельно для обратной операции
0
genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
12.01.2014, 18:54 #3
go100gi, в прототипе функции только 1 аргумент, в то время как в ее определении - 2.
0
go100gi
1 / 1 / 0
Регистрация: 31.07.2013
Сообщений: 31
Завершенные тесты: 1
12.01.2014, 18:59  [ТС] #4
Цитата Сообщение от AnDrew_LP Посмотреть сообщение
Что это за странное условие такое?Зачем здесь if?
ну if я сделал для того что бы определяло что надо переводить, градусы в фарангейт или наоборот, а как иначе без if сделать всё в 1 функции?

Добавлено через 3 минуты
Цитата Сообщение от genock94 Посмотреть сообщение
go100gi, в прототипе функции только 1 аргумент, в то время как в ее определении - 2.
изменил на
C++
1
float Convertor (float, float);
тогда пишет следующие:
1>------ Построение начато: проект: Проект1, Конфигурация: Debug Win32 ------
1> Исходный код.cpp
1>c:\users\alex\documents\visual studio 2012\projects\проект1\проект1\исходный код.cpp(19): error C2660: Convertor: функция не принимает 1 аргументов
1>c:\users\alex\documents\visual studio 2012\projects\проект1\проект1\исходный код.cpp(21): error C2660: Convertor: функция не принимает 1 аргументов
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
AnDrew_LP
160 / 160 / 9
Регистрация: 29.05.2010
Сообщений: 435
12.01.2014, 19:00 #5
Потому, что в вызове функции используется только один параметр
C++
1
tempCel = Convertor(tempFar);
tempFar всегда равен самому себе, поэтому (tempFar==tempFar) равен true всегда
0
go100gi
1 / 1 / 0
Регистрация: 31.07.2013
Сообщений: 31
Завершенные тесты: 1
12.01.2014, 19:08  [ТС] #6
если не лень и есть время подредактируй пожалуйста код, так быстрее разберусь.
0
genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
12.01.2014, 19:12 #7
go100gi, вы вызываете программу с одним аргументом, а в прототипе и в объявлении их 2. Так что либо убрать по одному аргументу из функции (но тогда смысл функции пропадает), либо переделать саму функцию
0
AnDrew_LP
160 / 160 / 9
Регистрация: 29.05.2010
Сообщений: 435
12.01.2014, 19:24 #8
Сделал с нуля
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
#include<iostream>
 
enum ConvertType
{
    ToCelsius,
    ToFahrenheit
};
 
float Converter(float, ConvertType);
 
int main()
{
    float value;
    std::cout << "Enter degrees in Celsius" << std::endl;
    std::cin >> value;
    std::cout << "Converted to Fahrenheit:" << Converter(value,ConvertType::ToFahrenheit) << std::endl;
    std::cout << "Enter degrees in Fahrenheit" << std::endl;
    std::cin >> value;
    std::cout << "Converted to Celsius:" << Converter(value,ConvertType::ToCelsius) << std::endl;
    system("pause");
    return 0;
}
 
float Converter(float Value, ConvertType type)
{
    if(type == ConvertType::ToFahrenheit)
        return ((Value * 9) / 5 + 32);
    else
        return (((Value - 32) * 5) / 9);
}
2
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
12.01.2014, 20:29 #9
AnDrew_LP, не стоит использовать в вычислениях тип float, если для этого нет особой причины. Лучше выбрать double.
0
AnDrew_LP
160 / 160 / 9
Регистрация: 29.05.2010
Сообщений: 435
12.01.2014, 20:51 #10
Цитата Сообщение от Tulosba Посмотреть сообщение
AnDrew_LP, не стоит использовать в вычислениях тип float, если для этого нет особой причины. Лучше выбрать double.
А почему? Из-за того, что точность ниже? Или есть более весомая причина?
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
12.01.2014, 21:05 #11
AnDrew_LP, причина в том, что вычисления на современных процах всё равно идут в double (если мы говорим о плавающей точке), поэтому лишние преобразования не нужны. Так же например обычное число, записанное как 3.14 имеет тип double, чтобы оно стало float нужно писать 3.14f.
1
12.01.2014, 21:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2014, 21:05
Привет! Вот еще темы с ответами:

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

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

Программа на C++, которая переводит цветовую модель RGB в модель HSV - C++
Всем привет! Я - начинающий программист. Мне нужна ваша помощь. Мне нужно сделать программу на C++, которая переводит цветовую модель RGB в...

Программа которая переводит дюймы в сантиметры и сантиметры в дюймы. В чем ошибка? - C++
в меню когда пишешь что то кроме 1 или 2 оно не выводит то что написано в default #include &lt;iostream&gt; #include &lt;conio.h&gt; using...


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

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

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