Задание Б
Составить программу обработки одномерного массива. Доступ к элементам массива осуществлять с помощью указателя. Элементы массива заполнить, используя функцию генератора случайных чисел.
Пример Дан массив А[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 идентичны?