#include <iostream>
using namespace std;
int main()
{
int N, N1;
cout << "kol-vo ctrok ";
cin >> N;
cout << "ko-lvo ctolbcov ";
cin >> N1;
int** mtrx = new int* [N1];
for (int i = 0; i < N; i++)
{
mtrx[i] = new int[N1];
}
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N1; j++)
{
cin >> mtrx[i][j];
}
}
cout << endl;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N1; j++)
{
cout<< mtrx[i][j]<<" ";
}
cout << endl;
}
for (int i = 0; i <= trunc(N/2); i++)
{
for (int j = 0; j <= trunc(N1/2); j++)
{
int tmp = mtrx[N - 1 - i][N1-1-j];
mtrx[N - 1 - i][N1 - 1 - j] = mtrx[i][j];
mtrx[i][j] = tmp;
}
}
cout << endl;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N1; j++)
{
cout << mtrx[i][j] << " ";
}
cout << endl;
}
for (int i = 0; i < N; i++)
{
delete[] mtrx[i];
}
delete [] mtrx;
return 0;
}
Поделитесь своими знаниями, ответьте на вопрос:
1. Відомо ряд натуральних чисел від n до m. Обчислити добуток парних чисел. 2. Відомо ряд натуральних чисел від 50 до 100. Обчислити кількість тих чисел, що діляться на 5 і на 15
Немного теории:
Любой доступ к элементу массива, осуществляемый с операции индексирования может быть осуществлен при указателей.
Имя массива хранит адрес его нулевого элемента. Поэтому адрес любого i элемента массива можно представить как (x+i), где x - указатель на первый элемент массива. А его значение как *(x+i)
Подобные операции верны для любого типа и размера массивом, так как при прибавлении к указателю целого числа, он "сдвигается" не на i байтов, а на i элементов этого типа.
В данном задании:
int a[]= {7,8,9} - инициализация массива. По сути, это описание и присваивание значения одновременно. После выполнения этой строчки: a[0]=7; a[1]=8; a[2]=9 - массив из трех элементов, нумерация с нуля.
int *b=a - Эта строчка переводится как "создаем переменную b типа указатель на целое и присваем ему адрес нулевого элемента массива".
*(b+2)=b+1 - очень странная запись.
*(b+2) равносильно a[2] - значение последнего элемента данного массива. Переменная b содержит целое число, которое является адресом нулевого элемента массива. b+1 - указатель "сдвигается на 1 элемент вправо", т.е (b+1) - адрес первого элемента массива.
То есть данная запись означает, что в последний элемент массива(a[2] в данном случае) записывается адрес первого элемента массива(a[1] в данном случае).
b[1] - такая запись указателя с индексом равносильна a[1] - значению первого элемента массива.
В итоге: b[1] <=> a[1]=8
Примечание:
Изначально ваша программа не выполниться, так как запись int b*=a - неверная(правильно int *b=a)