Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 05.04.2015, 17:30   #1 (permalink)
Aksinia
Member
 
Регистрация: 15.12.2013
Сообщений: 31
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 114
Question Помогите "сломать" программу

Здравствуйте!
Когда я отправляю свою програмку на проверку, она проходит не все тесты. А я вот, такие тесты, на которых она не работает, подобрать не могу. Поэтому, может быть, кто-то поможет мне найти такие примеры?)

Вот такая задача:
Для данного слова (последовательности строчных латинских букв) выведите следующее за ним (в лексикографическом порядке) слово, которое может быть получено из данного перестановкой букв (анаграмму). Если данное слово уже является последним среди всех своих анаграмм, то необходимо вывести первую возможную (в лексикографическом порядке) анаграмму.

Входные данные
Задана последовательность слов, по одному слову в строке. Длина одного слова не превышает 50 символов.

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

PHP код:
program project1;
type mess=array [1..50of string;
var
  
M:mess;
  
pr,i,min,v,count,maincount:integer;
  
SaveStr,Str:string;
  
b:char;
  
f:textfile;
begin
  count
:=0;
  
Assign(f'input.txt');
  
reset(f);
  while 
not eof(f) do begin
    Str
:='';
    
readln(f,Str);
    
M[count]:=Str;
    
inc(count);
  
end;
  
close(f);
  
mainCount:=count;
  
count:=0;
  
repeat
    Str
:=M[count];
    
SaveStr:=Str;
    if ((
length(str)=1) or (length(str)=0)) then else begin
      pr
:=Length(Str)-1;
      
i:=Length(Str);
      while ((
Str[pr]{!!!!}>=Str[i]) and (pr>1)) do begin// 7
        
pr:=pr-1;
        
i:=i-1;
      
end;//7 находится перв.
      
min:=i;//6
      
for v:=i to Length(Str) do if ((Str[v]>Str[pr]) and (Str[v]<Str[min])) then min:=v;
      if  (
Str[pr]<Str[min]) then begin
        b
:=Str[min];
        
Str[min]:=Str[pr];
        
Str[pr]:=b;//6 перв. меняется с миним. послед.
        
v:=(Length(Str));
        if ((
i<>Length(Str))and(Str[pr+1]>Str[v])) then begin
          
if (Length(Str)=3then
          
for v:=(Length(Str)) downto (((Length(Str)-PR)div 2)+pr+1) do begin//5
            
b:=Str[v];
            
Str[v]:=Str[pr+Length(Str)-v+1{!!!!}];
            
Str[pr+Length(Str)-v+1{!!!!}]:=b;
          
end//5 меняется порядок остальных
          
else
          for 
v:=(Length(Str)) downto (((Length(Str)-PR)div 2)+pr+1{!!!!}) do begin//5
            
b:=Str[v];
            
Str[v]:=Str[pr+Length(Str)-v+1{!!!!}];
            
Str[pr+Length(Str)-v+1{!!!!}]:=b;
          
end;//5 меняется порядок остальных
        
end;
      
end;
      if 
SaveStr=Str then begin
        
for v:=1 to (Length(Str)div 2) do begin//5
          
b:=Str[v];
          
Str[v]:=Str[Length(Str)-v+1];
          
Str[Length(Str)-v+1]:=b;
        
end//5 меняется порядок остальных
      
end;
    
end;
    
writeln(str);
    
inc(count);
  
until count=maincount;
  
readln;
end
Aksinia вне форума   Ответить с цитированием

Старый 05.04.2015, 17:30
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

По заголовкам нашлось еще кое что схожее, можете посмотреть

Помогите, пожалуйста, написать на Паскале программу "Циклический алгоритм"
Вражеский водолаз "Роял Нейви" и 7 его друзей. Проект"Русский стимпанк". Серия"Враги"
USB-прошивка "мертвых" телефонов Nokia через программу Phoenix
Помогите пожалуйста написать программу "гусеница" на Turbo Pascal 7.0
Ищу программу "каталогизатор"
УНЧ "Родина-1", помогите оживить"динозавра"

Старый 05.04.2015, 18:45   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Аксинья, прикрепите, пожалуйста, входной файл. А лучше, если и выходной, получившийся в результате выполнения конкретного задания (пример). А то без этого как-то сложновато.
Vladimir_S вне форума   Ответить с цитированием
Старый 05.04.2015, 19:24   #3 (permalink)
Aksinia
Member
 
Регистрация: 15.12.2013
Сообщений: 31
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 114
По умолчанию

Входной файл, например, такой. А выводится ответ на консоль.
Вложения
Тип файла: txt input.txt (141 байт, 589 просмотров)
Aksinia вне форума   Ответить с цитированием
Старый 05.04.2015, 19:27   #4 (permalink)
Aksinia
Member
 
Регистрация: 15.12.2013
Сообщений: 31
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 114
По умолчанию

Вот то, что выводится.
Миниатюры
aacuiyiiue.png  
Aksinia вне форума   Ответить с цитированием
Старый 05.04.2015, 21:11   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ох, боюсь - не смогу помочь. Ибо ни-че-го не понимаю! Ни в задании, ни в структуре входного файла, ни в программе (какая-то жуть накручена).
Я бы понял если бы, например, было так:
1. Входной файл содержит кучу слов разной длины вперемешку.
2. Вводим с консоли слово.
3. Выискиваем в файле все анаграммы введенного (например, через символьное множество с предварительной отсортировкой по длине) и располагаем их в лексикографическом порядке, начиная с введенного. Если введенное является последним, то выводим самую первую (младшую) анаграмму.

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

Извините.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 07.04.2015, 21:44   #6 (permalink)
Aksinia
Member
 
Регистрация: 15.12.2013
Сообщений: 31
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 114
По умолчанию

Попробую объяснить понятней. Во входном файле например слово aab.
Тогда программа выводит на консоль слово aba(оно следующее за aab, если все анаграммы слова aab расположить в лексикографическом порядке).
Или во входном файле 4 слова(по одному в строке) :
aab
aba
baa
aaa
Тогда на консоль должно вывестись:
aba
baa
aab
aaa
Aksinia вне форума   Ответить с цитированием
Старый 07.04.2015, 23:16   #7 (permalink)
Aksinia
Member
 
Регистрация: 15.12.2013
Сообщений: 31
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 114
По умолчанию

Сама прога немного изменилась.
Все в архиве.
Вложения
Тип файла: rar 2.rar (27.5 Кб, 23 просмотров)
Aksinia вне форума   Ответить с цитированием
Старый 08.04.2015, 17:06   #8 (permalink)
Aksinia
Member
 
Регистрация: 15.12.2013
Сообщений: 31
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 114
По умолчанию

Стало понятней?
Aksinia вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 04:06.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.