Указатели
Передача значений переменных в функции не позволяет изменить значение исходной переменной. Например:
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, nommin int 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.число сомножителей числа