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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2019, 08:17   #1
Gregorianec
Новичок
Джуниор
 
Регистрация: 19.05.2019
Сообщений: 2
По умолчанию Работа с if

Не понимаю в чем ошибка! Я написал вот такой код:
Код:
Program Progvhr;
 var a,b,c,d : integer;
Operation:string;
 begin
 writeln('Выберите что нужно вычеслить: V, h, r основания конуса'); readln(Operation);

ReadLn(Operation);
if Operation=('v') then 
 writeln('Введите радиус');
readln(a);
 writeln('Введите высоту');
readln(b); 
 writeln(a*a*b/3);
 
if Operation=('h') then 
writeln('Введите радиус');
readln(a);
 writeln('Введите высоту');
readln(b); 
 writeln(sqrt((3*pi*a*b)/(pi*b)));

if Operation=('r') then 
 writeln('Введите объем');
readln(c);
 writeln('Введите площадь');
readln(d);
 writeln((3*c)/d); 
end.
Код должен выполнять очень простую функцию. 1. Ты задаешь одно из значений, которое нужно вычислить, после этого, ты задаешь что тебе известнл по формуле
3. Тебе расчитывает с помощью формул ответ.

Программа не робит, не понимаю как сделать переход на другую переменную, по мимо V.
Запустите программу и увидите, что 2 другие единицы не возможно просчитать
Gregorianec вне форума Ответить с цитированием
Старый 19.05.2019, 08:19   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Прочитайте про begin|end и зачем они. У вас под условиями только по одному оператору.
p51x на форуме Ответить с цитированием
Старый 19.05.2019, 08:34   #3
Gregorianec
Новичок
Джуниор
 
Регистрация: 19.05.2019
Сообщений: 2
По умолчанию

Спасибо вам за быстрый ответ! Все заработало! Скажите, можно ли упростить код?
Код:
Program Progvhr;
 var a,b,c,d : integer;
Operation:string;
 begin
 writeln('Выберите что нужно вычеслить: V, h, r основания конуса'); 

ReadLn(Operation);
if Operation=('v') then 
Begin
 writeln('Введите радиус');
readln(a);
 writeln('Введите высоту');
readln(b); 
 writeln(a*a*b/3);
 end;
 
 
if Operation=('h') then 
Begin
writeln('Введите радиус');
readln(a);
 writeln('Введите высоту');
readln(b); 
 writeln(sqrt((3*pi*a*b)/(pi*b)));
end;


if Operation=('r') then 
Begin
 writeln('Введите объем');
readln(c);
 writeln('Введите площадь');
readln(d);
 writeln((3*c)/d); 
end;
end.
Gregorianec вне форума Ответить с цитированием
Старый 19.05.2019, 12:26   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

Программа и так проста донельзя, но упростить можно. Ввод параметров вынести в прцедуру, у которой 4 параметра: вопрос 1, вопрос 2, переменные : куда_вводить_1 куда_вводить_2.
Код:
Var a,b,c,d:integer ;

Procedure InDat(p1,p2:string; var i1: integer ; var i2: integer) ;
Begin
  Write ('Input ',p1,' ') ;
  Readln (i1) ;
  Write ('Input ',p2,' ') ;
  Readln (i2)
End ;
    
Begin
  InpDat ('a','b',a,b) ; 
  .....................
Как-то так.

Последний раз редактировалось digitalis; 19.05.2019 в 23:11.
digitalis вне форума Ответить с цитированием
Старый 21.05.2019, 10:03   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

ТС слинял, но мы и без него обойдемся. "Упрощать - так упрощать", как сказал бы Остап.
Код:
Var a,b:integer ;

Procedure InDat(p1:string; var i1: integer) ;
Begin
  Write ('Input ',p1,' ') ;
  Readln (i1) ;
End ;
    
Begin
  InpDat ('a',a) ; 
  InpDat ('b',b) ; 
  .....................
digitalis вне форума Ответить с цитированием
Старый 28.11.2019, 15:21   #6
my_wizard
Новичок
Джуниор
 
Регистрация: 28.11.2019
Сообщений: 1
По умолчанию

хоть и ответили уже на вопрос.
"даю не рыбу, а удочку" , на случай если возникнут еще вопросы про оператор if, детально о нем https://learnpascal.ru/operator-if/blok-shema-if.html
my_wizard вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лабораторная работа(очень простая) Структуры, работа с файлами yurda Фриланс 2 11.06.2016 08:44
Работа с ems api: корректная работа только при явном указании города mrdemkin JavaScript, Ajax 3 02.03.2015 18:23
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
Работа с webbrowser - Фреймы, работа с конкретным феймом в фрейме NewDelphi Фриланс 2 08.10.2009 11:00