Форум » Обработка числовых последовательностей » [C4] Задача №24 » Ответить

[C4] Задача №24

Dmitry78: Хотелось бы услышать мнение участников форума. Является ли такое решение задачи №24 оптимальным? const Number:set of char=['0'..'9']; var i,j:integer; s:string; c,x:char; k:boolean; begin s:=''; repeat read(c); if c in Number then begin s:=s+c; k:=true; end; until c='.'; if k=true then begin for i:=1 to length(s)-1 do begin for j:=i+1 to length(s) do begin if s[ i ]<s[j] then begin x:=s[ i ]; s[ i ]:=s[j]; s[j]:=x; end; end; end; writeln('Да'); for i:=1 to length(s) do write(s[ i ]); end else writeln('Нет'); end. С уважением, Дмитрий. Исправил write(s [ i] )

Ответов - 5

oval: Dmitry78 пишет: for i:=1 to length(s)-1 do begin for j:=i+1 to length(s) do begin if s[ i ]<s[j] then begin x:=s[ i ]; s[ i ]:=s[j]; s[j]:=x; end; end; end; Это классический "пузырек" его сложность О(n2) если использовать массив счетчиков, то сложность будет О(n). Dmitry78 пишет: for i:=1 to length(s) do write(s); видимо должно быть for i:=1 to length(s) do write(s[ i ]); или write(s);

Архипова: Уважаемый Константин Юрьевич! Алгоритм решения задачи №37 неверно вычислит контрольное значение при таких входных данных: 6 12 18 0 216. Действительно, max6=18, max=0, max2=18, max3=0 и с=0, а не 216! Прокомментируйте, пожалуйста.

Поляков: Архипова пишет: Алгоритм решения задачи №37 неверно вычислит контрольное значение при таких входных данных: 6 12 18 0 216. Действительно, max6=18, max=0, max2=18, max3=0 и с=0, а не 216! Прокомментируйте, пожалуйста. Комментирую. Это ошибка, в программе не хватает одной строчки. Сейчас на сайте всё исправлено. Спасибо!


tavabar: Архипова пишет: при таких входных данных: 6 12 18 0 216 Мне кажется, такие данные невозможны, т.к. ноль ПО УСЛОВИЮ является не членом последовательности, а признаком конца ввода.

Поляков: tavabar пишет: Мне кажется, такие данные невозможны, Ноль - это по условию конец ввода основной последовательности, а 216 - контрольная сумма. Все нормально.



полная версия страницы