Пример выполнения задания

Составить процедуру сортировки по убыванию значений элементов одномерного массива. Используя ее отсортировать элементы в каждом столбце прямоугольной матрицы.

Пусть задана матрица А, содержащая n строк и m столбцов, описана процедура Sort сортировки одномерного массива C, например методом максимального элемента (выбора). Чтобы организовать сортировку столбцов матрицы, после ввода элементов матрицы необходимо предусмотреть цикл по номерам столбцов матрицы. Поскольку процедура сортировки обеспечивает преобразование только одномерного массива, необходимо на каждом шаге внешнего цикла с помощью дополнительного цикла по номерам строк матрицы преобразовать очередной ее столбец в одномерный массив С и обратиться к процедуре Sort. Полученный отсортированный массив записывается на место исходного столбца матрицы. В конце программы осуществляется вывод преобразованной матрицы А.

На рис. 4.1 приведены алгоритмы ввода и вывода столбцов прямоугольной матрицы. Алгоритм сортировки прямоугольной матрицы А представлен на рис. 4. 2, где ввод и вывод матрицы А, также оформлен в виде соответствующих процедур.

 


Процедура ввода матрицы

i= 1, n
j =1, m  
InArr (n, m)
Ввод aij
InArr (A)

Процедура вывода матрицы

i= 1, n
j =1, m  
OutArr (A,n, m)
Вывод aij
OutArr


 

Рис. 4.1. Схема алгоритма ввода и вывода столбцов прямоугольной матрицы.

 

 


Начало
Ввод исходных данных
i= 1, n-1
Преобразование столбца в массив С
Sort (C, n)
Запись массива в столбец
Вывод матрицы
Конец

 


Процедура сортировки элементов одномерного массива

Sort (C, n)
Ввод исходных данных
i= 1, n-1
max=ci k=i
j = i+1, n  
cj>max
max=cj k=j
да
нет
ck=ci ci=max
Sort (C, n)


Рис. 4.2. Схема алгоритма сортировки столбцов прямоугольной матрицы.

 


{Цель: сортировка столбцов прямоугольной матрицы                      }

{Параметры и переменные: а-двумерный массив, с-одномерный массив }

{n –число строк, m-число столбцов, Nmax,Mmax-максимально                      }

{допустимое число строк и столбцов,                                                       }

{ Vector – тип одномерного массива,                                              }

{ Matrix-тип двумерного массива                                                    }

program SortingColumn;

Const

Nmax=20;

Mmax=20;

Type

 Vector=array[1..Nmax] of real;

 Matrix=array[1..Nmax,1..Mmax] of real;

Var

a:Matrix;

c:Vector;

i,j,m,n:integer;

{процедура ввода двумерного массива               }

{Параметры;a-двумерный массив;n-число строк; }

{m-число столбцов;i,j-параметры циклов                     }

{Name-имя массива                                               }

Procedure InArr(n,m:integer; Var a:Matrix; Name:Char);

var

 i,j:integer;

Begin{InArr}

 Writeln('введите',n*m,'элементов матрицы',Name);

 for i:=1 to n do

  for j:=1 to m do

 begin

 Write(Name,'[',i,',',j,']=');

 read(a[i,j])

end

  end;{InArr}

{процедура вывода двумерного массива                      }

{Параметры;a-двумерный массив;n-число строк; }

{m-число столбцов;i,j-параметры циклов                     }

 Procedure OutArr(var a:Matrix;n,m:integer);

 var

 i,j:integer;

 begin{OutArr}

 for i:=1 to n do

  begin

 for j:=1 to m do

 write(a[i,j]:6:2);

  Writeln

  end

 End;{OutArr}

 {процедура сортировки одномерного массива}

{Параметры: с-одномерный массив;n-размер массива;}

{k-номер максимального элемента; i,j-параметры циклов}

{Max- максимальный элемент}

 procedure Sort(var c:Vector;n:integer);

 Var

 i,j,k:integer;

 Max:real;

 Begin{Sort}

  For i:=1 to n-1 do

 begin max:=c[i];

for j:=i+1 to n do

if c[j]>Max  then

begin

 Max:=c[j];

 k:=j

 end;

