русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Задачи перестановки


Дата добавления: 2015-07-09; просмотров: 559; Нарушение авторских прав


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

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

Пример 1. Пусть дан массив A, состоящий из n элементов: a1, a2, a3, …, an. Элементы массива циклически перемещаются по следующему правилу: каждый элемент, за исключением начального элемента перемещается в предыдущий по порядку (меньший по индексу) элемент массива.

При этом начальный элемент массива перемещается в последний элемент массива.

В качестве результата выведите элементы массива после завершения перемещений.

Алгоритм сдвига всех элементов массива влево циклически:

program SDV_VLEVO;

var

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

i,n,z:integer;

Begin

readln(n);

for i:=1 to n do



read(a[i]);

Z:=a[1];

For i:=1 to n-1 do

A[i]:=a[i+1];

A[n]:=Z;

for i:=1 to n do

write(a[i],’ ‘);

End.

Здесь важно понять необходимость дополнительной переменной для временного хранения одного элемента и правильно организовать заголовок цикла (до n-1, а не до n).

Пример 2. Пусть дан массив A, состоящий из n элементов: a1, a2, a3, …, an. Элементы массива циклически перемещаются по следующему правилу: каждый элемент, за исключением последнего элемента перемещается в последующий по порядку (меньший по индексу) элемент массива.

При этом начальный элемент массива перемещается в последний элемент массива.

В качестве результата выведите элементы массива после завершения перемещений.

Алгоритм сдвига всех элементов массива вправо циклически:

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

program SDV_VPRAVO;

var

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

i,n,z:integer;

Begin

readln(n);

for i:=1 to n do



read (a[i]);

Z:=a[n];

For i:=n downto 2 do

a[i]:=a[i-1];

a[1]:=Z;

for i:=1 to n do

write (a[i],’ ‘);

End.

Пример 3. Пусть дан массив A, состоящий из n элементов: a1, a2, a3, …, an. Выполнить сдвиг элементов массива влево циклически, начиная с К-того до последнего элемента массива.

Вопрос ученикам: Как изменится алгоритм, если выполнить сдвиг элементов массива, начиная с К-того до последнего элемента массива?

program SDV_VLEVO_C_K_elementa;

var

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

i,n,z,k:integer;

Begin

readln(n,К);

for i:=1 to n do

read(a[i]);

Z:=a[К];

For i:=К to n-1 do

A[i]:=a[i+1];

A[n]:=Z;

for i:=1 to n do

write(a[i],’ ‘);

End.

Заметим – изменения выделены жирным шрифтом.

Пример 4. Пусть дан массив A, состоящий из n элементов: a1, a2, a3, …, an. Выполнить сдвиг элементов массива вправо циклически, начиная с К-того до последнего элемента массива

program SDV_VPRAVO_C_K_elementa;

var

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

i,n,z,к:integer;

Begin

readln(n,к);

for i:=1 to n do

read (a[i]);

Z:=a[n];

For i:=n downto К+1 do

a[i]:=a[i-1];

a[К]:=Z;

for i:=1 to n do

write (a[i],’ ‘);

End.

Пример 5. Пусть дан массив A, состоящий из n элементов: a1, a2, a3, …, an. Удалить элемент массива с заданным номером (К).

Алгоритм данной задачи сводится к сдвигу элементов массива влево, начиная с К-того до последнего элемента массива и уменьшению размерности массива на единицу.

program Udalenie_K_elementa;

var

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

i,n,k:integer;

Begin

readln(n,k);

for i:=1 to n do



read(a[i]);

For i:=k to n-1 do

A[i]:=a[i+1];

n:=n-1;

for i:=1 to n do

write(a[i],’ ‘);

End.

Пример 6. Пусть дан массив A, состоящий из n элементов: a1, a2, a3, …, an. Вставить заданное число перед или после элемента массива с заданным номером (К).

Алгоритм данной задачи сводится к сдвигу элементов массива вправо, начиная с К-того до последнего элемента массива

program Vstavit_C_Pered_K;

var a: array [1..100] of integer;

i, n, k,c: integer;

begin

readln (n, k,c);

for i:=1 to n do read (a[i]);

for i:=n+1 downto k+1 do a[i]:=a[i-1];

n:=n+1; a[k]:=C;

for i:=1 to n do write (a[i], ' ');

end.

program Vstavit_C_Posle_K;

var a: array [1..100] of integer;

i, n, z, k,c: integer;

begin

readln (n, k,c);

for i:=1 to n do read (a[i]);

for i:=n+1 downto k+1 do a[i]:=a[i-1];

n:=n+1;

a[k+1]:=C;

for i:=1 to n do write (a[i], ' ');

end.



<== предыдущая лекция | следующая лекция ==>
Задачи поиска | Задачи для самостоятельного решения


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 2.783 сек.