whitecatrussia5398
?>

1. Відомо ряд натуральних чисел від n до m. Обчислити добуток парних чисел. 2. Відомо ряд натуральних чисел від 50 до 100. Обчислити кількість тих чисел, що діляться на 5 і на 15

Информатика

Ответы

apioslk4533

Немного теории:

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

Имя массива хранит адрес его нулевого элемента. Поэтому адрес любого 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)

krisrespect2

#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
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Мария-Кострыгина175
airon-082054
eizmaylova6
Геннадьевна Вета560
Grigorevna23
fellybrossme
jstepanova
lenalevmax7937
al2nik2ol
ragimovelshad
Freelifecool797
af-rc7893
Galiaahmatova4447
sveta740450
Валерьевич Николаевич1364