Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2013, 19:35   #1
logas83
Пользователь
 
Регистрация: 07.09.2013
Сообщений: 19
Вопрос Основы языка С. В чем ошибка?

Здравствуйте.
Только начал изучать язык С. Практикуюсь в задачках с вычислением. Вроде всего несколько строк, а результат не верен. Ниже условие и код.
Помогите пожалуйста найти ошибку.

Перевести температуру из шкалы Фаренгейта в шкалу Цельсия (формула для пересчета c=(5/9)(f-32)).
Код:
#include<stdio.h>

int f;
double c;

int main()

{

printf ("Введите температуру по шкале Фаренгейта: ");
scanf ("%d",&f);
c = (5/9) * (f-32);
printf ("Это будет %f градусов по шкале Цельсия\n",c);

}

Последний раз редактировалось Stilet; 07.09.2013 в 21:32.
logas83 вне форума Ответить с цитированием
Старый 07.09.2013, 19:40   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
c = (5/9) * (f-32);
c всегда равно нулю.
При делении целых чисел получается целое число (округляется всегда вниз), поэтому 5/9 равно нулю.

ЗЫ, теги CODE используй для выделения кода
rrrFer вне форума Ответить с цитированием
Старый 07.09.2013, 19:50   #3
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

В С компилятору совершенно пофигу на то, что с - это вещественное число, ведь деление производится над целыми числами => результат тоже будет целым..
Один из вариантов лечения :
Цитата:
c = 5.0 / 9 * (f-32);
P.S. Не увидел return 0..
Poma][a вне форума Ответить с цитированием
Старый 07.09.2013, 20:00   #4
logas83
Пользователь
 
Регистрация: 07.09.2013
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
В С компилятору совершенно пофигу на то, что с - это вещественное число, ведь деление производится над целыми числами => результат тоже будет целым..
Один из вариантов лечения :

P.S. Не увидел return 0..
return просто не указывал, вроде должно и без него работать.

Поменял на 5.0 и убрал скобки. Помогло. Правда не понял почему. Ведь что в скобках, что без скобок - порядок один и тот же тут.
logas83 вне форума Ответить с цитированием
Старый 07.09.2013, 20:05   #5
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
return просто не указывал, вроде должно и без него работать.
да, теперь и без него работает.
Цитата:
Поменял на 5.0 и убрал скобки. Помогло. Правда не понял почему. Ведь что в скобках, что без скобок - порядок один и тот же тут.
Скобки можно было оставить, но лишние скобки - плохо.
rrrFer вне форума Ответить с цитированием
Старый 07.09.2013, 20:05   #6
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
return просто не указывал, вроде должно и без него работать.
Ага. А Вам не будет писать про exit code какой-то не равный 0? Дак это как бэ ошибка..

Можете вернуть скобки - разницы не будет.. но зачем их ставить если поряд не изменится?
Poma][a вне форума Ответить с цитированием
Старый 07.09.2013, 20:19   #7
logas83
Пользователь
 
Регистрация: 07.09.2013
Сообщений: 19
По умолчанию

Ага, значит дело не в скобках. Запутался немного. Скобки не влияют. Влияет поставленная точка после пятерки. А разве это не одно и тоже число - 5 и 5.0 ?
logas83 вне форума Ответить с цитированием
Старый 07.09.2013, 20:21   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
А разве это не одно и тоже число - 5 и 5.0 ?
Нет. Еще раз : Си совершенно пофигу какого типа у Вас переменная (вещественный или целый), ему важен тип операндов, если хотябы один из них вещественный, то и результат будет вещественным!
Poma][a вне форума Ответить с цитированием
Старый 07.09.2013, 20:25   #9
logas83
Пользователь
 
Регистрация: 07.09.2013
Сообщений: 19
По умолчанию

Понял. Спасибо!
logas83 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем ошибка? 999 Помощь студентам 7 15.03.2012 17:42
в чем ошибка? Rexonik Общие вопросы C/C++ 4 05.12.2011 20:42
Непонятная ошибка непонятного языка 4ufak Свободное общение 6 01.10.2010 15:06
В чем ошибка? delphyok Паскаль, Turbo Pascal, PascalABC.NET 6 24.02.2009 23:33