Консультация № 202990
14.06.2022, 09:16
0.00 руб.
1 9 1
Здравствуйте! У меня возникли сложности с таким вопросом: составить блок-схему, написать программу на языке Pascal
Прикрепленные файлы:
2022-06-14_09-20-31.png

Обсуждение

давно
Посетитель
406067
18
14.06.2022, 12:54
общий
образец решения
Прикрепленные файлы:
2022-06-14_12-58-09.png
2022-06-14_12-58-37.png
давно
Мастер-Эксперт
259041
7459
20.06.2022, 00:45
общий
Адресаты:
За 5 суток Вы вероятно уже решили эту задачу самостоятельно, и моя помощь уже не нужна?
давно
Посетитель
406067
18
20.06.2022, 10:42
общий
Адресаты:
хотелось бы получить Вашу помощь, пожалуйста!
давно
Мастер-Эксперт
259041
7459
20.06.2022, 12:41
общий
Адресаты:
Ваше "пожалуйста" - волшебное слово. Придётся мне постараться.
Ваш скрин с Условием слишком неразборчив, а Вы поленились написать копию Условия текстом (чтоб я мог быстро скопировать/вставить). Мне приходится писать текст вместо Вас, наугад. А Вас я прошу подтвердить / поправить правильность моего понимания. Условие:
Z = [$8730$]x + sin(y) если x - y < 0[$8195$] ;[$8195$] Z = tg(x·y) если x - y [$8805$] 0
U = max{3[$8730$]Z ; x+y} (тут цифра "3" перед Z-радикалом похожа на "8")
Выполнить выше-вычисления 2жды : Для пары {x = 1,5 ; y = 2,2} и для пары {x = 2,6 ; y = 0,2} .


Как Вы проверяете созданные мною программы? Запускаете exe-файл в предвари загруженном окне Командной строки? Либо дубль-кликом в Проводник-окне? В зависимости от Вашего способа запуска я должен добавить в код, либо не добавить стоп-запрос "Жми клавишу "Enter" закрыть окно программы".

И снова Я жду Ваш выбор варианта для обхода разногласий Условия задачи с Вашим Примером, как в Вашей rfpro.ru/question/202989 пост 326549 (ссылка). Присутствующий в примере оператор
readln(x; y); с предвари-пояснением 'Vvod x, y' , вынуждает пользователя ввести значени переменных "x", "y" с клавиатуры. Но произвольные значения, НЕ совпавшие с данными Вашего варианта, приведут к НЕправильному Ответу! Что будем делать?
1) Откажемся от диалогового запроса данных и введём "x", y-значени в коде программы (простейший вариант кода!);
2) Выполним диалоговый запрос данных с клавиатуры, выведем их на экран и проигнорим их. В ниже-вычислениях используем "x" , y-значени, заданные в коде согласно Условию.
3) Выполним диалоговый запрос, но прекратим выполнение с сообщением о вводе чисел, НЕсоответсвующих Условию.
давно
Посетитель
406067
18
20.06.2022, 13:40
общий
Адресаты:
не добавляйте enter, закрыть окно;
вариант 1: откажемся от диалогового запроса данных и введём "x", y-значени в коде программы
давно
Мастер-Эксперт
259041
7459
20.06.2022, 16:09
общий
Адресаты:
Чтоб не писать одинаковые блоки кода для 2х пар x,y-аргументов, я написал функцию Max(x, y) пользователя.
Прога 2жды вызывает эту функцию с предоставлением ей разных пар аргументов.
Прилагаю код и exe-программу, а также скрины программы, результата и проверки.
Блок-схему нарисуйте сами, мой лимит времени истёк (у нас уже полночь на ДальВостоке). =Удачи!
Прикрепленные файлы:
давно
Посетитель
406067
18
20.06.2022, 16:15
общий
Адресаты:
спасибо Вам большое!
давно
Мастер-Эксперт
259041
7459
21.06.2022, 00:40
общий
Адресаты:
НаЗдоровье Вам! Заходите, когда будет нужно.
давно
Модератор
137394
1850
29.07.2022, 17:27
общий
29.07.2022, 17:43
это ответ
Увидел случайно вопрос без ответа, понимаю, что мой ответ запоздал, да и в Pascal я новичок, но решение Алексеев Владимир Николаевич в мини-форуме не совсем меня устроило: я не считаю правильным жестко прописывать исходные данные в коде программы, из которого затем создаётся exe-файл. Программы создаются для пользователя, пользователь не создаёт exe-файл.
Я сделал код со вводом данных.
Код:
Uses CRT;
Var
x, y, z : Real;
i : Real;

Function FuncU(f : Real; a : Real; b : Real) : Real;
Var fu : Real;
Begin
fu := Exp(Ln(f) / 3.0);
If (fu < a + b) Then fu := a + b;
FuncU := fu;
End;

Begin
ClrScr;
i := 1;
While i = 1 Do Begin
WriteLn;
Write('Введите значение x: ');
Read (x);

Write('Введите значение y: ');
Read (y);

WriteLn;
Write('x=', x:5:2, '; y=', y:5:2);
If (x-y < 0) Then
Begin
Write('; z=Sqrt(x)+Sin(y);');
If x < 0 Then WriteLn(' x<0. Данные не корректны') Else WriteLn(' U=', FuncU(Sqrt(x) + Sin(y), x, y) :7:3);
End
Else WriteLn('; z=tg(x*y); U=', FuncU(Sin(x * y) / Cos(x * y), x, y) :7:3);

WriteLn;
Write('1 - ввод данных, иное число - завершение работы: ');
Read (i);
End;
End.
.pas и .exe файлы прикрепляю, уберите из прикреплённых файлов расширение txt
R220729.PAS.txt (893 байт)
R220729.EXE.txt (17.78 кБ)

Блок-схемы не рисую, не владею стандартами и инструментом.
Программа создана в среде Turbo Pascal 7.0
Прикрепленные файлы:
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Форма ответа