Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмизация и ОП / 4 Лабораторная работа №4.doc
Скачиваний:
16
Добавлен:
09.02.2016
Размер:
78.85 Кб
Скачать

Задание а

Составить блок-схему и программу обработки одномерного массива. Элементы массива заполнить, используя функцию генератора случайных чисел.

Пример. Дан массив А[n].Заполнить массив B[n] элементами массива А[n] , начиная с последнего и осуществить сдвиг вправо на К позиций, где К-число положительных элементов.

На рисунке 2.4.1 приведена блок-схема решения задания

Рисунок 2.4.1 -Блок-схема решения задания

Программа может иметь следующий вид:

#include <stdlib.h>

# include <conio.h>

# include <stdio.h>

#define n 10

int main ()

{ int buf,j,pol,i,b[n], a[n];

for (i = 0; i < n; i++)

a[i]=rand()%10-5;

pol=0;

printf ("\n \n Сгенерированный массив a[n] \n");

for (i=0;i< n;i++)

printf ("%d ",a[i]);

j=n-1;

for (i=0;i< n;i++)

{b[j]=a[i];

j=j-1;

if (a[i]>=0)pol++;}

printf ("\n Число положительных элементов \n pol=%d",pol);

printf ("\n \n вывод массива b[n] \n");

for (i=0;i< n;i++)

printf ("%d ",b[i]);

for (i=0;i<pol;i++)

{ buf=b[n-1];

for(j=n-1;j>0;j--)

b[j]=b[j-1];

b[0]=buf; }

printf ("\n \n Сдвиг элементов массива b[n] на %d позиций \n", pol);

for (i=0;i< n;i++)

printf ("%d ",b[i]);

printf ("\n");

system("PAUSE");

return 0;}

Результат выполнения программы:

Сгенерированный массив a[n]

1 2 3 -4 -5 -1 -2 -3 -7 9

Число положительных элементов

pol=4

вывод массива b[n]

9 -7 -3 -2 -1 -5 -4 3 2 1

Сдвиг элементов массива b[n] на 4 позиций

-4 3 2 1 9 -7 -3 -2 -1 -5

Варианты задания А

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

1. Дан массив A[N]. Заполнить массив В[N] элементами массива A[N] следующим образом: вначале заполнить элементами с четными индексами, а затем — с нечетными. Осуществить сдвиг вправо на k позиций, где k – число положительных элементов

2. Дан массив A[N]. Заполнить массив В[N] элементами массива A[N] следующим образом: вначале заполнить элементами с |нечетными индексами, а затем —с четными. Осуществить сдвиг вправо на k позиций, где k – число отрицательных элементов

3. Дан массив A[N]. Заполнить массив В[N] элементами массива A[N], которые удовлетворяют двойному неравенству: A[1] < A[i] < A[10]. Незаполненные элементы массива В[N] заполнить оставшимися элементами массива A[N]. Осуществить сдвиг влево на k позиций, где k – число оставшихся элементов массива A[N].

4. Дан массив A[N]. Заполнить массив В[N] элементами массива A[N], которые удовлетворяют двойному неравенству: A[1] < A[i] или A[i] < A[10]. Незаполненные элементы массива В[N] заполнить оставшимися элементами массива A[N]. Осуществить сдвиг вправо на k позиций, где k – число оставшихся элементов массива A[N].

5. Дан целочисленный массив размера N. Преобразовать его, прибавив к четным числам первый элемент. Первый элементы массива не изменять. Осуществить сдвиг вправо на k позиций, где k – число четных элементов

6. Дан целочисленный массив размера N. Преобразовать его, прибавив к нечетным числам первый элемент. Первый элемент массива не изменять. Осуществить сдвиг вправо на k позиций, где k – число четных элементов

7. Дан целочисленный массив размера N. Преобразовать его, прибавив к четным числам последний элемент. Последний элемент массива не изменять. Осуществить сдвиг влево на k позиций, где k – число нечетных элементов

9. Дан целочисленный массив размера N. Преобразовать его, прибавив к четным числам первый элемент. Первый элемент массива не изменять. Осуществить сдвиг вправо на k позиций, где k – число нечетных элементов

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

11. Дан массив A[N]. Все положительные элементы уменьшить на значение минимального элемента. Осуществить сдвиг вправо на k позиций, где k – число положительных элементов

12. Дан массив A[N]. Все отрицательные элементы увеличить на значение максимального элемента. Осуществить сдвиг влево на k позиций, где k – число отрицательных элементов

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

14. Дан массив размера N. Осуществить циклический сдвиг элементов массива влево на k позиций, где k – индекс минимального элемента. 

15. Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k – индекс максимального элемента. 

16. Дан массив A[N]. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k – целая часть среднего арифметического значения положительных элементов массива A[N].

17. Дан массив A[N]. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k – целая часть среднего арифметического значения отрицательных элементов массива A[N].

18. Дан массив A[N]. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k – целая часть среднего арифметического значения четных элементов массива A[N].

19. Дан массив A[N]. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k – целая часть среднего арифметического значения нечетных элементов массива A[N].

20. Дан массив A[N]. Все отрицательные элементы уменьшить на значение минимального элемента. Осуществить сдвиг вправо на k позиций, где k – число положительных элементов