Решение задач по теме «Строки»
учебно-методический материал по информатике и икт (10 класс) на тему
В статье представлены задачи разного уровня сложности по теме «Строки», а также предложены их решения на языке программирования PascalABC. Материал поможет освоить процедуры и функции для работы с типом данных string, овладеть приемами работы со строками.
Скачать:
Вложение | Размер |
---|---|
Решение задач по теме «Строки» | 66.5 КБ |
Предварительный просмотр:
Федченко И.В., 2015/16
Решение задач по теме «Строки»
Умение решать задачи – такое же практическое искусство, как умение плавать или бегать. Ему можно научиться только путем подражания или упражнения.
Д. Пойа
В статье представлены задачи различных типов: подсчет частоты появления символа в строке; поиск подстроки в строке, замена найденной подстроки на другую строку; выделение слов из строки, нахождение числа слов в строке, нахождение минимальной (максимальной) длины слова в строке; сравнение и сортировка строк и др.
Все приведенные программы написаны на языке программирования PascalABC.
Задача 1.
С помощью функции копирования и операции конкатенации составить из частей слова «информатика» слово «торт».
program novslovo;
uses crt;
var s, ns: string;
begin
s:='информатика';
ns:=copy(s,8,1)+copy(s,4,2)+copy(s,8,1);
writeln(ns);
end.
Задача 2.
Подсчитать, сколько раз среди символов заданной строки встречается буква «а».
program kolbukv_a;
uses crt;
var s: string;
i, k: integer;
begin
write('Введите строку: ');
readln(s);
k:=0;
for i:=1 to length(s) do
if s[i]='а' then k:=k+1;
writeln('Буква «а» встречается ', k, ' раз(а)');
end.
Задача 3.
Найти долю пробелов в строке A.
program dolya;
uses crt;
var a: string;
i, k: integer;
d: real;
begin
write('Введите строку: ');
readln(a);
k:=0;
for i:=1 to length(a) do
if a[i]=' ' then k:=k+1;
d:=k/length(a);
writeln('Доля пробелов в строке ', d);
end.
Задача 4.
Заменить все буквы «а» на буквы «б» в заданной строке.
program zamena_ab;
uses crt;
var s: string;
i: integer;
begin
write('Введите строку: ');
readln(s);
for i:=1 to length(s) do
if s[i]='а' then s[i]:='б';
writeln(s);
end.
Задача 5.
Из заданной строки получить новую, повторив каждый символ дважды.
program udvsimv;
uses crt;
var s, ns: string;
i, j, l: integer;
begin
write('Введите строку: ');
readln(s);
l:=length(s);
j:=1;
for i:=1 to l do begin
ns[j]:=s[i];
ns[j+1]:=s[i];
j:=j+2;
end;
for i:=1 to 2*l do write(ns[i]);
end.
Задача 6.
Дано слово. Вывести слово, содержащее те же символы, но расположенные в обратном порядке.
program slovonaoborot;
uses crt;
var s: string;
i: integer;
begin
write('Введите слово: ');
readln(s);
for i:=length(s) downto 1 do write(s[i]);
end.
Задача 7.
Проверить, является ли заданное слово палиндромом.
program palindrom;
uses crt;
var s: string;
i, l, m, k: integer;
begin
write('Введите слово: ');
readln(s);
l:=length(s);
m:=l div 2;
k:=0;
for i:=1 to m do
if s[i]<>s[l+1-i] then k:=1;
if k=1 then writeln('Слово «', s, '» не палиндром')
else writeln('Слово «', s, '» палиндром');
end.
Задача 8.
Строка X состоит из нескольких предложений, каждое из которых кончается точкой, восклицательным или вопросительным знаком. Определить количество предложений в строке X.
program kolpredl;
uses crt;
var x: string;
i, k: integer;
begin
write('Введите строку: ');
readln(x);
k:=0;
for i:=1 to length(x) do
if (x[i]='.') or (x[i]='!') or (x[i]='?') then k:=k+1;
writeln('В строке ', k, ' предложений');
end.
Задача 9.
Проверить правильность расстановки скобок в формуле. Расстановку считать правильной, если число открывающих скобок равно числу закрывающих скобок.
program skobki;
uses crt;
var f: string;
i, ko, kz: integer;
begin
write('Введите формулу: ');
readln(f);
ko:=0; kz:=0;
for i:=1 to length(f) do begin
if f[i]='(' then ko:=ko+1;
if f[i]=')' then kz:=kz+1;
end;
if ko=kz then writeln('Правильная расстановка скобок')
else writeln('Неправильная расстановка скобок');
end.
Задача 10.
Проверить правильность расстановки скобок в формуле. Учитывать порядок скобок.
Способ 1
program skobki_1;
uses crt;
var f: string;
i, k: integer;
begin
write('Введите формулу: ');
readln(f);
i:=1; k:=0;
repeat
if f[i]='(' then k:=k+1;
if f[i]=')' then k:=k-1;
i:=i+1;
until (k<0) or (i>length(f));
if k=0 then writeln('Правильная расстановка скобок')
else writeln('Неправильная расстановка скобок');
end.
Способ 2
program skobki_2;
uses crt;
var f: string;
i, k, z: integer;
begin
write('Введите формулу: ');
readln(f);
k:=0; z:=0;
for i:=1 to length(f) do begin
if f[i]='(' then k:=k+1;
if f[i]=')' then k:=k-1;
if k<0 then z:=1;
end;
if (k=0) and (z=0) then
writeln('Правильная расстановка скобок')
else
writeln('Неправильная расстановка скобок');
end.
Задача 11.
В заданной строке подсчитать количество букв латинского алфавита.
program kolbukvlat;
uses crt;
var s: string;
i, k: integer;
begin
write('Введите строку символов: ');
readln(s);
k:=0;
for i:=1 to length(s) do
if (s[i]>='A') and (s[i]<='Z') or (s[i]>='a') and (s[i]<='z') then
k:=k+1;
writeln('В строке «', s, '» ', k, ' латинских букв');
end.
Задача 12.
Подсчитать количество цифр в заданной строке.
program kolcifr;
uses crt;
var s, c: string;
i, j, k: integer;
begin
write('Введите строку символов: ');
readln(s);
c:='0123456789';
k:=0;
for i:=1 to length(s) do
for j:=1 to 10 do
if s[i]=c[j] then k:=k+1;
writeln('В строке «', s, '» ', k, ' цифр');
end.
Задача 13.
Из заданной строки получить новую, удалив из нее все пробелы.
program udalprobel;
uses crt;
var s, ns: string;
i, k: integer;
begin
write('Введите строку: ');
readln(s);
k:=0;
for i:=1 to length(s) do
if s[i]<>' ' then begin
k:=k+1;
ns[k]:=s[i];
end;
for i:=1 to k do write(ns[i]);
end.
Задача 14.
Из заданной строки получить новую, удалив все буквы латинского алфавита.
program udalbukv;
uses crt;
var s, ns: string;
i, k: integer;
begin
write('Введите строку: ');
readln(s);
k:=0;
for i:=1 to length(s) do
if (s[i]<'A') or (s[i]>'Z') and (s[i]<'a') or (s[i]>'z') then begin
k:=k+1;
ns[k]:=s[i];
end;
for i:=1 to k do write(ns[i]);
end.
Задача 15.
Подсчитать, сколько раз встречается в тексте заданный фрагмент.
program kolfragm;
uses crt;
var t, f: string;
i, k: integer;
begin
write('Введите текст: ');
readln(t);
write('Введите фрагмент: ');
readln(f);
k:=0;
for i:=1 to length(t) do
if copy(t, i, length(f))=f then k:=k+1;
writeln('Фрагмент «', f, '» встречается в тексте ', k, ' раз(а)');
end.
Задача 16.
Проверить, является ли частью данного слова слово «сок». Ответ должен быть «да» или «нет».
program chastslova;
uses crt;
var s: string;
i, f: integer;
begin
write('Введите слово: ');
readln(s);
f:=0;
for i:=1 to length(s) do
if copy(s, i, 3)='сок' then f:=1;
if f=1 then writeln('да')
else writeln('нет');
end.
Задача 17.
В заданной строке всюду «1999» заменить на «2000».
program zamena_1999;
uses crt;
var a: string;
i: integer;
begin
write('Введите строку: ');
readln(a);
for i:=1 to length(a) do
if copy(a,i,4)='1999' then begin
delete(a, i, 4);
insert('2000', a, i);
end;
writeln(a);
end.
Задача 18.
Ввести с клавиатуры строку, содержащую фамилию, имя и отчество. Слова в строке разделять одним пробелом. Получить новую строку, содержащую фамилию и инициалы.
program fio;
uses crt;
var s, f, i, o: string;
p: integer;
begin
write('Введите фамилию, имя и отчество: ');
readln(s);
p:=pos(' ', s);
f:=copy(s, 1, p-1);
delete(s, 1, p);
p:=pos(' ', s);
i:=copy(s, 1, 1);
delete(s, 1, p);
o:=copy(s, 1, 1);
s:=f+' '+i+'.'+o+'.';
writeln(s);
end.
Задача 19.
Подсчитать количество слов в исходной строке. Слова считать отделенными друг от друга одним пробелом.
program kolslov;
uses crt;
var s: string;
i, k: integer;
begin
write('Введите строку: ');
readln(s);
s:=s+' ';
k:=0;
for i:=1 to length(s) do
if s[i]=' ' then k:=k+1;
writeln('Количество слов в строке ', k);
end.
Задача 20.
Подсчитать количество слов в исходной строке. Слова считать отделенными друг от друга одним или несколькими пробелами.
program kolslov;
uses crt;
var s: string;
i, k, f: integer;
begin
write('Введите строку: ');
readln(s);
s:=s+' ';
k:=0;
f:=0;
for i:=1 to length(s) do begin
if (s[i]<>' ') and (f=0) then f:=1;
if (s[i]=' ') and (f=1) then begin
f:=0;
k:=k+1;
end;
end;
writeln('Количество слов в строке ', k);
end.
Задача 21.
Проверить цепочку слов на совпадение первой буквы следующего слова с последней буквой предыдущего слова.
program igra_v_slova;
uses crt;
var s: string;
i, f: integer;
begin
write('Введите слова через пробел: ');
readln(s);
f:=0;
for i:=2 to length(s)-1 do
if s[i]=' ' then
if s[i-1]<>s[i+1] then f:=1;
if f=0 then writeln('Совпадают')
else writeln('Не совпадают');
end.
Задача 22.
Определить наименьшую длину слова в заданной строке. Слова считать отделенными друг от друга одним или несколькими пробелами.
program mindlina;
uses crt;
var s: string;
i, lw, min: integer;
begin
write('Введите строку: ');
readln(s);
s:=s+' ';
min:=length(s);
lw:=0;
for i:=1 to length(s) do begin
if s[i]<>' ' then
lw:=lw+1
else if (min>lw) and (lw>0) then begin
min:=lw;
lw:=0;
end
else
lw:=0;
end;
writeln('Наименьшая длина слова ', min);
end.
Задача 23.
Ввести с клавиатуры 10 слов и вывести их на экран в алфавитном порядке.
program sort_slov;
uses crt;
const n=10;
var s: array[1..n] of string;
pp: string;
i, j: integer;
begin
writeln('Введите слова:');
for i:=1 to n do
readln(s[i]);
for i:=1 to n-1 do
for j:=i+1 to n do
if s[i]>s[j] then begin
pp:=s[i];
s[i]:=s[j];
s[j]:=pp;
end;
writeln('Список слов по алфавиту:');
for i:=1 to n do
writeln(s[i]);
end.
По теме: методические разработки, презентации и конспекты
Проектная работа Методика подготовки учащихся к решению задач по темам «Задачи на движение» и «Задачи на смеси и сплавы», включенных в ЕГЭ по математике.
Доминирующей идеей федерального компонента государственного образовательного стандарта по математике является интенсивное развитие логического мышления, пространственного воображения, алг...
ПРОЕКТ «Методика подготовки выпускников решению задач по теме «Задачи на проценты» , включенных в ОГЭ по математике. Разработка системы индивидуальных заданий»
Авторы проекта Майоров Петр Ивановичучитель математики МБОУ «Тоншерминская СОШ» Тетюшского муниципального района РТЕфремова Наталья Валерьевна, учитель математики МБОУ «Гимназия №1» г.Лаишев...
ВОПРОСЫ и ЗАДАЧИ ДЛЯ ПОВТОРЕНИЯ И РЕШЕНИЕ ЗАДАЧ ПО ТЕМЕ «ПРОИСХОЖДЕНИЕ ЧЕЛОВЕКА»
ВОПРОСЫ и ЗАДАЧИ ДЛЯ ПОВТОРЕНИЯ И РЕШЕНИЕ ЗАДАЧ ПО ТЕМЕ «ПРОИСХОЖДЕНИЕ ЧЕЛОВЕКА»...
Проектная работа по тема «Методика подготовки учащихся решению задач по теме «Задачи на движение, включенные в ЕГЭ по математике. Разработка системы индивидуальных заданий»
Проблема Методика подготовки учащихся решению задач по теме «Задачи на движение, включенные в ЕГЭ по математике»Цели:Собрать информацию о разнообразных задачах на движение, включенные в ЕГЭ, о ме...
Методическая схема обучения учащихся решению задач по теме "Решение треугольников"
Методическая схема обучения учащихся решению задач по теме "Решение треугольников"...
Применение исследовательского метода при решении задач на примере урока 7 - го класса "Решение задач на тему "Архимедова сила"
Исследовательский метод применяю при решении задач по физике. Процесс решения физических задач предполагает выполнение обучающимися важных мыслительных операций. Исследование заключается в рассм...
Решение задач по теме «Графические способы решения квадратных уравнений»
Цель урока: закрепить графический способ решения квадратных уравнений при решении задач практического содержания, формировать умения строить математические модели, совершенствование навыков пост...