Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Ответ
 
Опции темы
Старый 19.05.2019, 09: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, 09:19   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Прочитайте про begin|end и зачем они. У вас под условиями только по одному оператору.
p51x вне форума Ответить с цитированием
Старый 19.05.2019, 09: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, 13:26   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 2,152
По умолчанию

Программа и так проста донельзя, но упростить можно. Ввод параметров вынести в прцедуру, у которой 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; 20.05.2019 в 00:11.
digitalis вне форума Ответить с цитированием
Старый 21.05.2019, 11:03   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 2,152
По умолчанию

ТС слинял, но мы и без него обойдемся. "Упрощать - так упрощать", как сказал бы Остап.
Код:
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, 16:21   #6
my_wizard
Новичок
Джуниор
 
Регистрация: 28.11.2019
Сообщений: 1
По умолчанию

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


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