Циклы. Инициализация массива размерности n случайными целыми положительными значениями от 0 до 32767, страница 7

const int n=10;

int mean (int [ ], int ); //прототипфункции нахождения среднего

main () { static int a[n] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

printf ("%d\n",  mean(a, n));

return 0;

}

 int mean (int array [ ], int k)     //передается массив и количество элементов

{int index, sum;

if (n>0)

{for (index=0, sum=0; index<k; index++)

sum +=array[index];

return (int (sum/k));

}

else

{printf ("not\n");

return 0;

}

}

//2. доступ к элементам массива по указателю

#include <stdio.h>              

#include <stdlib.h>

const int n=10;

int mean (int [ ], int );  //прототипфункции нахождения среднего

main () {static int a[n] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

printf ("%d\n",  mean (a, n) );

return 0;

}

 int mean (int *pa, int k)        //передается массив и количество элементов

{ int index, sum;

 if (k>0)

{ for (index=0, sum=0; index<k; index++)

sum += *(pa + index);

return (int (sum/k));     }

else

{ printf ("not\n");

return 0;      }

}

Массив указателей на функцию

#include <iostream.h>

#include <conio.h>

#include <stdio.h>

int dif (int, int);   //прототипы функций

int sum (int, int);

main()

{ int a, b;   

char  upr;

int (*func [ ]) (int, int) = {dif, sum};

cout <<"Input a   b:"<< endl;    cin >> a>> b;

cout << "Input priznak function"<< endl;

do

{ switch (upr = getche())

{case 'd':

cout << endl;        

cout << (*(*func))(a, b);        //(*(*(func+0)))(a,b)     вызов функции dif

cout <<endl;

cout << (*func[0])(a, b);           //вызов функции dif (a,b);

cout << endl;   break;

case 's':

cout << endl;          

cout << (*func[1])(a, b);           //вызов функции sum (a,b);

cout << endl;

cout << (*(*(func+1)))(a, b);      //вызов функции sum (a,b);

cout << endl;       break;

default:  cout << "\n input char\n" << endl;

}

} while (upr !='d' && upr !='s');

return 0;

}

int dif (int a, int b)

{return a-b;}

int sum (int a, int b)

{return a+b;}

Динамический одномерный массив

#include <iostream.h>                  //вариант 1 в стиле С++

#include <stdlib.h>

const int n=5;

main ()

{ static int *par = new int [n];//выделение памяти под динамический массив

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

cin >>par[i];                       //ввод значений элементов массива

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

cout << par[i] <<" ";       //вывод значений элементов массива

cout << endl;

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

cout << &par[i] <<" ";       //вывод адресов элементов массива

delete [ ] par;                      //освобождение памяти, занимаемой динамическим массивом

return 0;

 }

#include <stdio.h>    //вариант 2 в стиле С

#include <stdlib.h>

const int n=5;

main ()

{int i;

     static int *par = (int*) malloc (n * sizeof(int)); //выделение памяти под массив

for (i=0; i<n; i++)                        //вывод адресов элементов массива

printf ("%p\n", par+i);

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

scanf ("%d", par+i);               //или par++ ввод значений элементов массива   без &

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

printf ("     %5d", par[i]);   //  или *(par+i) вывод значений элементов массива

printf ("\n");

free  (par);  //освобождение памяти

return 0;

}

//не для всех !!!!

#include <stdio.h>          // еще один способ создания динамического массива

#include <stdlib.h>              //int **ppar       *ppar          *((*ppar) +i)

main ()

{ static int **ppar = new (int *);    //выделяется место под динамический указатель *ppar