Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР6.1 (Строки).doc
Скачиваний:
5
Добавлен:
04.12.2018
Размер:
217.09 Кб
Скачать

3.2 Обработка списка строк.

Задан список из 6 слов. Определить, сколько слов списка начинается на букву «А».

Одно из возможных решений данной задачи имеет следующий вид:

PROGRAM Spisok;

Var s: string[20];

i, k: integer;

begin

k:=0;

for i:=1 to 6 do

begin

writeln('Введите слово');

readln(s);

if s[1]='А' then k:=k+1 {Сравнение первой буквы слова с буквой А}

end;

writeln(‘k=’,k)

end.

3.3 Нахождение наиболее короткого слова списка.

Задан список из 8 слов. Найти самое короткое слово в списке. Если таких слов несколько, то распечатать их в один столбец.

Решение поставленной задачи сводится к нескольким этапам: ввести список слов в виде массива строковых переменных; подсчитать длину каждой строки; определить наименьшую из длин; распечатать те строки массива, длина которых совпадает с наименьшей.

Пример возможного решения поставленной задачи:

PROGRAM Str_min;

type M_st=array[1..8] of string[20];

M_int=array[1..8] of integer;

var s: M_st;

n: M_int;

i, min: integer;

begin

for i:=1 to 8 do

begin

writeln('Введите слово');

readln(s[i]);

n[i]:=length(s[i]) {Вычисление количества букв в i-ом слове }

end;

min:=n[1];

for i:=2 to 8 do

if min>n[i] then min:=n[i]; {Нахождение наименьшего из количеств букв}

writeln(‘Наиболее короткое слово’);

for i:=1 to 8 do

if n[i]=min then writeln(s[i]) {Печать слов, состоящих из наименьшего количества букв}

end.

В данной программе для обозначения слов используется массив строковых переменных s, для обозначений соответствующих им длин слов – целочисленный массив n. Наименьший элемент массива n хранится в виде переменной min.

3.4 Разработать программу, удаляющую из вводимой с клавиатуры строки пробелы между словами и записывающую в массив N длину (число символов) каждого слова. Длина текста – не более 80 символов. Число слов – не более 10. Наличие более одного символа ‘пробел’ подряд свидетельствует о конце строки.

Используемые в программе идентификаторы приведены в таблице 3.1.

Табл. 3.1

Обозначения

Тип данных

Примечание

A

STRING

Исходный текст, символьные данные

K

INTEGER

Количество символов в слове

L

INTEGER

Порядковый номер слова

I

INTEGER

Параметр цикла

A[I]

Текущий символ исходного текста

N

ARRAY [1…10] OF INTEGER

Массив, содержащий значения длины каждого слова исходного текста

N[L]

Значение длины слова номер L

J

INTEGER

Параметр цикла, используемого для перемещения всех следующих символов исходного текста на одну позицию влево после того, как обработано очередное слова.

PR

INTEGER

Переменная для управления повторной работой программы

OTVET

BYTE

Переменная для управления началом обработки введенной строки

Текст программы

Program Prim1;

Uses Crt;

Label 4;

VAR

N: ARRAY [1..10] OF INTEGER;

I, J, K, L: INTEGER;

A: STRING [80];

PR, OTVET:BYTE;

BEGIN

CLRSCR;

REPEAT

REPEAT

WRITELN (' Введите через пробел');

READLN (A);

WRITELN('Исходная строка');

WRITELN(A);

WRITELN ('Работаем дальше? 1 -да,0 -нет');

READLN (OTVET);

UNTIL OTVET=1;

K:=0;

L:=0;

PR:=0;

FOR I:=1 TO length(a) DO

IF (A[I]= ' ') THEN

BEGIN

L:=L+1;

N[L]:=K;

IF (A[I+1]=' ')THEN GOTO 4;

FOR J:=i TO length(a) DO

A[J]:= A[J+1];

K:=1

END

ELSE

begin

K:=K+1;

N[L+1]:= K-l;

end;

4:WRITELN ('Результирующая строка');

WRITELN (A);

WRITELN ('№ слова число букв');

FOR I:=1 TO L+1 DO

WRITELN (' N[',I,'] =',N[I]:6);

WRITELN('Обработать еще одну строку? 1 –да 0 -нет');

READLN(PR);

UNTIL PR=0

END.