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


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

Уважаемая Аксинья!
Во-первых, сразу видно, что есть ошибки. Так, используя случайный выбор, Вы, тем не менее, пропустили инициализацию генератора случайных чисел, т.е. Randomize. Но это полбеды. А вот, скажем, это:
Цитата:
r:=random(2)-(length(s3)-3);
беда большая, потому как Ваше r получится и вовсе отрицательным, а ведь это - индекс строковой переменной! Никуда не годится.
И вообще - что-то Вы там накрутили-навертели в функции, так что, мне, извините, проще оказалось свою программку нарисовать, чем разбираться с Вашими построениями. По-моему, получилось проще, короче и прозрачнее. Единственная оговорка: поскольку реализован случайный механизм перестановок символов, то в коротких словах (четырех- пятибуквенных) порядок может и сохраниться. Если это критично, можно несколько усложнить программу и сделать так, чтобы всегда буквы были переставлены.
Код:
program coffee;

Type
 mnog= set of byte;

Const
 A:mnog=[65 .. 90];
 B:mnog=[97 .. 122];

var
 S:string;
 C:Char;
 f1,f2:text;

function Inversion(Si:string):string;
var
 P:String;
 M:mnog;
 j,q:byte;
begin
 If Length(Si)<4 then Inversion:=Si else
  begin
   M:=[];
   P:=Si[1];
   j:=0;
   repeat
    q:=2+Random(Length(Si)-2);
    if not (q in M) then
     begin
      Inc(j);
      P:=P+Si[q];
      M:=M+[q];
     end;
   until j=Length(Si)-2;
   P:=P+Si[Length(Si)];
   Inversion:=P;
  end;
end;

begin
  assign(f1, 'Input.txt');
  reset(f1);
  assign(f2, 'Output.txt');
  rewrite(f2);
  Randomize;
  While not EoF(f1) do
   begin
    S:='';
    repeat
     read(f1,C);
    until (Ord(C) in (A+B)) or EoF(f1);
    if not EoF(f1) then
     begin
      S:=S+C;
      repeat
       read(f1,C);
       if (Ord(C) in (A+B)) then S:=S+C;
      until not (Ord(C) in (A+B)) or EoF(f1);
      writeln(f2,S,' ',Inversion(S));
     end;
   end;
  close(f1);
  close(f2);
end.
Миниатюры
nc02.jpg   nc03.jpg  
Vladimir_S вне форума   Ответить с цитированием

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

Советую вам обратить внимание на похожие обсуждения

Помогите найти ошибку
Помогите найти ошибку
Помогите найти ошибку

Старый 30.12.2013, 22:12   #12 (permalink)
Николай_С
Радиоинженер
 
Аватар для Николай_С
 
Регистрация: 25.09.2012
Адрес: г.Дзержинск Нижегородской обл.
Сообщений: 25,308
Записей в дневнике: 7
Сказал(а) спасибо: 292
Поблагодарили 219 раз(а) в 70 сообщениях
Репутация: 110185
По умолчанию

Владимир, что-то Ваши подопечные совсем не владеют методами отладки ПО.
С этим надо что-то делать...
Николай_С вне форума   Ответить с цитированием
Старый 30.12.2013, 23:12   #13 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Николай_С Посмотреть сообщение
Владимир, что-то Ваши подопечные совсем не владеют методами отладки ПО.
С этим надо что-то делать...
Дык... Коля, что уж тут поделаешь... Это ведь дело такое: желание есть - так и сноровка быстро появится. А ежели желания нету, то...
Vladimir_S вне форума   Ответить с цитированием
Старый 31.12.2013, 01:10   #14 (permalink)
Николай_С
Радиоинженер
 
Аватар для Николай_С
 
Регистрация: 25.09.2012
Адрес: г.Дзержинск Нижегородской обл.
Сообщений: 25,308
Записей в дневнике: 7
Сказал(а) спасибо: 292
Поблагодарили 219 раз(а) в 70 сообщениях
Репутация: 110185
По умолчанию

Избаловали Вы их...
Николай_С вне форума   Ответить с цитированием
Старый 31.12.2013, 07:19   #15 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Как справедливо отметил выше Владимир, некоторые программы проще переписать заново, чем отладить их кривой код. Как то так.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 31.12.2013, 11:45   #16 (permalink)
Николай_С
Радиоинженер
 
Аватар для Николай_С
 
Регистрация: 25.09.2012
Адрес: г.Дзержинск Нижегородской обл.
Сообщений: 25,308
Записей в дневнике: 7
Сказал(а) спасибо: 292
Поблагодарили 219 раз(а) в 70 сообщениях
Репутация: 110185
По умолчанию

Тут дело не в том что проще...
Основная цель - научить человека основным приемам программирования и отладки программ.
Николай_С вне форума   Ответить с цитированием
Старый 31.12.2013, 14:06   #17 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Цитата:
Сообщение от Николай_С Посмотреть сообщение
Основная цель - научить человека основным приемам программирования и отладки программ
Это совсем не формат нашего форума, для учёбы есть специализированные образовательные ресурсы. Здесь же цель немного другая - не учить с нуля, а оказать посильную помощь в ситуациях и задачах, вызвавших трудности. И не более!

Педагогика слишком серьезная наука, чтобы ею заниматься без предварительной подготовки материалов с упором на уровень знаний обучаемого.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Ads

Яндекс

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


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

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




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

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