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

Ребус: VOLVO+FIAT=MOTOR, используя тип "Множество"

03.03.2018, 23:00. Показов 1658. Ответов 2

Ребус: VOLVO+FIAT=MOTOR. Каждая буква – это цифра, разным буквам соответствуют разные цифры. Необходимо заменить буквы цифрами так, чтобы получилось верное равенство. Найти все решения (если есть несколько ). ИСПОЛЬЗОВАТЬ ТИП «МНОЖЕСТВО».
помогите, пожалуйста отыскать ошибку в коде (или предложите свой вариант решения). Моя программа ошибки не выдает, но и решения тоже (а их должно быть 10 шт.).

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
Program Rebus;// VOLVO + FIAT= MOTOR
Type
  MN = set of 0..9;
Var
  f,i,a,t,v,o,l,m,r : 0..9;
  S1, S2, S3 : MN;{для хранения цифр каждого из чисел}
  sum,motor:longint;
Begin
  S1 := [ ];
  S2 := [ ];
  s3 := [ ];
  for v := 1 to 9 do
  begin
    S1 := S1+[v];
    for o := 0 to 9 do
      if Not(o in S1) then
      begin
        S1 := S1+[o];
        for l := 0 to 9 do
          if Not (l in S1) then
          begin 
            S1 := S1+[l];                    
            for f:=0 to 9 do 
            begin
              S2 := S2+[f];
                for i :=0 to 9 do
                  if Not(i in S2) then
                  begin
                    S2 := S2+[i];
                    for a := 0 to 9 do
                      if Not (a in S2) then
                      begin 
                        S2 := S2+[a];      
                          for t:=0 to 9 do
                            if Not (t in S2) then
                              begin
                                s2:=s2+[t];
                                for m:=1 to 9 do 
                                begin
                                  S3 := S3+[m];                  
                                  for r:=0 to 9 do
                                    if Not (r in S3) then
                                    begin
                                      s3:=s3+[r];              
                                      sum:=10000*v+1000*(o+f)+100*(l+i)+10*(v+a)+(o+t);
                                      motor:=10000*m+1000*o+100*t+10*o+r;
                                      if sum=motor then
                                        if (s1*s2=[ ]) and (s2*s3=[t])and (s1*s3=[o])then
                                          writeln(v,o,l,v,o,'+',f,i,a,t,'=',m,o,t,o,r);
                                      s3:=s3-[r];
                                    end;
                                    s3:=s3-[m];
                                end;
                                s2:=s2-[t];
                              end;
                        s2:=s2-[a];
                      end;
                    s2:=s2-[i];
                  end;
               s2:=s2-[f];
            end;
            s1:=s1-[l]; 
          end;
          s1:=s1-[o];
      end;
    s1:=s1-[v];
  end;
  Readln;
End.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2018, 23:00
Ответы с готовыми решениями:

Как преобразовать тип "integer" в тип "string"?
Всем привет,как преобразовать тип "integer" в тип "string"? дан код: (1) var f:text;...

Ребус "ТОЧКА + КРУГ = КОНУС" где каждой букве соответствует определённая цифра.
Всем привет. Из названия думаю всем понятно, что нужно мне решить ребус с помощью МНОЖЕСТВ (!) ...

Используя delete, получить из слова "информатика" слово "математика"
Program Primer6; Uses crt; var a: string; Begin clrscr; a:='Инка'; writeln(a); ...

Решить ребус: VOLVO - FIAT=MOTOR
Собстенно чёткой темы нету вот создал. Ну и сразу хочу попросить помощи с программой 1.Работа с...

2
Модератор
9531 / 4859 / 3229
Регистрация: 17.08.2012
Сообщений: 15,203
04.03.2018, 01:44 2
f не может быть 0. И напутали со множествами. На самом деле, тут не нужно три множества, достаточно одного. Во внешнем цикле проще применить присваивание, чем включение / исключение. Во внутреннем цикле вообще незачем r вносить во множество. Исправленный вариант Вашей программы:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
type
  mn = 0..9;
 
var
  v, o, l, f, i, a, t, m, r: mn;
  s: set of mn;
 
begin
  writeln('VOLVO+FIAT=MOTOR');
  for v := 1 to 9 do
    begin
      s := [v];
      for o := 0 to 9 do if not (o in s)
        then begin
          include(s, o);
          for l := 0 to 9 do if not (l in s)
            then begin
              include(s, l);
              for f := 1 to 9 do if not (f in s)
                then begin
                  include(s, f);
                  for i := 0 to 9 do if not (i in s)
                    then begin
                      include(s, i);
                      for a := 0 to 9 do if not (a in s)
                        then begin
                          include(s, a);
                          for t := 0 to 9 do if not (t in s)
                            then begin
                              include(s, t);
                              for m := 1 to 9 do if not (m in s)
                                then begin
                                  include(s, m);
                                  for r := 0 to 9 do
                                    if not (r in s) and
                                       ((((v*10+o+f)*10+l+i)*10+v+a)*10+o+t = (((m*10+o)*10+t)*10+o)*10+r)
                                      then writeln(v, o, l, v, o, '+', f, i, a, t, '=', m, o, t, o, r);
                                  exclude(s, m)
                                end;
                              exclude(s, t)
                            end;
                          exclude(s, a)
                        end;
                      exclude(s, i)
                    end;
                  exclude(s, f)
                end;
              exclude(s, l)
            end;
          exclude(s, o)
        end;
    end;
  readln
end.
Добавлено через 21 минуту
Ещё вариант (не для всех диалектов паскаля):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
type
  mn = 0..9;
 
const
  d: set of mn = [0..9];
 
var
  v, o, l, f, i, a, t, m, r: mn;
 
begin
  writeln('VOLVO+FIAT=MOTOR');
  for v in d - [0] do
    for o in d - [v] do
      for l in d - [v, o] do
        for f in d - [0, v, o, l] do
          for i in d - [v, o, l, f] do
            for a in d - [v, o, l, f, i] do
              for t in d - [v, o, l, f, i, a] do
                for m in d - [0, v, o, l, f, i, a, t] do
                  for r in d - [v, o, l, f, i, a, t, m] do
                    if ((((v*10+o+f)*10+l+i)*10+v+a)*10+o+t = (((m*10+o)*10+t)*10+o)*10+r)
                      then writeln(v, o, l, v, o, '+', f, i, a, t, '=', m, o, t, o, r);
  readln
end.
0
0 / 0 / 0
Регистрация: 03.03.2018
Сообщений: 3
08.03.2018, 14:37  [ТС] 3
Спасибо огромное!)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.03.2018, 14:37
Помогаю со студенческими работами здесь

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

Базовый тип "обьект" содержит - поля:" вектор, его размер и идентификатор в символьном виде"- методы:" введение вектора, выведение вектора, определени
Базовый тип "обьект" содержит - поля:" вектор, его размер и идентификатор в символьном виде" -...

Написать программу проверки правильности написания сочетаний "жи", "ши", "ча", "ща", "чу", "щу". Исправить ошибки
дан текст.написать программу проверки правильности написания сочетаний "жи", "ши", "ча", "ща",...

Решение заданий типа "Array","Matrix","String","File","Text"""
большая просьба помочь решить где-то около 35-40 (из 100) задач (мне не понятных) типа массив и...


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

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

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