Форум » Обработка символьных строк » Задача 24 № 33(А.М. Кабанов) » Ответить

Задача 24 № 33(А.М. Кабанов)

ЮлияДрамма: Помогите, пожалуйста, понять в чем ошибка! УСЛОВИЕ: В текстовом файле k7c-1.txt находится цепочка из символов латинского алфавита A, B, C, D, E. Найдите количество цепочек длины 3, удовлетворяющих следующим условиям: • 1-й символ – один из символов B, C или D; • 2-й символ – один из символов B, D, E, который не совпадает с первым; • 3-й символ – один из символов B, C, E, который не совпадает со вторым. МОЕ РЕШЕНИЕ: stroka = open(r"D:\24data\k7data\k7c-1.txt").read() count = 0 for b1 in 'BCD': ----for b2 in 'BDE': --------for b3 in 'BCE': ------------slovo = b1 + b2 + b3 ------------if b1 != b2 != b3: ----------------c = stroka.count(slovo) ----------------count = count + c print(count)

Ответов - 3

cabanov.alexey: 1) ------------if b1 != b2 and b2 != b3: 2) c count надо аккуратнее, он может не учитывать ряд вхождений (если искомая подстрока пересекается сама с собой)

AnnaPershina: var i,n,k,f: integer; s: string; begin assign( input, 'k7c-1.txt' ); reset( input ); readln(s); n:=length(s); k:=0; i:=1; while (i<(n-2)) do begin if (s='D') or (s='B') or (s='C') and (s<>s[i+1]) and (s[i+1]='B') or (s[i+1]='D') or (s[i+1]='E')and (s[i+2]='B') or (s[i+2]='C') or (s[i+2]='E') and (s[i+2]<>s[i+1]) then begin k:=k+1; i:=i+3; end else i:=i+1; end; writeln(k); end.

cabanov.alexey: c = stroka.count(slovo) count считает не совсем корректно




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