//естественно, 2-ой параметр должен быть меньше //количества элементов массива n
cout << "isum=" << isum << endl;
getch();
return 0;
}
int adder (int iarray[ ], int k) //заголовок функции
{int i, ipartial=0;
for (i=0; i<k; i++) //k – формальный параметр функции, его значение равно 3
ipartial +=iarray[i]; //накопление суммы
return (ipartial); //накопленная сумма возвращается в функцию
}
При передаче массива в функцию он (в качестве формального параметра) может быть описан как указатель на целое:
#include <iostream.h> //способ 3
#include <conio.h>
int adder (int [ ]);
const int n=7; //размер массива – глобальная константа, видима везде
main()
{ int isum;
static int iarray[n] = {5, 1, 6, 20, 15, 0, 12};
isum= adder(iarray);
cout << "isum=" << isum << endl;
getch();
return 0;
}
int adder (int *piarray) //массив описан как указатель на целое
{int i, ipartial=0;
for (i=0; i<n; i++) //используется глобальная константа n
ipartial += *(piarray+i); //разыменовывается указатель на i-ый элемент массива
return (ipartial);
}
Можно задать размер массива как локальную константу, передавать его в функцию как аргумент, а также обращаться к элементу массива в функции adder иначе:
#include <iostream.h> //способ 4
#include <conio.h>
int adder (int [], int);
main()
{ const int n=7;
static int iarray[n] = {5, 1, 6, 20, 15, 0, 12};
int isum;
isum= adder(iarray, n);
cout << "isum=" << isum << endl;
getch();
return 0;
}
int adder (int *piarray, int k)
{int i , ipartial = 0;
for (i=0; i<k; i++) //k – формальный параметр, его значение равно n
ipartial +=piarray[i]; //напомним, что piarray[i] есть *(piarray +i);
return (ipartial);
}
Обратите внимание на возможность вычисления суммы части элементов массива (начиная с некоторого индекса):
#include <iostream.h>
#include <conio.h>
int adder (int [ ], int);
main()
{const int n=7;
static int iarray[n] = {5, 1, 6, 20, 15, 0, 12};
int isum, i=3;
isum= adder(iarray+i, n-i); // функции adder передается адрес 4-го элемента и // предполагается вычисление суммы n-i элементов, //начиная с 4-гои до конца массива
cout << "isum=" << isum << endl;
getch();
return 0;
}
int adder (int *piarray, int k)
{int i, ipartial=0;
for (i=0; i<k; i++)
ipartial +=piarray[i]; //вычисление смещения адреса для piarray[i]; выполняется // от переданного в piarray значения адреса 4-го элемента
return (ipartial);
}
Передача одного элемента массива
#include <iostream.h>
#include <conio.h>
int adder (int [ ]);
main()
{const int n=7;
static int iarray[n] ={5, 1, 6, 20, 15, 0, 12};
int isum;
isum= adder(iarray+3); // или adder(&iarray[3]);
cout << "isum=" << isum << endl;
getch();
return 0;
}
int adder (int *piarray)
{int i , ipartial;
ipartial=*piarray; //берется только одно значение, переданное по адресу piarray
return (ipartial);
}
В одномерном целочисленном массиве найти числа с наибольшим количеством единиц в его двоичном представлении:
#include<iostream.h>
#include<conio.h>
unsigned NUM(int); //прототип функции
main()
{int i;
int const n=5;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.