Решение типовых задач на строковые массивы

Рассмотрим простейшие типовые задачи на строковые массивы.

1)      Поиск максимального и минимального элементов массива.

Задача. Вводится с клавиатуры текст в виде массива слов. Определить слово максимальной длины.

 

Программа (QBasic).

Программа (Pascal).

INPUT "Сколько слов"; n

DIM mas(n) AS STRING

FOR i = 1 TO n

    PRINT "Введите след. слово ";

    INPUT mas(i)

NEXT i

max$ = "": nm = 0

FOR i = 1 TO n

  IF LEN(mas(i)) > nm THEN

    max$ = mas(i)

    nm = LEN(mas(i))

  END IF

NEXT

PRINT "Слово максимальной длины - "; max$, nm

Var i,n,nm:integer;

    max: string;

    mas: array[1..100] of string;

Begin

Write ('Сколько слов?');

readln( n);

FOR i := 1 TO n Do Begin

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

    Readln (mas[i]);

End;

max:= ''; nm := 0;

FOR i := 1 TO n do

  IF Length(mas[i]) > nm THEN Begin

    max := mas[i];

    nm := Length(mas[i]);

  END;

Writeln ('Слово максимальной длины - ', max)

END.

 

2)        Определение некоторых слов в тексте по условиям.

Задача. Вводится с клавиатуры массив слов. Определить, сколько слов начинается на определенную букву.

 

Программа (QBasic).

Программа (Pascal).

INPUT "Сколько слов"; n

DIM mas(n) AS STRING

FOR i = 1 TO n

    PRINT "Введите след. слово ";

    INPUT mas(i)

NEXT i

    INPUT "Буква "; b$

k = 0

FOR i = 1 TO n

  IF LEFT$(mas(i), 1) = b$ THEN k = k + 1

NEXT

PRINT "Слов на букву "; b$; k

Var i,n,k:integer;

    b: string;

    mas:array[1..100] of string;

Begin

Write('Сколько слов'); Readln(n);

FOR i := 1 TO n do begin

    Write ('Введите след. слово '); Readln (mas[i])

end;

    Write ('Введите букву '); Readln (b);

k := 0;

FOR i := 1 TO n do

  IF mas[i][1] = b THEN k := k + 1;

Writeln ('Слов на букву ', b,' - ', k);

End.

 

Задача. Вводится с клавиатуры массив слов. Определить, есть ли слова-палиндромы в данном наборе слов, и, если есть, то вывести эти слова.

 

Программа (QBasic).

Программа (Pascal).

INPUT "Сколько слов"; n

DIM mas(n) AS STRING

FOR i = 1 TO n

   PRINT "Введите след. слово ";

   INPUT mas(i)

NEXT i

 

k = 0

FOR i = 1 TO n

  sl$ = ""

  FOR j = 1 TO LEN(mas(i))

    b$ = MID$(mas(i), j, 1)

    sl$ = b$ + sl$

  NEXT j

  IF sl$ = mas(i) THEN k = k + 1: PRINT mas(i)

NEXT

 

PRINT "Слов-палиндромов "; k

Var

 s:array[1..100] of String;

  s1,s2:String[1];

  n,i,j,m,kp:Integer;

  pr:boolean;

Begin

 Write('Enter number: '); ReadLn(n);

  For i:=1 To n Do begin

  Write('Word - '); Readln(s[i]);

  end;

  For i:=1 To n Do

  Begin

    pr:=false;

    m:=length(s[i]) div 2;

    For j:=1 to m do begin

      s1:=s[i][j];

      s2:=s[i][Length(s[i])+1-j];

      If s1<>s2 Then begin pr:=true;Break; End;

    End;

    If not(pr) then begin inc(kp); Writeln(s[i]); End;

  end;

  Writeln(kp,' words-palindromov');

END.

 

В начало