Jump to content
СофтФорум - всё о компьютерах и не только

С++ ?


Svoboda
 Share

Recommended Posts

//

// Программа для преобразования

// градусов Цельсия в градусы Фаренгейта:

// Fahrenheit = NCelsius * (212 - 32)/100 + 32

//

#include <stdio.h>

#include <iostream.h>

int main(int nNumberofArgs, char* pszArgs[])

{

// Введите температуру в градусах Цельсия

int nNCelsius;

cout << "Введите температуру по Цельсию: ";

cin >> nNCelsius;

// для приведенной формулы преобразования

//вычислим преобразующий множитель

int nNFactor;

nNFactor = 212 - 32;

// используем вычисленный множитель для

// преобразования градусов Цельсия в

// градусы Фаренгейта

int nFahrenheit;

nFahrenheit = nNFactor * nNCelsius/100 + 32;

// вывод результатов

cout << "Температура по Фаренгейту: ";

cout << nFahrenheit;

return 0;

}

Почему он переменную nNFactor подрозумивает ,как 212-32 не легче просто 180 в чем фишка ?

Link to comment
Share on other sites

Svoboda:

Фишка в понятности происхождения коэффициента. В формуле написано 212-32, если в программе написать 180, то человек, читающий программу, должен будет догадываться, откуда взялись эти 180.

Для компилятора обе записи 212-32 и 180 одинаковы, программу это не замедлит, разность вычислит сам компилятор еще на этапе компиляции программы и сам введет в код программы число 180.

А 212 и 32 - точки кипения и замерзания воды по Фаренгейту, их разница равна по Цельсию 100°, отсюда и коэффициент.

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

P.S. Замечу, что автор программы не довел дело до конца. Понятнее было бы определить nNFactor как (212 - 32)/100, конечно, уже не как целое число, тогда у него был бы более ясный смысл - отношение единиц измерения. А так это ни то, ни се: количество градусов Фаренгейта, приходящееся на 100 градусов Цельсия. Лучше избегать введения промежуточных переменных, не имеющих ясного смысла. Вообще-то эту формулу яснее было бы даже запрограммировать сразу, целиком.

Link to comment
Share on other sites

  • 2 months later...

При коипилирование данного кода (приведенного выше) с помощью Borland Compiler C++ на экран выдается вот такое содержание:

C:\Borland\BCC55\Bin>runbor.bat bcc32 celsius.c

C:\Borland\BCC55\Bin>path c:\borland\bcc55\bin;C:\WINDOWS\system32;C:\WINDOWS;C:

\WINDOWS\System32\Wbem;C:\Program Files\Common Files\Adobe\AGL

C:\Borland\BCC55\Bin>bcc32 celsius.c

Borland C++ 5.5.1 for Win32 Copyright © 1993, 2000 Borland

Celsius.c:

Fatal F1003 C:\BORLAND\BCC55\INCLUDE\stdcomp.h 5: Error directive: Must use C++

for STDCOMP.H

*** 1 errors in Compile ***

C:\Borland\BCC55\Bin>

Я так понимаю разгадка вот в этом Error directive: Must use C++ for STDCOMP.H должны испоьзовать С++ для STDCOMP.H (если не ошибаюсь). Так вот, что это такое STDCOMP.H и с чем его едят?

Link to comment
Share on other sites

SanChel:

Подробное объяснение Borland, почему появляется это сообщение - на сайте Borland на этой странице. Причина - в текст программы включен заголовочный файл STDCOMP.H, содержащий выражения, понимаемые только C++. Устраняется переходом с компиляции в C на компиляцию в C++ способом, указанным Ray.

Link to comment
Share on other sites

T-SMV:

C - часть C++, его более ранняя версия. Отличается отсутствием нескольких возможностей, в первую очередь средств поддержки объектно-ориентированной технологии программирования (классы, перегрузка операций и т.д.). Преимуществом это считать трудно, а больше отличий нет, за исключением очень небольших изменений синтаксиса.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...