c[k]:=c[i];

 c[i]:=max

 end

 end;{Sort}

 Begin {SortingColumn}

  Writeln('введите число строк и столбцов матрицы A');

  read(n,m);

  InArr(n,m,a,'a');{ввод матрицы A}

  Writeln('исходная матрица');

  OutArr(a,n,m);{вывод результата}

  for j:=1 to m do

 begin

{Преобразование столбца в одномерный массив}

for i:=1 to n do

 c[i]:=a[i,j];

 Sort(c,n);{Сортировка столбца}

{Запись массива в столбец матрицы }

 for i:=1 to n do

 a[i,j]:=c[i]

end;

  Writeln('преобразованная матрица');

  Outarr(a,n,m);{вывод результата}

 End.{SortingColumn}









СТРОКИ

Подготовка к работе

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

Контрольные вопросы

1. Что такое строка?

2. Каким идентификатором определяются данные строкового типа?

3.  Какова максимально возможная длина строки? Как определить текущую длину строки?

4. Какие выражения называются строковыми?

5. Каким образом производится сравнение строк?

6. Какие операции допустимы над строковыми выражениями?

7. Как можно обратиться к отдельным символам строки?

8. Назначение специальных процедур и функций обработки данных строкового типа.

Задание для индивидуальной работы

Во всех вариантах заданий исходные данные вводятся в виде текста с клавиатуры. При этом текст может содержать несколько строк. Результаты работы программы должны выводиться вместе с исходными данными.

Вариант 1.

В заданной последовательности цифр найти самую длинную последовательность, которая является арифметической профессией.

Вариант 2.

В заданном тексте найти максимальную по длине последовательность цифр.

Вариант 3.

В заданном тексте определить, сколько раз встречается каждое различное двухбуквенное сочетание.

Вариант 4.

Расположить все слова заданного текста на русском языке по алфавиту.

Вариант 5.

В заданной последовательности латинских буке определить для каждой буквы число раз ее использования и удалить из текста слова, начинающиеся с наиболее часто встречающейся буквы.

Вариант 6.

Отредактировать заданный текст, удалив из него слова, которые уже встречались в предложении ранее.

Вариант 7.

Расположить все слова заданного текста в порядке убывания их длины.

Вариант 8.

Составить программу поиска заданного слова в тексте и вывести число вхождений этого слова в текст.

Вариант 9.

Заданы два текста. Вывести совпадающие в этих текстах слова.

Вариант 10.

В заданном тексте найти все пары слов, из которых одно является обращением другого.

Вариант 11.

Для каждого из слов заданного текста указать, сколько раз оно встречается в тексте.

Вариант 12.

Из заданного текста вывести только те слова, которые встречаются в тексте один раз.

Вариант 13.

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

Вариант 14.

Отредактировать заданный текст, удалив из него слова, которые встречаются заданное число раз.

Вариант 15.

Заменить окончание «ый» каждого слова в заданном тексте на «ого». Вывести измененный текст и количество проведенных замен.

Вариант 16.

В заданной последовательности символов заменить каждую последовательность из одинаковых символов длиной более трех на (k)s, где k - число повторений; s - повторяющийся символ.

Вариант 17.

Отредактировать заданную последовательность целых чисел, удалив из нее числа, лежащие в заданном диапазоне.

Вариант 18.

Вывести все слова заданного текста, состоящие из тех же букв, из которых состоит и первое слово.

Вариант 19.

Заданы два текста. Вывести 10 самых длинных слов из двух текстов.

Вариант 20.

Выполнить слияние двух текстов, расположив слова этих текстов через два пробела.

Вариант 21.

Отредактировать заданный текст, удалив из него все символы, не являющиеся идентификаторами, и расположив слова по два в строке.

Вариант 22.

Отредактировать заданный текст следующим образом: первое слово должно быть последним, второе – предпоследним и т. д.

Вариант 23.

Из заданного текста на русском языке вывести слова с максимальным количеством гласных букв.

Вариант 24.

Расположить все слова данного текста в порядке, обратном их первоначальному следованию в тексте. Вывести 10 наиболее длинных слов.

Вариант 25.

Вывести данные о том, сколько раз каждая буква русского алфавита встречается в данном тексте.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: