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

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

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

> подсчитать буквы, можете исправить программу
maksimla
сообщение 27.02.2009 21:49
Сообщение #1


Знаток
****

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

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


дан головоломка ABCD+ABCD=EFGH где каждая разная буква записана под разным числом .
надо буквы изменить цифрами чтобы былобы правильное решение .напишите програму чтобы нашлабы всевозможные варьянты решения
написал програму но в ней ошибки есть помогите исправить ошибки
program galvosukis;
type aibe = set of 0..9;
var sakitmuo, m, u, h, a : 0..9;
i, n1, n2 : integer;
S1, S2 : aibe;
f : boolean;
procedure spausdink(x, y : integer);
begin
write(x);
write(' + ');
write(x);
write(' = ');
writeln(y);
writeln;
end;
begin
S1 := [];
for m := 0 to 9 do
begin
S1 := S1+[m];
for u := 0 to 9 do
if u in S1
then
begin
S1 := S1+[u];
for h := 0 to 9 do
if h in S1
then
begin
S1 := S1+[h];
for a := 0 to 9 do
if a in S1
then
begin
S1 := S1+[a];
n1 := 1000*m+100*u+10*h+a;
n2 := n1;
f := true;
S2 := [];
for i := 0 to 9 do
begin
sakitmuo := n2 mod 1;
n2 := n2 mod 10;
f := n2 and sakitmuo in s2;
S2 := [sakitmuo] + S2;
end;
if (S1+S2=[ ]) and f
then
spausdink(n1, 2 * n1);
S1 := S1-[a];
end;
S1 := S1-[h];
end;
S1 := S1-[u];
end;
S1 := S1-[m];
end;
readln;
end.


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
klem4
сообщение 28.02.2009 9:34
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


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

{$mode tp}
{$b-}
const alpha = 'abcdefgh';
var palette: array [1..length( alpha )] of byte;

procedure dump(const s: string);
var
i: byte;
begin
for i := 1 to length(s) do write(palette[pos(s[i], alpha)]);
writeln;
end;

function atoi( const s: string ): integer;
var
i: byte;
int, ten, pow, cvalue: longint;
begin
int := 0;
ten := 1;
for i := length(s) downto 1 do begin
cvalue := palette[ pos(s[i], alpha) ];
inc(int, cvalue * ten);
ten := ten * 10;
end;
atoi := int;
end;

function next_palette: boolean;
var i: byte;
begin
i := length(palette) + 1;
repeat
dec(i);
inc( palette[i]);
if ( palette[i] > 9 ) then palette[i] := 0;
until (palette[i] <> 0) or ((palette[i] = 0) and (i = 1));
next_palette := palette[i] <> 0;
end;

procedure solve( const a, b, c: string);
var
done: boolean;
_a, _b, _c, i: longint;
begin
fillchar( palette, sizeof(palette), 0);
next_palette;

repeat
_a := atoi(a); _b := atoi(b); _c := atoi©;
until (_a + _b = _c) or not (next_palette);

if ( _a + _b = _c ) then begin
dump(a); dump(b); dump©;
writeln(_a, '+', _b, '=', _c);
for i := 1 to length(alpha) do writeln(alpha[i], '=', palette[i]);
end else writeln('no');
end;

begin
solve('abcd', 'abcd', 'efgh');
end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



- Текстовая версия 17.07.2025 14:14
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"