Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура ЭВМ.docx
Скачиваний:
0
Добавлен:
23.09.2019
Размер:
376.65 Кб
Скачать

12. Алгоритм,который определяет является ли строка палиндромом

В целочисленной матрице С[1..n,1..n] определите номер строк которые образуют палиндромы ( симметричные последовательности, например, 1 2 3 3 3 1 или 7 8 9 8 7)

Решение

const n=3;

var c: array[1..n,1..n] of integer;

p,i,j:integer;

s:string;

begin

for i:=1 to n do

for j:=1 to n do

c[i,j]:=StrToInt(InputBox('Ввод','c['+IntToStr(i)+', '+IntToStr(j)+']',''));

s:='';

for i:=1 to n do

begin

p:=1;

for j:=1 to n do

if c[i,j]<>c[i,n-j+1] then p:=0;

if p=1 then s:=s+IntToStr(i)+' ';

end;

showmessage(s);

end;

end

14. Алгоритм который определяет, является ли число простым

Дан целочисленный вектор. Выясните, есть ли в нем простые числа.

const n=5;

var

a:array [1..n] of integer;

i,k,j:integer;

f,f1:boolean ;

begin

f1:=false;

for i:=1 to n do

begin

a[i]:=StrToInt(InputBox('Ввод массива','Введите элемент массива',''));

f:=true;

for j:=2 to a[i]-1 do

if (a[i]mod j)=0 then f:=false;

if f then f1:=true;

end;

if f1 then showmessage('Есть простые числа ');

end;

end.

15. Алгоритм сортировки вектора методом «пузырек».

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

Пусть дан вектор s[1..n].

Вектор отсортирован по возрастанию, если для любого i=1,...,n-1 выполняется условие s[i]<s[i+1].

Вектор отсортирован по не убыванию, если для любого i=1,...,n-1 выполняется условие s[i]<=s[i+1].

Вектор отсортирован по убыванию, если для любого i=1,...,n-1 выполняется условие s[i]>s[i+1].

Вектор отсортирован по не возрастанию, если для любого i=1,...,n-1 выполняется условие s[i]>=s[i+1].

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

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

Для определенности будем сортировать вектор по не убыванию.

Алгоритм сортировки "пузырек” (bubble-sort)

1. Вектор просматривается слева направо и сравниваются соседние элементы. Если s[i] > s[i+1], то элементы меняются местами.

2. Просмотры продолжаются до тех пор, пока сохраняется неупорядоченность, т.е. находится по крайней мере одна пара, такая что s[i]> s[i+1] для некоторого 1<=i<=n-1.

Просмотр 1.

13 6 8 15 4 13 <-> 6

6 13 8 15 4 13 <-> 8

6 8 13 15 4 15 <-> 4

6 8 13 4 15

Просмотр 2.

6 8 13 4 15 13 <-> 4

6 8 4 13 15

Просмотр 3.

6 8 4 13 15 8 <-> 4

6 4 8 13 15

Просмотр 4.

6 4 8 13 15 6 <-> 4

4 6 8 13 15 Вектор упорядочен!

Сортируется по не убыванию вектор a[1..n].

Sort – переменная, которая получит значение true, когда вектор будет отсортирован.

sort:=false;

while not sort do

begin sort:=true;

for i:=1 TO n-1 do

//Если упорядоченность нарушена, элементы меняются

if a[i]>a[i+1] then

begin sort:=false;h:=a[i];a[i]:=a[i+1];a[i+1]:=h end;

end;//while