Передача массивов в функцию и обратно

Указатели

Передача значений переменных в функции не позволяет изменить значение исходной переменной. Например:

void f ( int a )

{ a = 10; //меняется локальная копия переменной

}...

int k = 0;f(k); //k копируется, после вызова функции значение не изменится

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

Указатель – специальный тип, являющийся производным от других типов.

Двумерные массивы, действия с ними.

С позволяет создавать многомерные массивы. Простейшим видом многомерного массива является двумерный массив. Двумерный массив - это массив одномерных массивов. Двумерный массив объявляется следующим образом:

тип имя_массива[размер второго измерения][размер первого измерения];

 

Следовательно, для объявления двумерного массива целых с размером 10 на 20 следует написать:

int d[10] [20] ;

Посмотрим внимательно на это объявление. В противоположность другим компьютерным языкам, где размерности массива отделяются запятой, С помещает каждую размерность в отдельные скобки.

Для доступа к элементу с индексами 3, 5 массива d следует использовать

d[3] [5]

Короче они бывают динамические, статические, в них можно наваливать по сталбцам и строкам. Далее говорить лень, то же самое, но только круче, и то что с одномерными катит, просто два цикла по столбцам и строкам фигачим и все. Фух. Тчк.


ПРАКТИКА

1. сумма элементов массива c++

#include <iostream.h>
int main(){
const int n = 10;
int i,. sum;
int marks[n] = {3, 4, 5, 4, 4};
for (i = 0, sum = 0; i<n; i++) sum += marks[1];
cout << "Сумма элементов: " << sum;
return 0;
}

Среднее значение элементов массива

int N, S;

cout<<"Введите размерность массива: ";

cin>>N;

int *arr = new int[N];

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

{

cout<<endl<<"Введите "<<i<<" элемент массива: ";

cin>>arr[i];

S+=arr[i];

}

cout<<"Среднее арифметическое массива = "<<S/N<<endl;

delete [] arr;

system("pause");

return 0;

Нахождение максимального или минимального элемента массива

#include <iostream>

#include <ctime>

 

using namespace std;

 

int main()

{

int min =0;

int max =0;

srand(time(NULL));

int n = 0;

int sum = 0;

cin >> n; // Считываем с клавиатуры n

int **a = new int* [n]; // Создаем массив указателей

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

{

a[i] = new int [n]; // Создаем элементы

}

// А дальше работа как с обычным массивом.

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

{

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

{

a[i][j] = rand() % 10;

cout << a[i][j] << " "; // Вывести элементы на консольку

}

cout << endl; // Двумерный массив. Строка кончилась, переводим строку и на консоли

}

// Считаем минимальный и максимальный

min = a[0][0];// берем самый первый элемент массива и считаем, что он минимальный.

max = a[0][0];// и он же максимальный.

 

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

{

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

{

if (a[i][j] < min) min = a[i][j];

if (a[i][j] > max) max = a[i][j];

}

}

cout << "min = " << min << endl << "max = " << max << endl;

// Удаление массива

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

{

delete[]a[i]; // Удаляем каждый элемент

}

delete [] a; // А потом массив

return 0;

}

Нахождение номера максимального или минимального элемента массива

#include <iostream>using namespace std; int main(){//резервируем область памяти для массива dat и переменных i, nomminint dat [5],i,nommin;dat[1]=3;dat[2]=4;dat[3]=5;dat[4]=7;dat[5]=9;//в переменную nommin помещаем индекс первого элемента массиваnommin=1;//цикл со счетчиком i для перебора всех элементов массиваfor (i=2;i<=5;i++){//если значение элемента массива меньше значения, хранящегося в элементе с номером nommin,//то в nommin помещаем значения индекса (номер) элемента if (dat[i]<dat[nommin]){nommin=i;}}//вывод nommin за пределами циклаcout << "index minimalnogo chisla massiva = "<< nommin; }

Вычисление суммы ряда не превышающего данное значение

 

Число четное или простое

7.число сомножителей числа