If Then Else

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Ответить
wov2004
незнакомец
Сообщения: 2
Зарегистрирован: 21.07.2012 22:48:15

If Then Else

Сообщение wov2004 »

Как я понял If Then Else не поддерживают длинных выражений или нужно как-то упаковать?

program metersfeet;
{$mode objfpc}{$H+}
uses
FileUtil;
var
metr,c,feet: Real;
sel: String;
begin
writeln (UTF8ToConsole('Для пересчёта метров в футы нажмите "m" латинскую'));
writeln (UTF8ToConsole('Для пересчёта футов в метры нажмите "f" латинскую'));
read (sel);
if sel = 'm' then
writeln (UTF8ToConsole('Введите число метров'));
readln (metr);
c:=3.281;
feet:=metr/c;
write(UTF8ToConsole('В '));
write(metr);
write(UTF8ToConsole('метрах '));
write(feet);
writeln(UTF8ToConsole(' футов'));


if sel = 'f' then
writeln (UTF8ToConsole('Ведите число футов'));
readln (feet);
metr:=feet*c;
write(UTF8ToConsole('В '));
write(feet);
write(UTF8ToConsole(' футах '));
write(metr);
writeln(UTF8ToConsole(' метров'));
readln;

end.


Здесь, при вводе 'f"
Не выводятся диалоговые сообщения.
Как можно поправить?
Последний раз редактировалось wov2004 22.07.2012 08:59:41, всего редактировалось 1 раз.
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Сообщение Climber »

Вы имеете ввиду это

Код: Выделить всё

if условие then
   begin
    тут несколько строк, которые выполнятся, только если ВЕРНО условие в if
   end
   else
   begin
     тут несколько строк, которые выполнятся, только если НЕ ВЕРНО условие в if
   end;
Или что-то другое?
wov2004
незнакомец
Сообщения: 2
Зарегистрирован: 21.07.2012 22:48:15

Сообщение wov2004 »

Да, вероятно так.
Только начал изучать, и такой способ ещё не видел.

Добавлено спустя 14 минут 31 секунду:
Climber писал(а):Вы имеете ввиду это

Код: Выделить всё
if условие then
begin
тут несколько строк, которые выполнятся, только если ВЕРНО условие в if
end
else
begin
тут несколько строк, которые выполнятся, только если НЕ ВЕРНО условие в if
end;

Или что-то другое?



Ага, спасибо, именно оно!
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

wov2004
Переделайте Ваш код в две процедуры:
- преобразование метров в футы;
- преобразование футов в метры.
И при записи в переменную sel той или иной буквы просто вызываете ту или иную процедуру:

Код: Выделить всё

//В качестве параметра вводится количество футов
//Выходное значение - соответствующее им кол-во метров
Function FeetToMeter(f: double): Double;
Begin
  //Код, который нужен для перевода футов в метры
End;

//В качестве параметра вводится количество метров
//Выходное значение - соответствующее им кол-во футов
Function MeterToFeet(m: double): Double;
Begin
  //Код, который нужен для перевода футов в метры
End;

//Основная программа
...
If sel='f' Then
  res:=FeetToMeter(Какое-то число);
If sel:='m' Then
  res:=MeterToFeet(Какое-то число);

WriteLn('Получилось: ', res);
Ответить