30.12.2013, 12:20 | #11 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Во-первых, сразу видно, что есть ошибки. Так, используя случайный выбор, Вы, тем не менее, пропустили инициализацию генератора случайных чисел, т.е. Randomize. Но это полбеды. А вот, скажем, это: Цитата:
И вообще - что-то Вы там накрутили-навертели в функции, так что, мне, извините, проще оказалось свою программку нарисовать, чем разбираться с Вашими построениями. По-моему, получилось проще, короче и прозрачнее. Единственная оговорка: поскольку реализован случайный механизм перестановок символов, то в коротких словах (четырех- пятибуквенных) порядок может и сохраниться. Если это критично, можно несколько усложнить программу и сделать так, чтобы всегда буквы были переставлены. Код:
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. |
|
30.12.2013, 12:20 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Советую вам обратить внимание на похожие обсуждения Помогите найти ошибку Помогите найти ошибку Помогите найти ошибку |
30.12.2013, 22:12 | #12 (permalink) |
Радиоинженер
Регистрация: 25.09.2012
Адрес: г.Дзержинск Нижегородской обл.
Сообщений: 25,308
Записей в дневнике: 7
Сказал(а) спасибо: 292
Поблагодарили 219 раз(а) в 70 сообщениях
Репутация: 110185
|
Владимир, что-то Ваши подопечные совсем не владеют методами отладки ПО.
С этим надо что-то делать... |
31.12.2013, 07:19 | #15 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
Как справедливо отметил выше Владимир, некоторые программы проще переписать заново, чем отладить их кривой код. Как то так.
__________________
Убить всех человеков! |
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) | |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
Цитата:
Педагогика слишком серьезная наука, чтобы ею заниматься без предварительной подготовки материалов с упором на уровень знаний обучаемого.
__________________
Убить всех человеков! |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|