Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2019, 15:17   #1
ST1G
Новичок
Джуниор
 
Регистрация: 13.02.2019
Сообщений: 2
По умолчанию [C++] дано слово. Из всех его букв складываются другие слова, Составить программу, которая по заданному слову из этого набора составляет следующее за ним по алфавиту.

Помогите с задачей. Условие:"Задано слово(латинскими буквами) . Из всех его букв складываются другие слова, возможно и бездумные. Составить программу, которая по заданному слову из этого набора составляет следующее за ним по алфавиту слово из этого же набора. На экран выводится заданное слово и следующее по алфавиту."

Последний раз редактировалось ST1G; 13.02.2019 в 15:21.
ST1G вне форума Ответить с цитированием
Старый 13.02.2019, 15:29   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если в нем не очень много букв, то самый простой способ создать массив всех возможных слов, отсортировать, найти в нем исходное и выбрать следующее. Желательно букв в слове не больше 10-12
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.02.2019, 21:43   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

12! = 479.001.600 море удовольствия при составлении этой горстки слов. А уж отсортироваь... Стьюдент колледж окончит, женится, сына в армию отправит - а сортровка все идет. Эх, суперкомпьютер бы сюда ! Не перестаю удивляться больной фантазии составителей этих полезных в будущей работе задачек.

Последний раз редактировалось digitalis; 13.02.2019 в 21:47.
digitalis вне форума Ответить с цитированием
Старый 13.02.2019, 22:02   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Около 6 гиг для массива в памяти многовато конечно, но вполне реально. Да и сортировка пол миллиарда слов QuickSort за вполне реальное время справится с этим, по крайней мере не часы, а десятки минут, предположительно, не проверял. А так да, хотя бы для слов из 5-6 букв сделал )
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 13.02.2019 в 22:05.
Аватар вне форума Ответить с цитированием
Старый 14.02.2019, 08:25   #5
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Тут явно нужен перебор в лексикографическом порядке. Если буквы исходного слова отсортировать, а из них уже перебирать все возможные комбинации. При этом, выделить функцию, которая бы возвращала следующее значение, то можно получить требуемый результат. Если ошибаюсь, поправьте.
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 14.02.2019, 09:25   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Можно и нужно. Выше же о самом простом способе, ну а не очень простой быстрей и намного. Только подумать нужно. Например так, только ТС пусть сам переводит
Код:
function NextPermutation(Text: String): String;
var i,j,k,n: Integer;
procedure Swap(k1,k2: Integer);
var c: Char;
begin
  c:=Text[k1];
  Text[k1]:=Text[k2];
  Text[k2]:=c;
end;
begin
  n:=Length(Text);
  for i:=n-1 downto 1 do
    if Text[i]<Text[i+1] then begin
      k:=i+1;
      for j:=i+1 to n do if (Text[j]<Text[k]) and (Text[j]>Text[i]) then k:=j;
      Swap(i,k);
      for j:=1 to (n-i) div 2 do Swap(i+j,n-j+1);
      Result:=Text;
      Exit;
    end;
  Result:='';
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 14.02.2019 в 09:30.
Аватар вне форума Ответить с цитированием
Старый 15.02.2019, 11:10   #7
Dias123
Новичок
Джуниор
 
Регистрация: 15.02.2019
Сообщений: 1
По умолчанию

Спасибо мне тоже помогло
Dias123 вне форума Ответить с цитированием
Старый 21.02.2019, 17:47   #8
ST1G
Новичок
Джуниор
 
Регистрация: 13.02.2019
Сообщений: 2
По умолчанию

Спасибо!
ST1G вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Pascal] Дан текст со словами из строчных русских букв. Составить программу, для вывода всех гласных буквы, которые входят хотя бы в одно слово более двух раз Борис65 Помощь студентам 9 07.06.2017 11:08
Даны два слова. Составьте программу, определяющую можно или нет из букв слова А составить слово В. Конь Антон Паскаль, Turbo Pascal, PascalABC.NET 3 10.06.2015 14:44
Даны два слова. Составьте программу, определяющую можно или нет из букв слова А составить слово В Конь Антон Помощь студентам 1 24.05.2015 16:43
программа, которая удаляет из слова наименьшее количество букв так, чтобы слово не содержало двух типов опечаток. Николай Сергеев Паскаль, Turbo Pascal, PascalABC.NET 2 20.11.2013 16:52
Дано 2 слова. Написать программу, которая будет определять присутствует ли слово 1 в слове 2. Паскалька^^ Помощь студентам 5 19.10.2010 00:55