Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
1000001 1101100
0 / 0 / 0
Регистрация: 04.06.2018
Сообщений: 2
1

Печать таблицы температур

04.06.2018, 22:26. Просмотров 150. Ответов 2
Метки нет (Все метки)

Здравствуйте.

Упражнение:
Напишите программу, которая будет печатать таблицу соответствия температур по Цельсию температурам по Фаренгейту.

Понимаю что не нужно ничего придумывать, необходимо просто поменять колонки местами, но это не интересно.

Написал такое:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
 main()
 {
    float fahr, celsius;
    float lower, upper, step;
    
    lower = -17.8; /* нижняя граница таблицы температур */
    upper = 149.0; /* верхняя граница */
    step = 11.1; /* шаг */
    
    celsius = lower;
    while (celsius <= upper) {
        fahr= 1.8*celsius+32.0;
        printf ("%5.1f %6.0f\n", celsius, fahr);
        celsius = celsius + step;
    }
 }
Смущает вывод:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-17.8     -0
 -6.7     20
  4.4     40
 15.5     60
 26.6     80
 37.7    100
 48.8    120
 59.9    140
 71.0    160
 82.1    180
 93.2    200
104.3    220
115.4    240
126.5    260
137.6    280
148.7    300
Должен быть:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-17.8      0
 -6.7     20
  4.4     40
 15.6     60
 26.7     80
 37.8    100
 48.9    120
 60.0    140
 71.1    160
 82.2    180
 93.3    200
104.4    220
115.6    240
126.7    260
137.8    280
148.9    300
Что делаю не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2018, 22:26
Ответы с готовыми решениями:

Печать таблицы температур по Фаренгейту
Доброго времени суток. Проблема в следующем: начал изучать Си, а именно сейчас...

Вывести таблицы соответствия температур в градусах Цельсия температурам в Фаренгейте
Разработать программу, обеспечивающую выдачу таблицы соответствия температур в...

Напишите программу для перевода температур по Цельсию в шкалу Фаренгейта и вывода соответствующей таблицы
Решил задачу. Вот условие: Напишите программу для перевода температур по...

Печать таблицы значений функции
При реализации программы использовать операторы циклов (for, while, do…while).

Вывести на печать введенные данные в форме таблицы их по видам спорта
Помогите изменить в задаче все cin, cout на другие функции ввода, вывода С...

2
stake-k26
442 / 356 / 288
Регистрация: 25.04.2016
Сообщений: 1,053
05.06.2018, 11:14 2
все у вас правильно

поменяйте
printf ("%5.1f %6.0f\n", celsius, fahr);
на
printf ("%5f %6.0f\n", celsius, fahr);

и увидите причину - вычисления чисел с плавающей точкой откровенно "плавают":

-17.799999 -0
-6.699999 20
4.400002 40
15.500002 60
26.600002 80
37.700005 100
48.800003 120
59.900002 140
71.000000 160
82.099998 180
93.199997 200
104.299995 220
115.399994 240
126.499992 260
137.599991 280
148.699997 300

Как объяснить появление 17.799999, когда стартовое значение 17.8 ? Однако, если округлить до 1 знака, то мы как раз и получим 17.8, в общем проблема в том, что и 50 лет спустя компьютеры не научились как следует считать числа с точкой и считают их приближенно. Хотите точность повыше? Используйте double, вместо float и все равно получите приблизительные значения на выходе.

в общем, проблема не в программе, а в той железяке, что стоит у вас в компьютере и зовется "современный" процессор

Единственное, что можно исправить, так это сделать вашу программу куда короче и всего с 1 переменной:

C
1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
main ()
{
    float celsius;
 
    for (celsius = -17.8; celsius <= 149.0; celsius += 11.1)
        printf("%5.1f %6.0f\n", celsius, 9*celsius/5+32);
}
Добавлено через 7 минут
ну или так:
C
1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
main ()
{
    int fahr;
 
    for (fahr = 0; fahr < 301; fahr += 20)
        printf("%5.1f %6d\n", 5.0*(fahr-32.0)/9.0, fahr);
}
1
1000001 1101100
0 / 0 / 0
Регистрация: 04.06.2018
Сообщений: 2
05.06.2018, 20:30  [ТС] 3
stake-k26, большое спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2018, 20:30

Таблица вывода температур
Всем , привет! Начала осваивать язык си по книге кернигана и ритчи. Каждую...

Вывести таблицу преобразования температур
есть программа #include &lt;stdio.h&gt; int main() { int fahr; for(...

Реализовать таблицу перевода температур с фаренгейта в цельсий
Елементарное задание, таблица перевода температур с фаренгейта в цельсий, от 0...


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

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

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