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

Задание б

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

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

#include <stdlib.h>

# include <conio.h>

# include <stdio.h>

#define n 10

int main ()

{ int buf,j,pol,i,b[n], *pa,*pb,*p, a[n];

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

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

pol=0;

pa=&a[0];

pb=&b[9];

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

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

printf ("%d ",*pa++);

pa=&a[0];

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

{*pb=*pa;

if (*pa>=0)pol++;

--pb;

++pa; }

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

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

pb=&b[0];

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

printf ("%d ",*pb++);

pb=&b[9];

p=&b[0];

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

{ buf=*pb;

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

*pb=*(--pb);

*p=buf;

p=&b[0];

pb=&b[9]; }

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

pb=&b[0];

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

printf ("%d ",*pb++);

printf ("\n");

system("PAUSE");

return 0;

}

Варианты задания Б Варианты задания Б соответствуют вариантам задания А данной лабораторной работы.

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

  1. Каким образом определяются переменные типа массив?

  2. Какие операторы языка Си используются при обработке элементов массива?

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

  4. Каким образом выводятся элементы массива на экран?

  5. Какой результат унарной операции &?

  6. Какой результат унарной операции *?

  7. Выражение uk=&a[0] эквивалентно uk=a?

  8. Выражения &a[i] и a+i идентичны?

32