0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 3
1

Как запустить case по двум переменным

10.12.2018, 22:27. Показов 4605. Ответов 5

Author24 — интернет-сервис помощи студентам
Как запустить case по двум переменным?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
program Main;
var x, y:integer;
begin
writeln('Введите координаты точки');
readln (x,y);
case x,y of
2..6,0:writeln ('принадлежит');
2..5,1:writeln ('принадлежит');
1..4,2:writeln ('принадлежит');
1..3,3:writeln ('принадлежит');
0..2,4:writeln ('принадлежит');
0..1,5:writeln ('принадлежит');
0,6:writeln ('принадлежит');
else writeln ('не принадлежит');
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2018, 22:27
Ответы с готовыми решениями:

Как одновременно прибавить число к двум переменным?
Есть время работы кассира: if ((!cashbox1_in_use) && (cashbox1_queue_size > 0)) { events.push(...

Как вернуть двум неициализированным переменным индекс массива, в методе?
Задание: Напишите программу со статическим методом, аргументом которому передается двумерный...

Разложение функции по двум переменным
Помогите решить данную задачу. Разложить функцию f(u,x,y,z)=(0011 1100 1110 1100) а) по...

Расчет уравнения по двум переменным
Добрый день! Столкнулся с такой проблемой - есть уравнение, в котором задается 1 переменная с...

5
Модератор
9855 / 5225 / 3304
Регистрация: 17.08.2012
Сообщений: 15,986
10.12.2018, 23:56 2
Вообще-то, никак. Синтаксис паскаля такого не позволяет.

Полагаю, Вы пошли по неверному пути в решении задачи. Нужно определить принадлежность точки заданной области? Case здесь не подходит, так как координаты точки по умолчанию - вещественные числа.

Напишите точное условие задачи, посмотрим, что можно сделать... Может быть, и case как-нибудь за уши притянем.
0
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 3
11.12.2018, 00:02  [ТС] 3
Да, принадлежность точки к закрашенной области
Не могу разобраться с сайтом пока что, поэтому без фото
Как вообще реализуются такие задачи?
PS. Разобрался
Миниатюры
Как запустить case по двум переменным  
0
Модератор
9855 / 5225 / 3304
Регистрация: 17.08.2012
Сообщений: 15,986
11.12.2018, 00:59 4
Лучший ответ Сообщение было отмечено ЯПлацебо как решение

Решение

Описываются границы области в виде уравнений, на основе этих уравнений определяются неравенства, затем с помощью условного оператора, может быть, составного, определяется принадлежность точки к заданной области.

В Вашем случае:

Уравнение границыУсловие принадлежности
x = 0x ≥ 0
y = 0y ≥ 0
y = 4 - 2xy ≥ 4 - 2x
y = 6 - xy ≤ 6 - x

Для данной области, точка будет принадлежать области, если выполняются все неравенства одновременно, то есть, неравенства должны быть объединены операторами and.

Если бы область состояла не из одного куска, тогда бы нужно было объединить отдельные части операторами or. В редчайших случаях могут также потребоваться другие логические операторы, и / или несколько условных операторов, возможно, составных.

Простейший вариант программы:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
var
  x, y: real;
 
begin
  write('x = ');
  readln(x);
  write('y = ');
  readln(y);
  if (x >= 0) and (y >= 0) and (y >= 4 - 2 * x) and (y <= 6 - x)
    then write('Принадежит')
    else write('Не принадлежит');
  readln
end.
Или, можно пойти нестандартным путём, просто напечатав значение логического выражения:
Pascal
1
2
3
4
5
6
7
8
9
10
11
var
  x, y: real;
 
begin
  write('x = ');
  readln(x);
  write('y = ');
  readln(y);
  write('In area: ', (x >= 0) and (y >= 0) and (y >= 4 - 2 * x) and (y <= 6 - x));
  readln
end.
Добавлено через 22 минуты
Для хохмы, два варианта с помощью case (не подойдёт для Pascal ABC):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var
  x, y: real;
 
begin
  write('x = ');
  readln(x);
  write('y = ');
  readln(y);
  case x >= 0 of
    true: case y >= 0 of
            true: case y >= 4 - 2 * x of
                    true: case y <= 6 - x of
                            true: write('Принадлежит')
                            else write('Не принадлежит')
                          end
                  end
            else write('Не принадлежит')
          end
    else write('Не принадлежит')
  end;
  readln
end.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
  x, y: real;
 
begin
  write('x = ');
  readln(x);
  write('y = ');
  readln(y);
  case (((ord(x >= 0) * 2 + ord(y >= 0)) * 2 + ord(y >= 4 - 2 * x)) * 2 + ord(y <= 6 - x)) of
    15: write('Принадлежит')
    else write('Не принадлежит')
  end;
  readln
end.
1
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 3
11.12.2018, 01:02  [ТС] 5
Спасибо большое))
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7769 / 4598 / 2823
Регистрация: 22.11.2013
Сообщений: 13,077
Записей в блоге: 1
11.12.2018, 18:00 6
... и мой любимый, но не подходящий для PascalABC:
Pascal
1
2
3
4
5
6
const NY: array [Boolean] of String[3] = ('НЕ ','');
var x, y: Real;
begin
  Write('x y: '); ReadLn(x,y);
  WriteLn(NY[(x>=0) and (y>=0) and (y>=4-2*x) and (y<=6-x)],'принадлежит');
end.
0
11.12.2018, 18:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2018, 18:00
Помогаю со студенческими работами здесь

Табулирование функции по двум переменным.
Здравствуйте!!, для каждого 0.16&lt;=(меньше или равно)y&lt;=1.6 с шагом дельта y=0.24 при всех 0.1...

Поиск по двум переменным в базе
Здравствуйте! Не могу сделать поиск по двум переменным в бд. По одному получается! Вот код: &lt;?php...

Табулирование функции по двум переменным
Как Если начинать табулирование по двум переменным,то как его потом остановить? присвоить...

Выбор значения по двум переменным
Здравствуйте! Столкнулся с задачей нормирования труда на предприятии. Есть таблица с параметрами,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru