Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по Паскалю.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
2.06 Mб
Скачать

Пример 9. Определить, имеются ли в массиве а[5,4] столбцы, состоящие из одних и тех же элементов, если такие есть, выдавать номера одинаковых столбцов, если нет – выдать сообщение.

Пояснение. Сортируем элементы столбцов. Сравнивая элементы в столбцах, в случае если количество одинаковых элементов совпадает с количеством элементов в столбце выдаем номера этих столбцов на печать и изменяем флажок S. Если флажок свое значение не поменял значит, столбцов с одинаковыми элементами нет о чем выдается сообщение.

Программа.

program Zadacha;

var

A : array[1..5,1..4] of integer;

I, J, I1, N, S, T, : integer;

begin

{Ввод массива A}

for I:=1 to 5 do

begin

for J:=1 to 4 do read(A[I,J]);

end;

{ сортировка элементов столбца массива A}

for J:=1 to 4 do

begin

for I:=1 to 4 do

begin

for I1:=I+1 to 5 do

if A[I1,J]I<A[I,J] then

begin

T:=A[I,J];

A[I,J]:=A[I1,J];

A[I1,J]:=T;

end;

end;

end;

{Проверяем имеются ли столбцы с одинаковыми элементами }

S:=0;

for J:=1 to 3 do

begin

for J1:=J+1 to 4 do

begin

N:=0;

for I:=1 to 5 do if A[I,J]=A[I,J1] then N:=N+1;

if N=5 then

begin

S:=1;

writeln (‘одинаковые столбцы’, J:3,J1:3);

end;

end;

end;

if S=0 then writeln(‘одинаковых столбцов нет’);

end.

ПРИМЕР. 10. Дан целочисленный массив A размером NxN. Составить программу, которая меняет местами элементы, расположенные ниже главной диагонали с элементами, расположенными выше главной диагонали в зеркальном отображении относительно главной диагонали.

Пояснение. Определяем участок сектора, расположенный ниже главной диагонали и меняем элементы местами.

Программа 7.34.

program Zadacha;

var

A : array[1..100,1..100] of integer;

I, M, N, J, T : integer;

begin

read(M,N); { Ввод размерности массива A}

{Ввод массива A}

for I:=1 to M do

begin

for J:=1 to N do read(A[I,J]);

end;

{ перестановка элементов массива A}

for I:=2 to N do

begin

for J:=1 to I-1 do

begin

T:=A[I,J];

A[I,J]:=A[J,I];

A[J,I]:=T;

end;

end;

{ Печать преобразованного массива}

for I:=1 to M do

begin

for J:=1 to N do write(A[I,J],’ ’);

writeln;

end;

end.

ПРИМЕР. 11. Дан целочисленный массив A размером NxN. Составить программу, которая меняет местами элементы, расположенные ниже побочной диагонали с элементами, расположенными выше побочной диагонали в зеркальном отображении относительно побочной диагонали.

Пояснение. Определяем сектор элементов, расположенных выше побочной диагонали и, используя закономерности изменений номера столбца и номера строки, меняем элементы местами.

Программа.

program Zadacha;

var

A : array[1..100,1..100] of integer;

I, M, N, J, T : integer;

begin

read(M,N); { Ввод размерности массива A}

{Ввод массива A}

for I:=1 to M do

begin

For J:=1 To N Do read(A[I,J]);

end;

{ перестановка элементов массива A}

for I:=1 to N-1 do

begin

for J:=1 to N-I do

begin

T:=A[I,J];

A[I,J]:=A[N-J+1,N-I+1];

A[N-J+1,N-I+1]:=T;

end;

end;

{ Печать преобразованного массива}

for I:=1 To M Do

begin

for J:=1 to N do write(A[I,J],’ ’);

writeln;

end;

end.

ПРИМЕР. 12. В тексте заменить все буквы “A” на буквы “B”.

Программа

program Zadacha;

var

ST : string;

I : integer;

begin

write (‘Введите текст’);

readln (ST);

{ Замена букв ‘A’ на буквы ‘B’}

for I:=1 to length(ST) do If ST[I] = ‘A’ then ST[I] := ‘B’;

writeln (‘Вывод полученного текста:’); Write(ST);

end.

ПРИМЕР. 13. Если в заданном тексте между словами встречается более одного пробела, убрать лишние.

Пояснение. Определяем номер позиции, с которой в тексте стоит два пробела. Удаляем один из них и повторяем действие, пока между словами не останется по одному пробелу.

Программа.

program Zadacha;

var

ST : String;

N : byte;

begin

write (‘Введите текст’); readln (ST);

{ Удаление лишних пробелов}

N:=Pos(‘ ‘,ST);

while N <> 0 Do

begin

delete(ST, N, 1);

N:=pos(‘ ‘,ST);

end;

writeln (‘Вывод полученного текста:’); Write(ST);

end.

ПРИМЕР. 14. Найти N первых простых чисел (решение может быть дано с использованием объектно-ориентированного программирования).

Пояснение. Практически любую задачу, которую возможно реализовать стандартными методами, можно решить, используя принципы объектно-ориентированного программирования, хотя его преимущество в полной мере можно оценить только при разработке программных систем большого объема.

При решении задач с помощью концепции объектно-ориентированного программирования необходимо провести исследование предметной области, в данном случае это будет область целых чисел. Так как мы будем исследовать числа, то в роли основного объекта будет выступать объект «число», в котором определим методы внесения значений в поле объекта и метод, определяющий является ли число простым. То есть вначале программист описывает все свойства и задает все методы объекта, а только затем приступает к разработке основного текста программы, манипулируя уже созданными компонентами. Это одно из основных отличий принципов разработки программ в структурном и объектно-ориентированном программировании.

Программа

type number = object

X: word;

procedure Get(cur_x: word);

function Simple: boolean;

end;

procedure Number.Get;

begin

X := cur_x;

end;

function Number.Simple: boolean;

war i, kol: word;

begin

Kol:=0;

for i:=2 to (X div 2) do if (X mod i=0) then inc(kol);

if kol=0 then simple := true else simple := false;

end;

var num: number;

Count, n: byte;

Cur_n:word;

begin

write(‘ Введите количество ’);

readLn(n);

Count:=0;

Cur_n:=2;

while Count<=n do begin

Num.Get(Cur_x);

If Num.Simple then begin Inc(Count);write(Num.X:4);

End;

end;

end.

При решении задач, использующих принципы ООП, текст основной программы обычно получается не очень большим, так как все основные алгоритмы принято включать в методы заданных объектов, которые могут объединяться в более общие. Тем самым создается развернутая иерархическая структура, которая является более легкой для отладки программы и понимания принципов ее работы. При решении нашей задачи мы все же не полностью придерживались концепции ООП, так как она предполагает использование переменных только объектного типа данных. Если в нашем случае мы будем придерживаться строгой концепции, то текст программы значительно возрастет, поэтому при решении задач, в частности, на языке программирования Паскаль очень часто приходится сочетать объектные и стандартные типы данных.

ПРИЛОЖЕНИЕ 2