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

Проверить, являются ли введенные слова анаграммами друг друга

07.10.2015, 17:14. Показов 4182. Ответов 3
Метки нет (Все метки)

Слово называется анаграммой другого слова, если оно может быть получено перестановкой его букв.
Во входном файле два слова в отдельных строках. Длина каждого слова не превышает 255 символов.
В выходной файл выведите "YES" - если введенные слова являются анаграммами друг друга, и "NO" - в противном случае.
Пример:
SHARM YES
MARSH

ANANAS NO
NASA

Подскажите, пожалуйста!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2015, 17:14
Ответы с готовыми решениями:

вывести "YES" – если введенные слова являются анаграммами друг друга, "NO" – если нет
Даны два слова на отдельных строках. Слова состоят из строчных латинских букв и цифр. ребуется...

Найти слова, которые являются анаграммами друг для друга
Анагра́мма (от греч. ανα- — «пере» и γράμμα — «буква») — литературный приём, состоящий в...

Выписать все слова, которые являются анаграммами друг для друга
Анагра́мма (от греч. ανα- — «пере» и γράμμα — «буква») — литературный приём, состоящий в...

Проверить, являются ли слова анаграммами
Привет всем. Помогите, пожалуйста, написать программу на языке Си. Задание: Пользователь...

3
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7519 / 4383 / 2781
Регистрация: 22.11.2013
Сообщений: 12,543
Записей в блоге: 1
07.10.2015, 20:08 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
  s, t: String;
  c: Char;
  i, j: Integer;
begin
  ReadLn(s); ReadLn(t);
  if Length(s)=Length(t) then begin
    for i:=Length(s) downto 2 do for j:=2 to i do
      if s[j-1]>s[j] then begin c:=s[j-1]; s[j-1]:=s[j]; s[j]:=c; end;
    for i:=Length(t) downto 2 do for j:=2 to i do
      if t[j-1]>t[j] then begin c:=t[j-1]; t[j-1]:=t[j]; t[j]:=c; end;
    if s=t then WriteLn('YES') else WriteLn('NO');
  end else WriteLn('NO');
end.
1
0 / 0 / 0
Регистрация: 16.06.2015
Сообщений: 25
07.10.2015, 23:45  [ТС] 3
Спасибо огромное!
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7519 / 4383 / 2781
Регистрация: 22.11.2013
Сообщений: 12,543
Записей в блоге: 1
08.10.2015, 10:08 4
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

ZX Spectrum-128,
То же самое в несколько ином изложении:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function Sort(s: String): String;
var
  i, j: Integer;
  c: Char;
begin
  for i:=Length(s) downto 2 do for j:=2 to i do
    if s[j-1]>s[j] then begin c:=s[j-1]; s[j-1]:=s[j]; s[j]:=c; end;
  Sort:=s;
end;
const NY: array [Boolean] of String[3] = ('NO', 'YES');
var s, t: String;
begin
  ReadLn(s); ReadLn(t);
  WriteLn(NY[(Length(s)=Length(t)) and (Sort(s)=Sort(t))]);
end.
Добавлено через 5 минут
PS. Сравнение длин только для экономии на сортировках в очевидном случае. Если такая экономия не нужна, можно "лишнее" сравнение убрать.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.10.2015, 10:08
Помогаю со студенческими работами здесь

Ввести с клавиатуры два слова. Проверить, являются ли они анаграммами
Ввести с клавиатуры два слова. Проверить, являются ли они анаграммами, то есть возможно ли из всех...

Проверить, являются ли два числа перевертышами друг друга
Составить программу, которая вводит два трехзначных числа и проверяет, являются ли они...

Проверить, являются ли 2 строки анаграммами
Добрый день Необходимо узнать, являются ли 2 строки анаграммами Правильно ли я рассуждаю, что...

Проверить, являются ли данные два слова обращенными друг к другу
Проверить, являются ли данные два слова обращенными друг к другу, то есть первое читается слева...


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

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

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