![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите перевести код из 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