Тапсырма 0осу керек

 

Задание Б

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

Пример Дан массив А[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идентичны?