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

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

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

> слова с метограммой составить цепочку пошаговым методом, понел но не совсем что делать
сообщение
Сообщение #1


Знаток
****

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

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


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

напишите программа которая определила два слова можно соединить метаграмной цепочкой.

Первичные данные написаны в файле duom.txt . На первой строчке написан натуральное число n
(2 ≤ n ≤ 20), на остальных n строчках по одному на писаному слову. Слово не больше 100 символов больших литовских букв.

Результат записывается в файл rez.txt. Если два первичные файловых слова можно соединить цепочкой, то в единственный результат записывает слово MOZNO. В другом случае записываем NEMOZNO.

первичные данные и результат
первичные данные
4
RYTAS
BATAS
RATAS
BADAS
Результат
MOZNO
Объяснение
RYTAS - RATAS - BATAS

ДОПОЛНИТЕЛЬНО НАПИСАТЬ ГЕНЕРАТОР СЛОВ
всего 20 слов
вопрос в словах должна быть такая же самая длина слова чтобы было соединено например
BATAS
RATA
?
а тут обязательно два первых слова соединить?
я так думаю что сперва как-то так надо
все слова в массив потом сравниваем слово. слово сравниваем по буквам и если в слове не совпадает одна буква то совпадает и это как-то true и все если нет то берем первое и третье слово и смотрим совпадает или нет и так далее.
и как написать методом обратным методом (пошаговым методом)?





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


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(maksimla @ 15.03.2009 10:10) *
вопрос в словах должна быть такая же самая длина слова чтобы было соединено например
BATAS
RATA
?
а тут обязательно два первых слова соединить?
я так думаю что сперва как-то так надо
все слова в массив потом сравниваем слово. слово сравниваем по буквам и если в слове не совпадает одна буква то совпадает и это как-то true и все если нет то берем первое и третье слово и смотрим совпадает или нет и так далее.
и как написать методом обратным методом (пошаговым методом)?
Судя по условию, допускается только замена букв, но не добавление/удаление. То есть все слова должны быть равной длины.

В принципе, ты все правильно думаешь. А написать можно прмерно так (с рекурсией):
const
m=20;

var
i,n,l: word;
w: array[1..m]of string;
Used: array[1..m]of boolean;
f: text;

function Connected(a,b: word): boolean;
var
i,j: integer;
r,ua,ub: boolean;
begin
ua:=Used[a];
Used[a]:=true;
ub:=Used[b];
Used[b]:=true;
j:=0;
for i:=1 to l do if w[a][i]<>w[b][i] then Inc(j);
if j=1 then Connected:=true else begin
i:=3;
r:=false;
repeat
if not Used[i] then r:=Connected(a,i) and Connected(i,b);
Inc(i)
until r or (i>n);
Connected:=r
end;
Used[a]:=ua;
Used[b]:=ub
end;

begin
Assign(f,'duom.txt');
ReSet(f);
ReadLn(f,n);
for i:=1 to n do ReadLn(f,w[i]);
Close(f);
l:=Length(w[1]);
for i:=3 to n do Used[i]:=false;
WriteLn(Connected(1,2))
end.

Нужный вывод в файл сделай сам. Что неясно - спрашивай smile.gif.

Добавлено через 11 мин.
Цитата(maksimla @ 15.03.2009 10:10) *
ДОПОЛНИТЕЛЬНО НАПИСАТЬ ГЕНЕРАТОР СЛОВ
всего 20 слов
Генератор слов сделать легко, но только если брать все латинские (извини, литовских не знаю) буквы полностью случайно, то, боюсь, на двадцати словах результат будет NEMOZNO с подавляющей вероятностью. Так что, если хочется иногда получать MOZNO, то нужно генерить не просто так.. smile.gif

PS
лучше сказать NEVOZMOZNO, слова "неможно" в русском нет smile.gif.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





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