- •Работа с массивами чисел
- •6.1. Структурированные типы данных Turbo Pascal 7.0
- •6.2. Массивы
- •Каждый элемент массива имеет свой индекс.
- •6.3. Фрагменты программ обработки массивов
- •6.3.1 Заполнение массивов
- •6.3.2 Вывод элементов массива на экран
- •6.3.3. Подсчет отрицательных и положительных элементов, их сумм и средних значений
- •6.3.4. Нахождение минимального и максимального элементов двумерного массива
- •6.3.5. Сортировка массива
- •7. Лабораторные задания и методические указания по их выполнению
- •9. Контрольные вопросы
- •6.1. Символьный (char) и строковый (string) тип данных
- •6.2.1. Основные задачи обработки текста
- •6.2.3. Выделение слов из текста (слова разделены несколькими пробелами)
- •6.2.4. Выделение символов в строке и расположение их по алфавиту
- •6.2.5. Выделение символов в строке и подсчет их вхождения
- •6.2.6. Выделение символов в строке и подсчет слов в строке
- •6.2.7. Выделение слов и упорядочение их по длине
- •6.2.8. Расположение слов по алфавиту
- •6.3. Файлы
- •Текстовые файлы определяются в разделе Var следующим образом:
- •7. Лабораторные задания и методические указания по их выполнению
- •9. Контрольные вопросы
6.2.5. Выделение символов в строке и подсчет их вхождения
Ввести предложение. Подсчитать количество гласных в нем. В более общей постановке задачи – символов из некоторого эталонного набора (согласные, звонкие согласные, цифры и т.д.).
Текст программы, реализующей эту задачу, приведен ниже.
Program Count_Gl;
Var
Predl,Gl:String; { Предложение и эталонная строка }
n,m,i,j,kol:Integer; { Вспомогательные переменные }
Begin
Gl:=’аеёиоуыэюяАЕЁИОУЫЭЮЯ’; {Строка эталонов}
m:=Length(Gl);
WriteLn('Введите предложение');
ReadLn(Predl);
n := Length(Predl);
kol := 0;
For i:=1 to n do
For j:=1 to m do
If Predl[i] = Gl[j] then
kol:=kol + 1;
Writeln('Количество гласных в предложении = ',kol);
Readln;
End.
6.2.6. Выделение символов в строке и подсчет слов в строке
Ввести предложение длиной не более 80 символов и подсчитать количество слов в нем и количество букв "а". Будем считать, что одно слово от другого отделяется одним пробелом.
Текст программы, реализующей эту задачу, приведен ниже.
Program Predl;
Var
Pr : String;
i, n, Ks, Ka : Integer;
Begin
Ks := 0;
Ka := 0;
Writeln('Введите предложение');
Readln(Pr);
n := Length(Pr); {Длина предложения}
For i := 1 to n do
If Pr[i] = ' ' Then
Ks:= Ks + 1
Else
If Pr[i] = 'a' Then
Ka := Ka + 1;
If Pr[n]<> ' ' Then
Ks:=Ks+1; {если в конце предложения нет пробела}
Writeln('Количество слов в предложении равно ',Ks,
'количество букв а - ',Ka);
End.
6.2.7. Выделение слов и упорядочение их по длине
Ввести предложение. Упорядочить его слова по возрастанию длины и вывести их в столбик.
Текст программы, реализующей эту задачу, приведен ниже.
Program Sl;
Const m = 50;
Var Predl, Rsl : string;
Slovo : array [1..m] of string;
n,k,i,j,kol : integer;
BEGIN
WriteLn('Введите предложение');
ReadLn(Predl);
n := Length(Predl);
k := 1;
Slovo[k] := '';
i := 1;
While i<=n do
If predl[i] <> ' ' then {символ – не пробел}
begin
Slovo[k] := slovo[k] + predl[i];
i := i + 1;
end
Еlse {символ – пробел}
begin
k := k + 1;
slovo[k] := '';
While (predl[i]=' ') and (i <= n) do
i := i + 1;
end;
WriteLn('Слова из предложения');
For i := 1 to k do
WriteLn(slovo[i]);
For j := 1 to k-1 do
For i := 1 to k-j do
If Length(slovo[i])> Length(slovo[i+1]) then
Begin
RSl:= slovo[i];
slovo[i]:= slovo[i+1];
slovo[i+1]:=Rsl;
End;
WriteLn('Упорядоченные слова из предложения');
For i := 1 to k do
WriteLn(slovo[i]);
End.
6.2.8. Расположение слов по алфавиту
Ввести предложение. Упорядочить его слова по алфавиту и вывести их в столбик.
Текст программы, реализующей эту задачу, приведен ниже.
Program Sl;
Const m = 50;
Var Predl, Rsl : string;
Slovo : array [1..m] of string;
n,k,i,j,kol : integer;
BEGIN
WriteLn('Введите предложение');
ReadLn(Predl);
n := Length(Predl);
k := 1;
Slovo[k] := '';
i := 1;
While i<=n do
If predl[i] <> ' ' then {символ – не пробел}
begin
Slovo[k] := slovo[k] + predl[i];
i := i + 1;
end
Еlse {символ – пробел}
begin
k := k + 1;
slovo[k] := '';
While (predl[i]=' ') and (i <= n) do
i := i + 1;
end;
For j := 1 to k-1 do
For i := 1 to k-j do
If slovo[i]> slovo[i+1] then
Begin
RSl:= slovo[i];
slovo[i]:= slovo[i+1];
slovo[i+1]:=Rsl;
End;
WriteLn('Упорядоченные слова из предложения');
For i := 1 to k do
WriteLn(slovo[i]);
End.