Хелпикс

Главная

Контакты

Случайная статья





ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ ОБРАБОТКИ СТРОКОВЫХ ДАННЫХ



3. ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ ОБРАБОТКИ СТРОКОВЫХ ДАННЫХ

3.1 Перестановка символов.

Поменять местами первый и второй символ в заданном слове произвольной длины.

Возможное решение:

PROGRAM Str;

var t: string; c: char;

begin

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

readln(t);                       {ввод слова} 

c:=t[1];                          {перестановка первого и второго символа}

t[1]:=t[2];

t[2]:=c;

writeln('Ответ: ',t) {печать строки, полученной в результате перестановки }

end.

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.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.