Практическая часть.
Задание 1. Наберите заданную программу, подсчитывающую количество гласных букв в произвольном предложении (на русском языке). Program Ex_1; var St: string; Ltr: char; L,k,i:integer; Begin write ('Введите предложение: '); read (St); {вводим строку-предложение} k:=0; {обнуляем счетчик гласных букв} writeln; {переходим на следующую строку} L:=length (St); {определяем длину предложения} For i:=1 to L do Begin Ltr:=St[i]; {"вырезаем" очередной символ} Case Ltr of 'а','е','и','о','у','ы','э','ю','я': k:=k+1; {если это гласная буква, то увеличиваем счетчик} end; end; If k<>0 then writeln ('В предложении ',k,' гласных букв') else writeln ('Гласных букв в предложении нет'); End. Измените программу так, чтобы из исходной строки были удалены все гласные буквы(с использованием процедуры delete).
Задание 2. Наберите заданную программу, заменяющую все цифры '5' на '1' в произвольном натуральном числе. Program Ex_2; var St: string; code, L, i, ch_i, ch_o: integer; Begin write ('Введите число: '); read (ch_i); {вводим число} Str (ch_i,St); {переводим его в строку символов} L:=length (St); {измеряем длину полученной строки} For i:=1 to L do If St[i]='5' then St[i]:='1'; {меняем 5 на 1} Val (St,ch_o,code); {исправленную строку переводим обратно в число} If (code=0) then {если ошибки не было, то выводим} {на экран результат работы} writeln ('Результат: ',ch_o) else writeln ('Ошибка в исходном числе'); End. Внесите изменения в данную программу таким образом, чтобы происходила замена всех цифр '5' на '1' и всех цифр '1' на '5'.
Задание 3. Наберите заданную программу, заменяющую все буквосочетания 'да' на 'нет'. Program Ex_3; var St, S: string; p,k,i:integer; Begin write ('Введите предложение: '); read (St); {вводим строку-предложение} writeln; {переходим на следующую строку} while pos('да', St) <> 0 do begin p:= pos('да', St); delete(St,p,2); insert(St,p, 'нет'); end; writeln (St);
End. Измените данную программу таким образом, чтобы она решала ту же задачу, но без применения процедур delete и insert.
3. Контрольные вопросы.
1. Какие процедуры используются для удаления (вставки) символов в строке? 2. Какие процедуры используются для преобразования строки в число и числа в строку? 3. В чем основное отличие работы процедуры от функции? 4. Для чего в процедуре STR (Ch[:M[:N]],St) используются данные, разделенные “:”? 5. какие данные хранятся в переменной Code после использования процедуры Val (St,Ch,Code)?
Тема: “Использование массивов при решении задач на преобразование нечисловой информации. Разделение текста на слова”.
Цель: выработать у учащихся навыки работы со строками и умения использовать массивы при работе с нечисловыми данными.
План работы. 1. Повторить алгоритм разделения произвольного текста на слова. 2. Выполнить практическую часть на компьютере, записав ответы в тетрадь. 3. Ответить на контрольные вопросы.
Ход работы.
1. Алгоритм разделения текста на слова.
Особый интерес представляют задачи, связанные с анализом и преобразованием отдельно каждого из слов, входящих в текст. В этом случае требуется разделить произвольное предложение на слова с сохранением каждого из них в отдельной ячейке памяти (переменной). Слова в предложении могут быть разделены различным числом пробелов и знаками препинания, количество слов может быть достаточно большим. Рассмотрим алгоритм разделения текста на слова для самого простого случая: Дано произвольное предложение. Слова в нем разделены пробелами (любое количество), а после последнего - точка. Получить на экране в столбик все слова, входящие в это предложение. Program Slova; var Predl: string; MSlov: array [1..130] of string; k,ns,i,PDlin,Pn: integer; Begin k:=0; write ('Введите предложение: '); read (Predl); {вводим предложение} Predl:=' '+Predl; {ставим пробел перед первым словом}
PDlin:=length (Predl); {измеряем длину предложения} For i:=1 to PDlin-1 do Begin If (Predl[i]=' ') and (Predl[i+1]<>' ') {если пришли к началу очередного слова,} then {то} ns:=i+1; {запомнили позицию его начала} If (Predl[i]<>' ') and ((Predl[i+1]=' ') or (Predl[i+1]='.')) {если слово закончилось,} then {то} Begin k:=k+1; {увеличили счетчик слов} MSlov[k]:=Copy (Predl,ns,i-ns+1); {"вырезаем" слово из предложения и заносим} {его в массив в ячейку с номером k} end; end; For i:=1 to k do writeln (MSlov[i]); {выводим слова} end.
Читайте также: Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|