Практическая работа по "Основам алгоритмизации и программирования"
Автор: anastasiyaliapko • Февраль 24, 2020 • Практическая работа • 2,248 Слов (9 Страниц) • 503 Просмотры
Индивидуальная практическая работа № 2
по дисциплине «Основы алгоритмизации и программирования»
часть 1
Вариант № 24
1). Задание
Дана строка символов S, состоящая из латинских букв. Группы символов, разделенные пробелами и не содержащие пробелов внутри себя, будем называть словами. Преобразовать исходную строку в строки S1 и S2 в соответствии с пунктами:
п.1. – Напечатать все слова, отличные от последнего слова, которые состоят из букв, не входящих ни в одно слово.
п.2. – Напечатать все слова, отличные от последнего слова, удаляя все слова, которые уже встречались раньше.
Если какая-либо из строк окажется пустой, выводить соответствующее сообщение.
2). Схема алгоритма.
На рис. 1 представлена схема алгоритма методом Насси-Шнейдермана.
3). Текст программы.
Program IPW2;
Var
words: array[1..100] of string;
S, S1, S2, last, word, symbol, lowCaseWord: String;
len, i1, i2, i3, i4, i5, i6, j, q, single, wordPos, wordLen: Integer; {Вспомогательные переменные}
Begin
Write(‘S: ‘);
Read(S); {Введенная строка S}
len:=length(S); {Длина строки S}
{Находим последнее слово в строке}
i1:=len;
While (i1 >= 1) Do {Посимвольно просматриваем строку, начиная с конца, пока не встретится пробел}
Begin
If (UpCase(S[i1]) >= ‘A’) And (UpCase(S[i1]) <= ‘Z’) Then
Begin
While (UpCase(S[i1]) >= ‘A’) And (UpCase(S[i1]) <= ‘Z’) Do {Проверяем, является ли символ символом буквы}
Begin
last:=S[i1]+last; {Добавляем символ в переменную}
i1:=i1-1;
End;
Break;
End;
i1:=i1-1;
End;
{Находим все слова, отличные от последнего, удаляя все слова, которые уже встречались раньше}
i2:=1;
q:=1;
While (i2 <= len) Do {Проверяем каждый символ, пока счетчик не покажет конец строки S}
Begin
If (UpCase(S[i2]) >= ‘A’) And (UpCase(S[i2]) <= ‘Z’) Then {Проверяем, является ли символ символом буквы}
Begin
word:=S[i2]; {Добавляем символ в переменную}
i2:=i2+1;
While (i2 <= len) And (UpCase(S[i2]) >= ‘A’) And
(UpCase(S[i2]) <= ‘Z’) Do {Проверяем каждый последующий символ, пока счетчик не покажет конец строки S или символ окажется не буквой}
Begin
word:= word+S[i2]; {Добавляем символ в переменную}
i2:=i2+1;
End;
j:=1;
While (j <= q) And (word <> words[j]) And
(word <> last) Do {Проверяем, нет ли только что сформированного слова в массиве и проверяем, не равно ли оно последнему слову строки S}
Begin
j:=j+1;
End;
If (j > q) Then
Begin
words[q]:=word; {Добавляем слово в массив}
S2:=S2+word+’ ‘; {Добавляем слово в строку S2}
q:=q+1;
End;
End
Else
Begin
i2:=i2+1;
End;
End;
{Находим все слова, отличные от последнего слова, которые состоят из букв, не входящих ни в одно слово}
For i3:=1 To q Do {Просматриваем каждое слово в массиве}
...