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

  *ppar= new int[5];             //*ppar инициализируется адресом динамического массива

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

{printf ("%p    %p\n", ppar, *(ppar+0)+i);

scanf ("%d", *(ppar+0)+i);}       // или scanf (”%d”, ppar[0]+i);   без &

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

printf ("%5d", *(*(ppar+0)+i));         // или printf ("%5d", *(ppar[0]+i));

//или printf ("%5d", ppar[0][i]);

printf ("\n");

delete  [ ] *ppar;

delete ppar;

return 0;

}

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

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

#include <stdlib.h>

main ()

{

static int  *pi[5]

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

pi[i] = new   int;                     

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

{printf ("%p\n", pi[i]);                      //вывод адреса элемента  массива

scanf("%d", pi[i]);                           //без &

}

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

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

printf ("\n");                                                    

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

delete pi[i];

return 0;

}

Перегрузка функций при вычислении суммы элементов массива

#include <iostream.h>

#include <conio.h>

int adder  ( int [ ]);

double adder ( double [ ]);

main()

{ int  iarray [ 7 ] = {5, 1, 6, 20, 15, 0, 12};

double darray [ 7] = {5.5, 1.6, 6.7, 20.2, 15.0, 0.2, 12.0};

double dsum;

int isum;

isum= adder (iarray);        //выбор версии функции

dsum= adder (darray);     //на основании типа аргументов

cout << “isum=” << isum <<  endl;

cout << “dsum=” << dsum <<  endl;

getch();

return 0;

}

int adder  (int iarray[ ])

{int i;

int ipartial;

ipartial = iarray[0];

for (i=1; i<7; i++)

ipartial +=iarray [ i ];

return (ipartial);

}

double adder  (double darray[ ])

{int i;

double dpartial;

dpartial = darray[0];

for (i=1; i<7; i++)

dpartial +=darray [ i ];

return (dpartial);

}

Пример шаблона функций для поиска в массиве максимального значения.

#include <iostream.h>

template <class type> type&  rmax (type d[ ], int n);                     //прототип шаблона

void main()

 {const int n=4;

static int x[ ]= {10, 20, 30, 14};

cout << “\n rmax(x, n)=” << rmax(x, n);     

rmax(x, n) =0; //обнуление макс. элемента

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

cout << “\tx[” << i << “]=” <<x[i];

 static float arx[ ] = {10.3f, 20.4f, 10.5f};

cout << “\n rmax(arx, 3)=” << rmax(arx, 3);

rmax(arx, 3) =0;   // обнуление макс. элемента

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

cout << “\t arx[” << i << “]=” << arx[i];

cout << endl;

 }

template <class type> type&  rmax (type d[ ], int n)      //определение шаблона

{int im=0 ;

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

im = d[im] > d[i] ? im : i;

return d[im];

}

Пример шаблона функций для поиска в массиве заданного значения, причем функция определяет (возвращает) индекс найденного элемента или -1, если элемент не найден:

#include <iostream.h>

template <class type>

int find(type* array, type value, int size);

char chrArr[] =   {1, 3, 5, 9, 11, 13};       // глобальный массив

char ch = 5;                                  //значение для поиска

int intArr[] =    {1, 3, 5, 9, 11, 13};        //глобальный массив

int in = 6;                                    //значение для поиска

long lonArr[] =   {1L, 3L, 5L, 9L, 11L, 13L};        //глобальный массив

long lo = 11L;                                       //значение для поиска

double dubArr[] = {1.0, 3.0, 5.0, 9.0, 11.0, 13.0};    //глобальный массив

double db = 4.0;                                     //значение для поиска

int main()

{