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

Из цельсия в фаренгейты - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.95
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1145 / 427 / 19
Регистрация: 23.06.2009
Сообщений: 6,153
Завершенные тесты: 1
22.08.2009, 23:33     Из цельсия в фаренгейты #1
у меня есть код
Код
int main()
  {

	  double f=70;
double c=0;

cout << "C    |    F";
while(c!=50){



c=c+10;
    
printf("c=%f f=%f\n",  c=(5.0/9.0) * (f -32.0), f);

}
то есть что тут происходит, оператор вайл написать с=n f=n до тех пор пока с не бует равным 50..то есть вначале с=0.но с=(5.0/9.0) * (f -32.0)
когда я с присвоиваю вот это программа сбивается и пишет какую то фигню...
можете мне помочь буду рад!если возможно других методов не предоставить т.к. хочу написать свою
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2009, 23:33     Из цельсия в фаренгейты
Посмотрите здесь:

Напишите функцию, которая меняет значение температуры в градусах Цельсия C++
C++ Перевести из Цельсия в Фаренгейт
C++ Перевод температуры из градусов по шкале Цельсия в градусы по шкале Фаренгейта
Перевод из Цельсия в Фаренгейт C++
Не компилится программа, которая переводит градусы Цельсия по Фарангейту и наоборот C++
Перевод из Цельсия в Фаренгейты, непонятный результат работы кода C++
C++ Перевод температуры с Цельсия на Фаренгейт
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
23.08.2009, 00:03     Из цельсия в фаренгейты #2
Во первых на форуме неоднократно говорилось, что для вещественных чисел практически невозможно получить целое число, т.е.
C++
1
while(c<50)
во вторых
C++
1
2
3
4
5
    while(c<50) // 1) c == 0; 2) c == 21.11111
    {
        c+=10; // 1) c == 10; 2) c == 31.11111
        printf("c=%f f=%f\n",  c=(5.0/9.0) * (f -32.0), f); // 1) c == 21.11111; 2) c == 21.11111
    }
понял о чем я?
ЗЫ. 1), 2) - итерации
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1145 / 427 / 19
Регистрация: 23.06.2009
Сообщений: 6,153
Завершенные тесты: 1
23.08.2009, 10:25  [ТС]     Из цельсия в фаренгейты #3
Цитата Сообщение от M128K145 Посмотреть сообщение
Во первых на форуме неоднократно говорилось, что для вещественных чисел практически невозможно получить целое число, т.е.
C++
1
while(c<50)
во вторых
C++
1
2
3
4
5
    while(c<50) // 1) c == 0; 2) c == 21.11111
    {
        c+=10; // 1) c == 10; 2) c == 31.11111
        printf("c=%f f=%f\n",  c=(5.0/9.0) * (f -32.0), f); // 1) c == 21.11111; 2) c == 21.11111
    }
понял о чем я?
ЗЫ. 1), 2) - итерации
нет
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
23.08.2009, 15:21     Из цельсия в фаренгейты #4
Ладно пошагово:
C++
1
2
3
4
5
        while(c<50) // 1) c == 0; 2) c == 21.11111
        {
                c+=10; // 1) c == 10; 2) c == 31.11111
                printf("c=%f f=%f\n",  c=(5.0/9.0) * (f -32.0), f); // 1) c == 21.11111; 2) c == 21.11111
        }
итерация.строка)
0.1) с == 0
0.3) с == 10
0.4) c == 21.11111
1.1) c == 21.11111
1.3) c == 31.11111
1.4) и на этом шаге переменная с опять получает значение 21.11111 (!)
Т.е. с будет на каждом шаге(начиная со второго) с равна сначала 31.11111, а потом в следующей строке опять 21.11111. И никогда с не сможет даже приблизится к 50. Поэтому и зацикленно. А все потому, что в этой формуле
Код
(5.0/9.0) * (f -32.0)
не хватает зависимости от переменной c, а f - константа.
Теперь ясно?
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1145 / 427 / 19
Регистрация: 23.06.2009
Сообщений: 6,153
Завершенные тесты: 1
23.08.2009, 15:41  [ТС]     Из цельсия в фаренгейты #5
ааа..но эту формулу не я писал я взял с книги керниган и ричи....а код мой,порсто форумулу исползова...что делать мне?
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
23.08.2009, 15:44     Из цельсия в фаренгейты #6
найти нормальную формулу?
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
23.08.2009, 15:55     Из цельсия в фаренгейты #7
В K&R все нормально с формулами. Если не ошибаюсь, то пример там имел такой вид
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#define LOW 0
#define UPPER 300
#define STEP 20
 
int main()
{
      float celsius, fahr;
    
      fahr = LOW;
      while(fahr <= UPPER)
      {
          celsius = (5.0/9.0)*(fahr-32);
          printf("%3.0f\t%5.1f\n", fahr, celsius);
          fahr = fahr + STEP;
      }
      return 0;
}
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1145 / 427 / 19
Регистрация: 23.06.2009
Сообщений: 6,153
Завершенные тесты: 1
23.08.2009, 17:22  [ТС]     Из цельсия в фаренгейты #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
FOR F = 0, 20, ..., 300 */
MAIN()
{
INT LOWER, UPPER, STEP;
FLOAT FAHR, CELSIUS;
LOWER = 0; /* LOWER LIMIT OF TEMPERATURE
TABLE */
UPPER =300; /* UPPER LIMIT */
STEP = 20; /* STEP SIZE */
FAHR = LOWER;
WHILE (FAHR <= UPPER) {
CELSIUS = (5.0/9.0) * (FAHR -32.0);
PRINTF("%4.0F %6.1F\N", FAHR, CELSIUS);
FAHR = FAHR + STEP;
}
}
вот такой....книга лучшая ничего не могу сказать...но я сам хочу написать свою прогу.....а книга помогла лишь в формуле.......и все.....методы мои..
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.08.2009, 03:36     Из цельсия в фаренгейты #9
C
1
2
3
4
5
6
7
8
9
10
11
/* CelsiusToFahrenheit:  converts celsius to fahrenheit */
double CelsiusToFahrenheit(double cels)
{
    return 1.8*cels + 32;
}
 
/* FahrenheitToCelsius:  converts fahrenheit to celsius */
double FahrenheitToCelsius(double fahr)
{
    return (fahr-32)/9.0 * 5;
}
это так, чисто, формулы
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1145 / 427 / 19
Регистрация: 23.06.2009
Сообщений: 6,153
Завершенные тесты: 1
24.08.2009, 10:46  [ТС]     Из цельсия в фаренгейты #10
accept, спасибо но поближе чем мой невозможно?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2009, 11:39     Из цельсия в фаренгейты
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.08.2009, 11:39     Из цельсия в фаренгейты #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    double f = 70.0;
    double c = 0.0;
 
    cout << "C    |    F";
 
    while ((int) c != 50) {
        c = c+10;
        f = CelsiusToFahrenheit(c),
        
        printf("c=%f f=%f\n",
            FahrenheitToCelsius(f),
            f
        );
    }
C
1
2
3
4
5
6
7
8
9
10
11
/* CelsiusToFahrenheit:  converts celsius to fahrenheit */
double CelsiusToFahrenheit(double cels)
{
    return (9.0/5.0)*cels + 32;
}
 
/* FahrenheitToCelsius:  converts fahrenheit to celsius */
double FahrenheitToCelsius(double fahr)
{
    return (5.0/9.0)*(fahr-32);
}
тут функции по wiki скорректировал
Yandex
Объявления
24.08.2009, 11:39     Из цельсия в фаренгейты
Ответ Создать тему

Метки
c++
Опции темы

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