Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Практическая часть.




Задание 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...