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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 5.00
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
#1

Функция Цельсий и Фаренгейт - C++

16.10.2012, 00:09. Просмотров 2263. Ответов 8
Метки нет (Все метки)

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

Вот код который я написал
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
#include<stdio.h>
#include<conio.h>
#include <locale.h>
float farengeit(float);
float celsiy(float);
int main() 
{
    setlocale(LC_ALL,"ukrainian");
    float t, a, b;
    char l;
    printf("Введіть F якщо вводите за Фаренгейтом \n Введіть C, якщо за Цельсієм");
    scanf("%c", &l);
    switch(l)
    {
    case'f': printf("Введіть температуру в Фаренгейтах:"); break;
    case'F': printf("Введіть температуру в Фаренгейтах:"); break;
    case'C': printf("Введіть температуру в Цельсіях:"); break;
    case'c': printf("Введіть температуру в Цельсіях:"); break;
    default: printf("Помилка програми: введено ні С, ні F");
    }
    scanf("%f", &t);
    if(l=='F' || l=='f')
        float T=celsiy(b);
    if(l=='c' || l=='C')
        float T=farengeit(a);
    getch();
    return 0;
}
float farengeit(float x)
{
    return x/2;
}
float celsiy(float x)
{
    return 2/x;
}
програма запускаеться, но после того как введу температуру - ошибка. в чем тут проблема. поправьте код в тех местах где ошибка, а не полностю весь код, а то я ето сам написал, и немного понимаю написаное.

