Слайд 2
![Спецификация задач: задача № 24 Новые задачи 2021 года Умение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/326540/slide-1.jpg)
Спецификация задач: задача № 24
Новые задачи 2021 года
Умение создавать собственные
программы (10–20 строк) для обработки символьной информации
Содержание: Цепочки (конечные последовательности), деревья, списки, графы, матрицы (массивы), псевдослучайные последовательности
Умение: Строить информационные модели объектов, систем и процессов в виде алгоритмов
Уровень сложности: высокий
Примерное время выполнения: 18 минут
Слайд 3
![Решение задач № 24 (ДЕМО-2021)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/326540/slide-2.jpg)
Решение задач № 24 (ДЕМО-2021)
Слайд 4
![Решение через строки: Python f = open('24.txt', 'r') s =](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/326540/slide-3.jpg)
Решение через строки: Python
f = open('24.txt', 'r')
s = f.read()
maxN = 0
currentN
= 0
for i in range(1, len(s)):
if s[i-1] != s[i]:
currentN += 1
if currentN > maxN:
maxN = currentN
else:
currentN = 0
print(maxN+1)
f.close()
Слайд 5
![Решение через строки: Pascal var currentN, maxN, i: longint; s:](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/326540/slide-4.jpg)
Решение через строки: Pascal
var
currentN, maxN, i: longint;
s: string;
begin
Assign(input,
'24.txt');
readln(s);
maxN := 0;
currentN := 0;
for i := 2 to s.Length do
begin
if s[i-1] <> s[i] then
begin
currentN := currentN + 1;
if currentN > maxN then
maxN := currentN;
end
else
begin
currentN := 0;
end;
end;
writeln(maxN + 1);
end.
Слайд 6
![Решение через строки: C++ #include #include #include using namespace std;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/326540/slide-5.jpg)
Решение через строки: C++
#include
#include
#include
using namespace std;
int main(){
ifstream f("24.txt",
ios::in);
int maxN = 0;
int currentN = 0;
string s;
f >> s;
for(int i = 1; i < s.size(); i++){
if (s[i-1] != s[i]){
currentN += 1;
if (currentN > maxN)
maxN = currentN;
}
else{
currentN = 0;
}
}
cout << maxN+1;
f.close();
}
Слайд 7
![Решение через символы: Python f = open('24.txt', 'r') maxN =](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/326540/slide-6.jpg)
Решение через символы: Python
f = open('24.txt', 'r')
maxN = 0
currentN = 0
cNew
= f.read(1)
while 1:
cOld = cNew
cNew = f.read(1)
if cNew == '': break
if cOld != cNew:
currentN += 1
if currentN > maxN:
maxN = currentN
else:
currentN = 0
print(maxN+1)
f.close()
Слайд 8
![Решение через символы: Pascal var f: text; currentN, maxN, i:](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/326540/slide-7.jpg)
Решение через символы: Pascal
var
f: text;
currentN, maxN, i: longint;
cNew,
cOld: char;
begin
Assign(f, '24.txt');
Reset(f);
maxN := 0;
currentN := 0;
read(f, cNew);
while not eof(f) do
begin
cOld := cNew;
read(f, cNew);
if cOld <> cNew then
begin
currentN := currentN + 1;
if currentN > maxN then
maxN := currentN;
end
else
begin
currentN := 0;
end;
end;
writeln(maxN + 1);
end.
Слайд 9
![Решение через символы: C++ #include #include using namespace std; int](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/326540/slide-8.jpg)
Решение через символы: C++
#include
#include
using namespace std;
int main(){
ifstream f("24.txt", ios::in);
int
maxN = 0;
int currentN = 0;
char cNew, cOld;
f >> cNew;
while(!f.eof()){
cOld = cNew;
f >> cNew;
if (cOld != cNew){
currentN += 1;
if (currentN > maxN)
maxN = currentN;
}
else{
currentN = 0;
}
}
cout << maxN+1;
f.close();
}
Слайд 10
![Подсчёт макс. последовательности X: Python f = open('24.txt', 'r') s](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/326540/slide-9.jpg)
Подсчёт макс. последовательности X: Python
f = open('24.txt', 'r')
s = f.read()
maxN =
0
currentN = 0
for i in range(0, len(s)):
if s[i] == 'X':
currentN += 1
if currentN > maxN:
maxN = currentN
else:
currentN = 0
print(maxN)
f.close()
Слайд 11
![Подсчёт макс. последовательности X: Pascal var currentN, maxN, i: longint;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/326540/slide-10.jpg)
Подсчёт макс. последовательности X: Pascal
var
currentN, maxN, i: longint;
s: string;
begin
Assign(input, '24.txt');
readln(s);
maxN := 0;
currentN := 0;
for i := 1 to s.Length do
begin
if s[i] = 'X' then
begin
currentN := currentN + 1;
if currentN > maxN then
maxN := currentN;
end
else
begin
currentN := 0;
end;
end;
writeln(maxN);
end.
Слайд 12
![Подсчёт макс. последовательности X: C++ #include #include #include using namespace](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/326540/slide-11.jpg)
Подсчёт макс. последовательности X: C++
#include
#include
#include
using namespace std;
int main(){
ifstream
f("24.txt", ios::in);
int maxN = 0;
int currentN = 0;
string s;
f >> s;
for(int i = 0; i < s.size(); i++){
if (s[i] == 'X'){
currentN += 1;
if (currentN > maxN)
maxN = currentN;
}
else{
currentN = 0;
}
}
cout << maxN;
f.close();
}
Слайд 13
![Подсчёт макс. последовательности XYZ: Python f = open('24.txt', 'r') s](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/326540/slide-12.jpg)
Подсчёт макс. последовательности XYZ: Python
f = open('24.txt', 'r')
s = f.read()
maxN =
0
currentN = 0
i = 0
while i < len(s) - 2:
if s[i] == 'X' and s[i+1] == 'Y' and s[i+2] == 'Z':
currentN += 3
if currentN > maxN:
maxN = currentN
i += 3
else:
currentN = 0
i += 1
print(maxN)
f.close()
Слайд 14
![Подсчёт макс. последовательности XYZ: Pascal var currentN, maxN, i: longint;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/326540/slide-13.jpg)
Подсчёт макс. последовательности XYZ: Pascal
var
currentN, maxN, i: longint;
s: string;
begin
Assign(input, '24.txt');
readln(s);
maxN := 0;
currentN := 0;
i := 1;
while i <= s.Length-2 do
begin
if (s[i] = 'X') and (s[i+1] = 'Y') and (s[i+2] = 'Z') then
begin
currentN := currentN + 3;
if currentN > maxN then
maxN := currentN;
i := i + 3;
end
else
begin
currentN := 0;
i := i + 1;
end;
end;
writeln(maxN);
end.
Слайд 15
![Подсчёт макс. последовательности XYZ: C++ #include #include #include using namespace](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/326540/slide-14.jpg)
Подсчёт макс. последовательности XYZ: C++
#include
#include
#include
using namespace std;
int main(){
ifstream
f("24.txt", ios::in);
int maxN = 0;
int currentN = 0;
string s;
f >> s;
int i = 0;
while (i < s.size() - 2){
if (s[i] == 'X' && s[i+1] == 'Y' && s[i+2] == 'Z'){
currentN += 3;
if (currentN > maxN)
maxN = currentN;
i += 3;
}
else{
currentN = 0;
i += 1;
}
}
cout << maxN;
f.close();
}
Слайд 16
![Строковые функции и методы Python: https://www.w3schools.com/python/python_ref_string.asp Pascal: http://pascalabc.net/downloads/pabcnethelp/index.htm?page=LangGuide/Types/string.html С++: https://en.cppreference.com/w/cpp/string/basic_string](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/326540/slide-15.jpg)
Строковые функции и методы
Python:
https://www.w3schools.com/python/python_ref_string.asp
Pascal:
http://pascalabc.net/downloads/pabcnethelp/index.htm?page=LangGuide/Types/string.html
С++:
https://en.cppreference.com/w/cpp/string/basic_string
Слайд 17
![Дополнительные задания Подсчитать количество слов в файле Подсчитать количество строчных](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/326540/slide-16.jpg)
Дополнительные задания
Подсчитать количество слов в файле
Подсчитать количество строчных и прописных букв
Определить
количество слов-палиндромов в файле. Слова в файле разделены пробелами.
Узнать самый частый символ в файле.
Найти и записать самое длинное слово в файле.