#include <iostream>
#include <iomanip>
using namespace std;
int** matrCreate(int n)
{
int** M;
M = new int *[n];
for (int i = 0; i < n; i++)
M[i] = new int [n];
return M;
}
void matrInit(int** M, int n)
{
srand(time(0));
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
M[i][j] = rand()%199 - 99 ;
}
void matrPrint(int** M, int n)
{
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
cout << setw(5) << M[i][j];
cout << endl;
}
}
void matrTransform(int** M, int n)
{
int im, jm, max = -1000, s = 0;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
if (M[i][j] > max)
{
max = M[i][j];
im = i;
jm = j;
}
if (i == j)
s += M[i][j];
}
}
M[im][jm] = s;
}
void clearMem(int** M, int n)
{
for (int i = 0; i < n; i++)
{
delete [] M[i];
}
delete [] M;
}
int main()
{
int n;
cin >> n;
int **A;
A = matrCreate(n);
matrInit(A, n);
matrPrint(A, n);
cout << endl;
matrTransform(A, n);
matrPrint(A, n);
clearMem;
return 0;
}
Смотри картинку
Объяснение:
p = 23
s = 0
цикл выполняется пока р > 0
Действия в цикле:
s = s + p mod 10
p = p div 10
p = 23 s = 0 23 > 0 (да)
выполняем цикл
s = s + p mod 10 = 0 + 23 mod 10 = 0 + 3 = 3
p = p div 10 = 23 div 10 = 2
p = 2 s = 3 2 > 0 (да)
выполняем цикл
s = s + p mod 10 = 3 + 2 mod 10 = 3 + 2 = 5
p = p div 10 = 2 div 10 = 0
p = 0 s = 5 0 > 0 (нет)
не выполняем цикл
div - целочисленное деление
mod - остаток от целочисленного деления
2 / 2 = 1 целое + 0 остаток
2 div 2 = 1
2 mod 2 = 0
3 / 2 = 1 целое + 1 остаток
2 div 2 = 1
2 mod 2 = 1
Не совсем понял вопрос перевёл AC из 16 в 10 = 172