Консультация № 200410
13.03.2021, 07:32
0.00 руб.
0 3 1
Здравствуйте! У меня возникли сложности с таким вопросом:
Распечатать те пары слов, расстояние между которыми наименьшее. (Расстояние между словами — это количество позиций, в которых слова различаются. Например, расстояние между словами МАМА и ПАПА или МЫШКА и КОШКА равно двум.)

Обсуждение

давно
Посетитель
403884
6
13.03.2021, 07:33
общий
C++
давно
Академик
20764
1861
13.03.2021, 22:41
общий
13.03.2021, 22:42
Ну где вы тут сложности нашли? Вот функция которая считает то, что вам требуется. Обвес (ввод, вывод,..) пусть пишет кто-то другой.
Код:

typedef CHAR char;

int word_dist (const CHAR *left, const CHAR *right) {
int d;
for (d = 0; *left && *right; ++d, ++left, ++right) {
if (*left == *right) return d;
}
// одинаковых символов не нашлось -- возвращаю -1
return -1;
}
давно
Академик
20764
1861
22.03.2021, 18:56
общий
это ответ
Здравствуйте, Ericsson!
К сожалению желающих ответить не нашлось, так что вот ответ неполный: функция, которая считает результат:
Код:
typedef CHAR char;

int word_dist (const CHAR *left, const CHAR *right) {
int d;
for (d = 0; *left && *right; ++d, ++left, ++right) {
if (*left == *right) return d;
}
// одинаковых символов не нашлось -- возвращаю -1
return -1;
}

Не работает с многобайтовыми кодировками, так что кириллицу придётся во что-то преобразовывать. Я не знаю как с этим в Windows. В Linux надо руками декодировать в wchar_t и соответствующим образом переопределить в программе CHAR
Форма ответа