IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Множества: загадка-ребус
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  2  +


Господа прошу у вас помощи!!! У меня не получается сделать две задачи по теме "Множества".. Вот они:
  • Дан текст из строчных латинских букв, за которыми следует точка. Напечатать все буквы, входящие в текст не менее двух раз; все согласные буквы входящие только в одно слово.
  • Разгадайте ребус: БАРБОС + БОБИК = СОБАКИ.
В первой я не понимаю, как можно удвоить каждую букву входящую во множество...
Вторая вообще полный ужас, у меня есть даже наподобие ребусы, вот решение одного из них: "муха + муха = слон"
Program Example_Set_5;
Uses Crt;
Type
mn = Set of 0..9;
Var
m, y, x, a: 0..9; { цифры числа МУХА }
count, { счетчик числа найденных решений }
n1, n2: Integer; { числа МУХА и СЛОН }
a1, a2, a3, a4: 0..9; { цифры числа CЛOH }
s1, s2: mn; { для хранения цифр каждого из чисел }

Procedure Print( x, y: Integer); { вывод решения в виде ребуса }
begin
Inc(count);
writeln(count,':');
Writeln( x: 5 );
Writeln('+');
Writeln( x: 5 );
Writeln('-------');
Writeln( y:5 );
writeln;
readkey; { Остановка для просмотра всех решений }
end;

Begin
ClrScr;
count := 0;
s1 := []; s2 := [];
for m := 1 to 4 do begin
s1:=s1 + [m]; { заносим первую использованную цифрру }
for y:=0 to 9 do

{ если эта цифра не была еще взята, то добаеляем ее во множество
цифр числа МУХА и выбираем цифру для следующей буквы }
if not (y in s1) then begin
s1 := s1 + [y];
for x := 0 to 9 do
if not (x in s1) then begin
s1 := s1 + [x];
for a:=1 to 9 do
if not (a in s1) then begin
s1 := s1 + [a];
n1:=1000*m+100*y+10*x+a; { число для слова МУХА }
n2 := 2*n1; { число для слова СЛОН }
a1:=n2 div 1000; { выделяем цифры СЛОНа }
a2:=n2 div 100 mod 10;
a3:=n2 div 10 mod 10;
a4:=n2 mod 10;
s2:=[a1,a2,a3,a4]; {множество цифр СЛОНа}
{ если слова состаят из разных цифр
и в слове СЛОН нет одинаковых, то
вывыводим решнение ребуса на экран }
if (s1 * s2 = []) and ([a1]*[a2] = [])
and ([a1]*[a3] = []) and ([a1]*[a4] = [])
and ([a2]*[a3] = []) and ([a2]*[a4] = [])
and ([a3]*[a4] = []) then Print(n1, n2);
s1 := s1 - [a]; { удаляем занесенную цифру }
end;
s1 := s1 - [x];
end;
s1 := s1 - [y];
end;
s1 := s1 - [m];
end;
Writeln('Всего найдено ', count, ' решения. Нажмите Enter ... ');
Readln;
End.

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


--------------------
Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь.
Закон программиста: Семь раз отрежь, ошибся, отмерь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 22.09.2020 16:48
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name