Алгоритмы удаления, вставки и перестановки элементов
Задача 1. Дан двумерный массив размерностью 8х7, заполненный случайным образом. · Поменять местами средние строки с первой и последней. · Вставить между средними строками первую строку. · Удалить все столбцы, в которых первый элемент больше последнего. · Заменить все элементы первых трех столбцов на их квадраты. USES Crt; VAR A:ARRAY[0..8,0..7] OF INTEGER; A1:ARRAY[0..9,0..7] OF INTEGER; A2:ARRAY[0..8,0..7] OF INTEGER; I,J,K:BYTE; PP:INTEGER; BEGIN ClrScr; Randomize; { Заполнение двумерного массива случайным образом и вывод в виде прямоугольной матрицы } WriteLn(' Значения элементов двумерного массива'); FOR I:=1 TO 8 DO Begin FOR J:=1 TO 7 DO Begin A[I,J]:=Random(15); Write(A[I,J]:3); End; WriteLn; End; WriteLn; { 1. Поменять местами строки } WriteLn(' Средние строки поменялись местами с первой и последней'); FOR J:=1 TO 7 DO Begin PP:=A[1,J]; A[1,J]:=A[4,J]; A[4,J]:=PP; PP:=A[5,J]; A[5,J]:=A[8,J]; A[8,J]:=PP; End; { Вывод измененного массива } FOR I:=1 TO 8 DO Begin FOR J:=1 TO 7 DO Write(A[I,J]:3); WriteLn; End; ReadLn; { 2. Вставка } WriteLn(' Первая строка вставлена между средними строками'); K:=0; FOR I:=1 TO 8 DO Begin Inc(K); FOR J:=1 TO 7 DO Begin A1[K,J]:=A[I,J]; Write(A1[K,J]:3); End; WriteLn; IF I=4 THEN Begin Inc(K); FOR J:=1 TO 7 DO Begin A1[K,J]:=A[1,J]; Write(A1[K,J]:3); End; WriteLn; End; End; Writeln; ReadLn; { 3. Удаление} WriteLn(' Столбцы, в которых первый элемент > последнего, удалены'); K:=0; FOR J:=1 TO 7 DO IF A[1,J]<=A[8,J] THEN Begin Inc(K); FOR I:=1 TO 8 DO A2[I,K]:=A[I,J]; End; { Вывод измененного массива } FOR I:=1 TO 8 DO Begin FOR J:=1 TO K DO Write(A2[I,J]:3); WriteLn; End; ReadLn; { 4. Замена } WriteLn(' Элементы первых трех столбцов заменены на их квадраты'); FOR I:=1 TO 8 DO Begin FOR J:=1 TO 7 DO Begin IF J<=3 THEN A[I,J]:=Sqr(A[I,J]); Write(A[I,J]:4); End; WriteLn; End; End. ..................................................................................................................................... Практические задания ..................................................................................................................................... Дан двумерный массив размером 5х6, заполненный случайным образом. · Поменять местами средние строки. · Вставить после столбцов, содержащих максимальный элемент массива, столбец из нулей. · Удалить все столбцы, в которых первый элемент больше заданного числа А. · Заменить максимальный элемент каждой строки на противоположный. Обработка строк Подсчет и вывод символов Задача 1. Подсчитать сколько букв «о» в тексте USES Crt; VAR A: STRING [255]; KB N, I: BYTE; BEGIN ClrScr; Write('Введите тест '); ReadLn(A); N:=Length(A); KB:=0; FOR I:=1 TO N DO IF (A[I]=’o’) OR (A[I]=’O’) THEN KB:=KB+1; WritLn(‘ Количество букв «о» =’,KB); END. Задача 2. Определить среднюю длину слова в тексте. USES Crt; VAR A: STRING [240]; KS, KB, N, I: INTEGER; BEGIN ClrScr; Write('Введите тест '); ReadLn(A); N:=Length(A); KS:=0; KB:=0; FOR I:=1 TO N DO IF (A[I]=' ') OR (A[I]=',') OR (A[I]='.') THEN KS:=KS+1 ELSE KB:=KB+1; IF (A[N]<>' ') AND (A[N]<>'.') AND (A[N]<>',') THEN KS:=KS+1; WriteLn('Средняя длина слова = ',KB/KS:3:0); END. Задача 3. Подсчитать, сколько слов в тексте начинается на букву «а» (слова разделены пробелом). USES Crt; VAR A: STRING [240]; KS, N, I: INTEGER; BEGIN ClrScr; Write('Введите тест '); ReadLn(A); N:=Length(A); IF A[1]=’А’ THEN KS:=1 ELSE KS:=0; FOR I:=2 THEN N IF (COPY(A,I,2) =’ а’) OR (COPY(A,I,2)=’ А’ THEN KS:=KS+1; WriteLn(‘Количество слов, начинающихся на букву «а» =’,KS); END. ..................................................................................................................................... Практические задания ..................................................................................................................................... 1. Подсчитать, сколько слов в тексте оканчивается на букву “а”. 2. Подсчитать, сколько букв “т” в последнем предложении. 3. Подсчитать, сколько раз встречается в тексте слово “кот”. Удаление символов Задача 1. Удалить лишние пробелы между словами, оставив по одному. USES Crt; VAR S:STRING[255]; I,K: INTEGER; BEGIN ClrScr; Write('Введите текст '); ReadLn(S); I:=1; While(I<=Length(s)) DO Begin IF Copy(S,I,2)=' ' THEN Begin Delete (S,I,1); I:=I-1; End; I:=I+1; End; Write(S); END. Задача 2. В тексте удалить все слова, заканчивающиеся на букву "e". USES Crt; VAR S: STRING [250]; PS,N,I: INTEGER; BEGIN ClrScr; Write('Введите текст '); ReadLn(S); S:= ' '+S+' '; FOR I:=1 TO Length(S) DO Begin IF S[I]=' ' THEN Begin PS:=I-1; IF S[PS]='E' THEN WHILE(S[PS]<>' ') DO Begin Delete(S,PS,1); PS:=PS-1; End; End; End; WriteLn(‘ Измененный текст:’); Write(S); END. Задача 3. Из текста удалить каждое второе слово. Слова разделены пробелом. USES Crt; Type MAS= STRING [20]; VAR A: MAS; I,K: INTEGER; BEGIN ClrScr; Write('Введите текст '); ReadLn(A); i:=1; While (I<=Length(A)) DO Begin IF A[I]=' ' THEN Begin K:=I+1; While (A[K]<>' ') DO Delete(A,K,1); I:=I+1; End; I:=I+1; End; WriteLn(‘Измененный текст:’); Write(A); END. ..................................................................................................................................... Практические задания ..................................................................................................................................... 1. В третьем предложении текста удалить все слова «мир» 2. Из строки символов удалить все гласные буквы 3. Из строки символов удалить заданное слово 4. Удалить все символы «!», следующие за вторым предложением
|