Автор | Сообщение |
|
Отправлено: 10.02.21 12:14. Заголовок: Ошибка в задании 3357
В задании неправильный ответ, верный ответ 6, а не 8, проверял на двух ЯП
|
|
|
Ответов - 13
[только новые]
|
|
|
| Администратор
|
Сообщение: 2421
|
|
Отправлено: 10.02.21 12:14. Заголовок: Показывайте программ..
Показывайте программу.
|
|
|
|
Отправлено: 12.02.21 19:58. Заголовок: не знаю как сдесь сд..
не знаю как здесь сделать табы грамотно maxim, k = 1, 1 with open("24.txt") as t: a = t.readline() for i in range(1, len(a)): if a[ i] > a[i - 1]: k += 1 maxim = max(maxim, k) else: k = 1 print(maxim)
|
|
|
|
| Администратор
|
Сообщение: 2435
|
|
Отправлено: 12.02.21 20:01. Заголовок: В задании спрашивают..
В задании спрашивают про убывающую последовательность, а вы нашли возрастающую. Знак разверните наоборот в условном операторе.
|
|
|
|
Отправлено: 14.02.21 10:07. Заголовок: В чем ошибка
var f:text; s:string; max,i,k:integer; Begin assign(f,'24.txt'); reset(f); Readln(f,s); for i:=1 to length(s)-1 do begin if ord(s[ i])>ord(s[i+1]) then k:=k+1 else begin If max<k then max:=k; k:=0; end; end; Writeln(max); end.
|
|
|
|
| Администратор
|
Сообщение: 2445
|
|
Отправлено: 14.02.21 13:33. Заголовок: Длина последовательн..
Длина последовательности, по крайней мере, равна 1, а не 0.
|
|
|
|
Отправлено: 14.02.21 13:57. Заголовок: Все равно с ответом не сходится
var f:text; s:string; max,i,k:integer; Begin assign(f,'24.txt'); reset(f); Readln(f,s); k:=1; for i:=1 to length(s)-1 do begin if ord(s[ i])>ord(s[i+1]) then k:=k+1 else begin If max<k then max:=k; k:=1; end; end; Writeln(max); end.
|
|
|
|
| Администратор
|
Сообщение: 2449
|
|
Отправлено: 14.02.21 15:54. Заголовок: Что происходит, если..
Что происходит, если нужная последовательность в самом конце строки?
|
|
|
|
Отправлено: 14.02.21 16:18. Заголовок: Если цикл развернуть..
Если цикл развернуть, то получается. А есть ли вариант без разварота цикла? Ведь в таком случае, если последовательность в начале, мы потеряем. var f:text; s:string; max,i,k:integer; Begin assign(f,'24.txt'); reset(f); Readln(f,s); k:=1; for i:= length(s)downto 2 do begin if ord(s )<ord(s[i-1]) then k:=k+1 else begin If max<k then max:=k; k:=1; end; end; Writeln(max); end.
|
|
|
|
| Администратор
|
Сообщение: 2451
|
|
Отправлено: 14.02.21 16:22. Заголовок: сдающий пишет: А ест..
сдающий пишет: цитата: | А есть ли вариант без разварота цикла? |
|
Конечно. Посмотрите решение на Питоне.
|
|
|
|
Отправлено: 15.02.21 08:03. Заголовок: Я так понимаю ,что о..
Я так понимаю ,что ошибка у меня в границах. На питоне (я его не знаю((( ) вроде написано, что i изменяется от 1 до длинны строки for i in range(1, len(a)): if a[ i] > a[i - 1]: Но если я пишу for i:=1 to length(s) do begin if ord(s)<ord(s[i-1]) then k:=k+1 else begin If max<k then max:=k; k:=1; end; Программа выдает ошибку, выхода за границы массива. И выполняя сдвиг в ту или другую сторону, ошибка остается ((((
|
|
|
|
| Администратор
|
Сообщение: 2456
|
|
Отправлено: 15.02.21 14:43. Заголовок: сдающий пишет: Я так..
сдающий пишет: цитата: | Я так понимаю ,что ошибка у меня в границах |
|
Посмотрите, в какой момент обновляется переменная max у вас, и в какой момент - в программе на Питоне (как только изменилось k). Сделайте так же.
|
|
|
|
|
Отправлено: 15.02.21 09:22. Заголовок: И так все равно 6
var f:text; s:string; max,i,k:integer; Begin assign(f,'24.txt'); reset(f); Readln(f,s); k:=1; for i:=2 to length(s) do begin if ord(s)<ord(s[i-1]) then k:=k+1 else begin If max<k then max:=k; k:=1; end; end; Writeln(max); end.
|
|
|
|
Отправлено: 15.02.21 19:08. Заголовок: спасибо
var f:text; s:string; max,i,k:integer; Begin assign(f,'24.txt'); reset(f); Readln(f,s); k:=1; max:=1; for i:=2 to length(s) do begin if ord(s)<ord(s[i-1]) then begin k:=k+1; If max<k then max:=k end else k:=1; end; Writeln(max); end. Спасибо за подсказки! Получилось, в последнем прохождении цикла к=8 а иначе не выполняется, и мах не меняется))
|
|
|
|