С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C (СИ) Sizeof enum gdb http://www.cyberforum.ru/c-beginners/thread2258924.html
Здравствуйте уважаемые форумчане! Столкнулся со следующй ситуацией: пишу embeded проект на си, компилится он gcc 7.2.0. Уж очень надо чтобы sizeof enum у меня был 4 байта, компилятор против, enum...
C (СИ) чтение записи бинарный файл шифрование Шифрую данные стурктуры методом vmpc и записываю в бинарный файл. Далее пытаюсь считать и расшифровать. Расшифровываются все поля кроме последнего. Не могу понять почему. Код: typedef unsigned... http://www.cyberforum.ru/c-beginners/thread2258896.html
C (СИ) Вычислить общий средний балл всех студентов и распечатать список студентов интересующей вас группы, имеющих сред-ний бал
С использованием структур.
В массиве записаны оценки: С C (СИ)
В массиве записаны оценки по иностранному языку каждого из 22 учеников класса. Определить количество пятерок, количество четверок, ко- личество троек и количество двоек.
C (СИ) Найти ту непрерывную последовательность положительных чисел, сумма элементов в которой максимальная http://www.cyberforum.ru/c-beginners/thread2258874.html
Найти ту непрерывную последовательность положительных чисел, сумма элементов в которой максимальная Размер массива 100 Диапазон значений -100-100
C (СИ) Вывести на экран таблицу значений функции Y (x) : C Вывести на экран таблицу значений функции Y (x) и ее разложения в ряд S (x) для x, изменяющегося от a до b с шагом h = (b – a)/10. подробнее
stake-k26
477 / 377 / 304
Регистрация: 25.04.2016
Сообщений: 1,104
05.06.2018, 11:14 0

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

05.06.2018, 11:14. Просмотров 165. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2018, 11:14
Готовые ответы и решения:

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

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

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

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

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

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