Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите перевести код из Turbo Pascal в Delphi. [D7, XP]


Максим ©   (2005-12-06 17:50:00) 

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

Формула для пересчета: Tf = 9/5*Tc + 32.

Есть такой код в Turbo Pascal:

program Celsius_to_Fahrenheit;
var
   i, Celsius. Fahrenheit: Word;
begin
   Writeln('Таблица соответствия между температурными шкалами');
   Writeln('Цельсия и Фаренгейта');
   Writeln;
   for i := 0 to 20 do begin
       Celsius := 5 * i;
       Fahrenheit := 32 + Celsius * 9 div 5;
       Write('   C = ' , Celsius);
       Write('   F = ' , Fahrenheit);
       Writeln;
   end;
   Writeln('Нажмите    <Enter>');
   Readln;
end.

Кто поможет перевести ее в Delphi?


MBo   (2005-12-07 09:04:00) [1]

>Anatoly Podgoretsky ©   (07.12.05 08:50) [10]
Если не обращать внимание на потерю точности при целочисленной арифметике, то кто это вдруг установил приоритет деления выше умножения? ;)


Anatoly Podgoretsky   (2005-12-07 09:02:00) [2]

А это    i, Celsius. Fahrenheit: Word; не профессионально как в Турбо Паскаль, так и в Дельфи. Как минимум потеряли отрицательные температуры. Ну и про точку тоже сказали. Что то много ошибок для такой простой вещи.
Грюшница водку делала?


Brother   (2005-12-07 08:53:00) [3]


> Anatoly Podgoretsky ©   (07.12.05 08:50) [10]
> Максим ©   (06.12.05 17:50)  
> Формула для пересчета:
> Tf = 9/5*Tc + 32.
> Fahrenheit := 32 + Celsius * 9 div 5;
>
> Программа и формула не соответствуют друг другу
>
> 9/5 = 1.8
> 9 div 5 = 1

Дельное замечание я даже и не заметил сразу!


Anatoly Podgoretsky   (2005-12-07 08:50:00) [4]

Максим ©   (06.12.05 17:50)  
Формула для пересчета:
Tf = 9/5*Tc + 32.
Fahrenheit := 32 + Celsius * 9 div 5;


Программа и формула не соответствуют друг другу

9/5 = 1.8
9 div 5 = 1


Максим   (2005-12-07 04:48:00) [5]

Спасибо. Запустилось :)


MBo   (2005-12-06 18:38:00) [6]

Кладешь на форму Label, Edit и UpDown (с закладки Win32),
в Object Inspector устанавливаешь последнему свойство Associate  - Edit1,
затем в Events щелкаешь на OnClick, появляется обработчик этого события, где вписываешь строку вывода результата, а вычисление оформляешь функцией (выше по тексту, если не делать функцию методом формы):

function Celsius_to_Fahrenheit(Cels: Integer): Integer;
begin
 Result := Cels * 9 div 5 + 32;
end;

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
 Label1.Caption := IntToStr(Celsius_to_Fahrenheit(UpDown1.Position));
end;

Запустилось? Значит, ты стал батонокидателем ;))


Leonid Troyanovsky   (2005-12-06 18:23:00) [7]


> Максим ©   (06.12.05 18:13) [5]
> Я хочу посмотреть как это будет выглядеть в форме Дельфи.


А.. Ну, тогда нужно определить в качестве устройства
вывода, скажем, TMemo (Object Pascal Language Guide:
Device functions) и назначить его для writeln, readln.

--
Regards, LVT.


MBo   (2005-12-06 18:16:00) [8]

>добавить {$APTYPE CONSOLE}.
можно также использовать  ключ компилятора -сс


Максим   (2005-12-06 18:13:00) [9]

А в форме никак нельзя? Я не прошу чисто переписать все строки кода Паскаля.

Я хочу посмотреть как это будет выглядеть в форме Дельфи.


Leonid Troyanovsky   (2005-12-06 18:11:00) [10]


> Максим ©   (06.12.05 18:06) [2]
> Ничего не показывает при компиляции. :( Просто Форма и все.


Форму надо сразу удалить из проекта.
Писать прямо в проекте, Project - View source.
Ну, и [3].

--
Regards, LVT.


Leonid Troyanovsky   (2005-12-06 18:09:00) [11]


> MBo ©   (06.12.05 17:57) [1]
> Ее не надо переводить, все и так будет работать ;)


Пожалуй, если заменить точку на запятую в var,
добавить {$APTYPE CONSOLE}.
Ну, и перевести выводы writeln на английский.

--
Regards, LVT.


Максим   (2005-12-06 18:06:00) [12]

Ничего не показывает при компиляции. :( Просто Форма и все.


MBo   (2005-12-06 17:57:00) [13]

Ее не надо переводить, все и так будет работать ;)

Стоит только, пожалуй, заменить беззнаковый тип Word на Integer


Наверх

Титульная страница Поиск, карта сайта Написать письмо