- •1. Структура программы.
- •2. Раздел объявлений.
- •3. Раздел исполняемых операторов.
- •4. Решение вычислительных задач.
- •5. Структура графической программы.
- •6. Графические операторы.
- •7. Решение графических задач.
- •8. Блок операторов.
- •9. Оператор ветвления.
- •10. Решение задач на ветвления.
- •11. Оператор цикла с параметром.
- •12. Решение задач на цикл с параметром.
- •13. Двойные и тройные циклы.
- •14. Решение задач на двойные циклы.
- •15. Решение задач на циклы по окружности.
- •16. Использование генератора случайных чисел.
- •17. Операции над строками.
- •18. Решение задач на обработку строк.
- •19. Функции пользователя.
- •20. Построение графиков функций.
- •21. Решение задач на построение графиков функций.
- •22. Подпрограммы.
- •23. Решение задач на подпрограммы.
- •1. Написать программу для построения изображения:
- •2. Добавьте в вашу программу следующие элементы:
- •3. Дополнительно добавьте следующие элементы.
- •24. Задача «Звездный коврик».
- •25. Понятие массива.
- •26. Объявление массивов в программе.
- •27. Заполнение одномерных массивов данными.
- •28. Решение простых задач на массивы.
- •29. Решение задач средней сложности.
- •30. Сортировка элементов массива.
- •31. Решение задач на сортировку.
- •32. Заполнение двухмерных массивов данными
- •33. Решение задач на двухмерные массивы.
18. Решение задач на обработку строк.
Задача 1. «Первая буква стала последней». Для любой строки, введенной с клавиатуры, получить новую строку, в которой первая и последняя буква поменялись местами.
Например:
Вводим: ТУПИК |
Получаем: КУПИТ |
Напишем программу:
Program Smena; Var s,sn,per,sr,pos: String; Begin Write(‘Введите строку=’); ReadLn(s); per:=Copy(s,1,1); pos:=Copy(s, Length(s), 1); sr:=Copy(s, 2, Length(s)-2); sn:=pos+sr+per; WriteLn(sn); ReadLn; End. |
|
Задача 2. «Строка в разрядку». Для любой строки, введенной с клавиатуры, получить новую строку с пробелами между всеми символами.
Например:
Вводим: МИР Вводим: КОРАН |
Получаем: М И Р Получаем: К О Р А Н |
Напишем программу:
Program Naoborot; Var s,sn,c: String; n:Integer; Begin Write(‘Введите строку=’); ReadLn(s); sn:=’’; For n:=1 To Length(s) Do Begin c:=Copy(s,n,1); sn:=sn+c+ ' '; End; WriteLn(‘sn=’,sn); ReadLn; End. |
|
Задача 3. «Строка наоборот». Для любой строки, введенной с клавиатуры, получить новую строку с обратным порядком символов.
Например:
Вводим: МИР Вводим: КОРАН |
Получаем: РИМ Получаем: НАРОК |
Напишем программу:
Program Naoborot; Var s,sn,c: String; n:Integer; Begin Write(‘Введите строку=’); ReadLn(s); sn:=’’; For n:=1 To Length(s) Do Begin c:=Copy(s,n,1); sn:=c+sn; End; WriteLn(‘sn=’,sn); ReadLn; End. |
|
Задача 4. «Перевод на тарабарский язык». Для любой строки, введенной с клавиатуры, получить новую строку, в которой перед каждой буквой вставлен слог 'ТА'.
Например:
Вводим: МИР Вводим: КОРАН |
Получаем: ТАМТАИТАР Получаем: ТАКТАОТАРТААТАН |
Задача 5. «Подсчет». Найти количество заглавных русских букв «А» в произвольной строке.
Program Count; Var s, c: String; n, k: Integer; Begin Write(‘s=’);ReadLn(s); k:=0; For n:=1 To Length(s) Do Begin c:=Copy(s,n,1); If c=’A’ Then k:=k+1; End; WriteLn(‘k=’,k); ReadLn; End. |
Вводим строку Обнуляем счетчик букв
Выделяем одну букву Если это ‘А’, то увеличиваем счетчик |
Задача 6. «Цифры». Дана произвольная строка. Получить новую строку, в которой останутся только цифры из первой строки.
Пример: ’21 ноября 2007 года’’212007’
Program Count; Var s, sn, c: String; n: Integer; Begin Write(‘s=’);ReadLn(s); sn:=’’; For n:=1 To Length(s) Do Begin c:=Copy(s,n,1); If (c>=’0’) and (c<=’9’) Then sn:=sn+c; End; WriteLn(‘sn=’,sn); ReadLn; End. |
Вводим строку Обнуляем новую строку
Выделяем символ Если это цифра, то прибавляем к новой строке |
Задача 7. «Скобки». Дана строка с арифметическим выражением. Определить правильно ли в ней стоят скобки.
Примеры: ‘(3+(3/2-1))’верно
‘(2-(3/2-1)))’не верно
‘(13+2))-(3/2’не верно
Схема решения:
- получим новую строку, в которой будут только скобки.
- из новой строки постепенно будем удалять все парные скобки ‘()’ – таких удалений может потребоваться в два раза меньше чем символов в строке.
- если после удалений строка станет пустой, то скобки стояли правильно, иначе не правильно.
Пример: ‘((7/(3+2))-1)’’((()))’’(())’’()’’’ верно
Program Skobki; Var s, sn, c: String; n,k: Integer; Begin Write(‘s=’);ReadLn(s); sn:=’’; For n:=1 To Length(s) Do Begin c:=Copy(s,n,1); If (c=’(’) Or (c=’)’) Then sn:=sn+c; End;
For k:=1 To (Lehgth(sn) div 2) Do For n:=1 To Length(sn) Do Begin c:=Copy(sn,n,2); If c=’()’ Then Delete(sn,n,2); End;
If sn=’’ Then WriteLn(‘Да’) Else WriteLn(‘Нет’); ReadLn; End. |
Вводим строку Обнуляем новую строку
Получаем символ Если это скобка, то прибавляем к новой строке
Выделяем два символа Если это (), то удаляем их
Если строка пуста, то верно
|
Задача 8. «Разные скобки». Дана строка с арифметическим выражением, в котором встречаются и круглые, и квадратные скобки. Определить, правильно ли расставлены скобки.
Примеры: ‘(3+[3/2-1])’верно
‘(2-(3/2-1)])’не верно
‘(13+[2*3)]’не верно
Задача 9. «Сумма». Дана строка из цифр со знаками + между ними. Найти сумму этих цифр.
Пример: ‘3+9+8’20
Схема решения:
- прибавим к строке слева еще один плюс
- потом в цикле будем искать плюсы и через операцию Val будем получать численное значение того, что стоит после плюса
- все эти численные значения нужно сложить.
Пример:
‘3+9+8’’+3+9+8’
Первый плюс: Val(‘3’,x,cod)x=3 и cod=0
Второй плюс: Val(‘9’,x,cod)x=9 и cod=0
Третий плюс: Val(‘8’,x,cod)x=3 и cod=0
Сумма всех иксов даст 20
Program Summa; Var s,c: String; x, sum, n, cod: Integer; Begin Write(‘s=’);ReadLn(s); s:=’+’+s; sum:=0; For n:=1 To Length(s) Do Begin c:=Copy(s,n,1); if c=’+’ Then Begin sn:=Copy(s,n+1,1); Val(sn,x,cod); sum:=sum+x; End; End; WriteLn(‘sum=’,sum); ReadLn; End. |
Вводим строку Прибавляем плюс
Выделяем символ Если это плюс, то: Получаем цифру после плюса Получаем число х Прибавляем его к сумме |
Задача 10. «Результат». Дана строка из цифр со знаками + и - между ними. Найти результат этой строки.
Пример: ‘3+9-8’4
Задача 11. «Сумма цифр». Дано целое число (a). Найти сумму всех его цифр.
Пример: 7439 23
Program Summa; Var s, c: String; a, sum, x, cod, n: Integer; Begin Write(‘a=’);ReadLn(a); Str(a,s); sum:=0; For n:=1 To Length(s) Do Begin c:=Copy(s,n,1); Val(c,x,cod); sum:=sum+x; End; WriteLn(‘sum=’,sum); ReadLn; End. |
Вводим число Преобразуем его в строку s
Выделяем символ Получаем значение символа x Прибавляем число х к сумме |
Задача 12. «Автобусный билет». Дано шестизначное целое число (номер автобусного билета типа LongInt). Найти счастливый это билет или нет.
Числа типа Integer ограничены по величине числом 32 765.
Числа типа LongInt ограничены по величине числом 2 147 483 647.
Пример: 285663 счастливый
198222 нет
Задача 13. «Максимум». Дано целое число. Найти цифру наибольшую по величине.
Пример: 76381 max=8
Задача 14. «Минимум». Дано целое число. Найти цифру наименьшую по величине.
Пример: 76381 min=3
Задача 15. «Наоборот». Дано целое число. Получить новое целое число с обратным порядком цифр.
Пример: 7812 2187