Добавлено через 4 минуты
ЗЫ, функции пока не посчитают температуру правильно, те формулы что в функциях просто так написал, для наглядности, лень пока искать формулу обчысления фаренгейта в цельсий и наоборот.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2012, 00:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция Цельсий и Фаренгейт (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++
Всем привет! Столкнулся с некоторой трудностью, разбираясь с перегрузками. Пишу следующий код. #include &lt;iostream&gt; float CelFar...

Цельсий в Фaренгейт и Реoмюр - C++
========== Для тeмпературы от -5 до +5 °C с шaгом 1.25 °C вывeсти соoтвeтствующие знaчения по Фaренгейту и Реoмюру. oформить вывoд в...

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
-=ЮрА=-
Заблокирован
Автор FAQ
16.10.2012, 00:27 #2
ozzy_b, лови Не работает перевод из Фаренгейта в Цельсий

Не по теме:

(правда тогдашний ТС обозвал Фаренгейта Фарадеем)

ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
16.10.2012, 01:13  [ТС] #3
но меня интересует ошибка моего кода, который я сам написал.
-=ЮрА=-
Заблокирован
Автор FAQ
16.10.2012, 01:52 #4
Цитата Сообщение от ozzy_b Посмотреть сообщение
но меня интересует ошибка моего кода, который я сам написал.
- Разница между градусом цельсия и градусом Фаренгейта составляет 32 * 5/9 а у тебя в коде
Цитата Сообщение от ozzy_b Посмотреть сообщение
return x/2;
}
float celsiy(float x)
{
* * return 2/x;
Где ты взял свои формулы?
http://www.bereg.ru/sprav_info/inform/gradus.shtml
При переводе из шкалы Фаренгейта в шкалу Цельсия из исходной цифры вычитают 32 и умножают на 5/9.
При переводе из шкалы Цельсия в шкалу Фаренгейта исходную цифру умножают на 9/5 и прибавляют 32.
Кроме всего прочего -
Цитата Сообщение от ozzy_b Посмотреть сообщение
float T=celsiy(b);
* * if(l=='c' || l=='C')
* * * * float T=farengeit(a);
- повторное объявление. И самое странное - у программы просто нет вывода на экран
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
16.10.2012, 02:14  [ТС] #5
формулы пока неважны, важен сам код, он после ввода градуса выдает ошибку

Добавлено через 4 минуты
во так дописал, но в чем проблема сечас?
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
#include<stdio.h>
#include<conio.h>
#include <locale.h>
float farengeit(float);
float celsiy(float);
int main() 
{
    setlocale(LC_ALL,"ukrainian");
    float t, a, b;
    char l;
    printf("Введіть F якщо вводите за Фаренгейтом \n Введіть C, якщо за Цельсієм");
    scanf("%c", &l);
    switch(l)
    {
    case'f': printf("Введіть температуру в Фаренгейтах:"); break;
    case'F': printf("Введіть температуру в Фаренгейтах:"); break;
    case'C': printf("Введіть температуру в Цельсіях:"); break;
    case'c': printf("Введіть температуру в Цельсіях:"); break;
    default: printf("Помилка програми: введено ні С, ні F");
    }
    scanf("%f", &t);
    if(l=='F' || l=='f')
        float T=celsiy(b);
    if(l=='c' || l=='C')
        float T=farengeit(a);
    printf ("T=&T", T);
    getch();
    return 0;
}
float farengeit(float x)
{
    return (x*(5/9))-32;
}
float celsiy(float x)
{
    return (x-32)*(5/9);
}
Добавлено через 2 минуты
я не могу понять так призвать нужную мне ф-цию в зависимости от того введу я F или C

Добавлено через 4 минуты
и каким образом функция возьмет к себе t, как ето прописать?
-=ЮрА=-
Заблокирован
Автор FAQ
16.10.2012, 02:20 #6
Цитата Сообщение от ozzy_b Посмотреть сообщение
я не могу понять так призвать нужную мне ф-цию в зависимости от того введу я F или C
Добавлено через 4 минуты
и каким образом функция возьмет к себе t, как ето прописать?
Выделил оставшиеся ошибки
Цитата Сообщение от ozzy_b Посмотреть сообщение
float T=celsiy(b);
Цитата Сообщение от ozzy_b Посмотреть сообщение
float T=farengeit(a);
Цитата Сообщение от ozzy_b Посмотреть сообщение
printf ("T=&T", T);
- неверный спецификатор формата!
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
16.10.2012, 02:24  [ТС] #7
немного подумал, поправил, посмотрите правильно ли все с ф-циями. и почему в конце кода, где вывод Т пишет что индификатор Т неопределен?
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
#include<stdio.h>
#include<conio.h>
#include <locale.h>
float farengeit(float);
float celsiy(float);
int main() 
{
    setlocale(LC_ALL,"ukrainian");
    float t, a, b;
    char l;
    printf("Введіть F якщо вводите за Фаренгейтом \n Введіть C, якщо за Цельсієм");
    scanf("%c", &l);
    switch(l)
    {
    case'f': printf("Введіть температуру в Фаренгейтах:"); break;
    case'F': printf("Введіть температуру в Фаренгейтах:"); break;
    case'C': printf("Введіть температуру в Цельсіях:"); break;
    case'c': printf("Введіть температуру в Цельсіях:"); break;
    default: printf("Помилка програми: введено ні С, ні F");
    }
    scanf("%f", &t);
    if(l=='F' || l=='f')
        float T=celsiy(t);
    if(l=='c' || l=='C')
        float T=farengeit(t);
    printf ("T=%f", T);
    getch();
    return 0;
}
float farengeit(float x)
{
    return (x*(5/9))-32;
}
float celsiy(float x)
{
    return (x-32)*(5/9);
}
Добавлено через 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
#include<stdio.h>
#include<conio.h>
#include <locale.h>
float farengeit(float);
float celsiy(float);
int main() 
{
    setlocale(LC_ALL,"ukrainian");
    float t, T;
    char l;
    printf("Введіть F якщо вводите за Фаренгейтом \n Введіть C, якщо за Цельсієм");
    scanf("%c", &l);
    switch(l)
    {
    case'f': printf("Введіть температуру в Фаренгейтах:"); break;
    case'F': printf("Введіть температуру в Фаренгейтах:"); break;
    case'C': printf("Введіть температуру в Цельсіях:"); break;
    case'c': printf("Введіть температуру в Цельсіях:"); break;
    default: printf("Помилка програми: введено ні С, ні F");
    }
    scanf("%f", &t);
    if(l=='F' || l=='f')
        T=celsiy(t);
    if(l=='c' || l=='C')
        T=farengeit(t);
    printf ("T=%f", T);
    getch();
    return 0;
}
float farengeit(float x)
{
    return (x*(5/9))-32;
}
float celsiy(float x)
{
    return (x-32)*(5/9);
}
-=ЮрА=-
Заблокирован
Автор FAQ
16.10.2012, 02:40 #8
Цитата Сообщение от ozzy_b Посмотреть сообщение
чтото считаеться, но фигня получаеться (((
- ну а формулы ты свои проверил, сейчас именно в них фигня несоответвующая тому что написано выше

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
При переводе из шкалы Фаренгейта в шкалу Цельсия из исходной цифры вычитают 32 и умножают на 5/9.
При переводе из шкалы Цельсия в шкалу Фаренгейта исходную цифру умножают на 9/5 и прибавляют 32.
+ друг ну кто пишет 5/9 вот такой дробь?Это же будет целое на целое
Короче вот твой код который считает
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<stdio.h>
#include<conio.h>
#include <locale.h>
 
float farengeit(float);
float celsiy(float);
 
int main() 
{
    setlocale(LC_ALL,"ukrainian");
    float t, T;
    char l;
    printf("Введіть F якщо вводите за Фаренгейтом\n Введіть C, якщо за Цельсієм : ");
    scanf("%c", &l);
    switch(l)
    {
        case'f': printf("Введіть температуру в Фаренгейтах:"); break;
        case'F': printf("Введіть температуру в Фаренгейтах:"); break;
        case'C': printf("Введіть температуру в Цельсіях:"); break;
        case'c': printf("Введіть температуру в Цельсіях:"); break;
        default: printf("Помилка програми: введено ні С, ні F");
    }
    scanf("%f", &t);
    if(l=='F' || l=='f')
        T=farengeit(t);
    if(l=='c' || l=='C')
        T=celsiy(t);
    printf ("T = %f", T);
    getch();
    return 0;
}
float farengeit(float x)
{
    return 5*(x - 32)/9;
}
float celsiy(float x)
{
    return (x*9)/5 + 32.0;
}
Миниатюры
Функция Цельсий и Фаренгейт  
Вложения
Тип файла: rar CelciFareng.exe.rar (43.5 Кб, 3 просмотров)
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
16.10.2012, 17:39  [ТС] #9
спасибо, тепер все работает)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2012, 17:39
Привет! Вот еще темы с ответами:

Перевести из Цельсия в Фаренгейт - C++
Помогите решить задачу! дано значения температуры Т в градусах Цельсия.Определить значение этой же температуры в градусах...

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

Перегрузка операций: friend-функция или функция-член класса - C++
Здравствуйте, меня интересует вопрос, в чем разница при перегрузке операторов через operator и friend. Вот к примеру такой код. class...

Функция sqrt: существует более одного экземпляра. Функция перегруженная - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;iomanip&gt; using namespace std; int main(){ float s, p; int c, a; s=0; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.10.2012, 17:39
Ответ Создать тему
Опции темы

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