• Предмет: Информатика
  • Автор: yana8661
  • Вопрос задан 3 месяца назад

помогите пожалуйста ​

Приложения:

Ответы

Ответ дал: timofeymazarov
2

Ответ:

Не совсем понял всех условий, например "все значения функций должны быть перенаправлены в качестве параметров", по этому если это условие не выполнено - объясни мне что это такое и я переделаю.

Не делал итераторы цикла динамическими ибо это не имеет смысла, остальные переменные я использовал как указатели.

Тестировал на GNU GCC, всё работает, писал на чистой Си.

Мой вариант решения:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

//Создание нашей матрицы

int** NewMatrix(int *row, int* col)

{

int** matrix = new int*[*col];

for(int i = 0; i < *col; ++i)

{

matrix[i] = new int[*row];

}

return matrix;

}

//удаление матрицы

void DestroyMatrix(int **matrix, int *col)

{

for(int i = 0; i < *col; ++i)

{

delete[]matrix[i];

}

delete[]matrix;

}

//заполнение матрицы случайными числами

int ** Random(int**matrix, int* col, int *row)

{

srand(time(0));

for(int i = 0; i < *col; ++i)

{

for(int j = 0; j < *row; ++j)

{

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

}

}

return matrix;

}

//вывести матрицу на экран

void ShowMatrix(int**matrix, int* col, int *row)

{

for(int i = 0; i < *col; ++i)

{

for(int j = 0; j < *row; ++j)

{

printf("%d ",matrix[i][j]);

}

printf("\n");

}

}

//функция сдвигает крайние элементы по кольцу

int **Roll(int**matrix, int *col, int *row)

{

int **mx = NewMatrix(row,col);

//копирование элементов с верхней строки в последний столб

for(int i = 0; i < *col; ++i)

{

mx[i][*col-1] = matrix[0][i];

}

//копирование последнего столба в последнюю строку

for(int i = 0, j = *col-1; i < *col; ++i,j--)

{

mx[*col-1][i] = matrix[j][*col-1];

}

//копирование последней строки в первый столб

for(int i = 0; i < *col; ++i)

{

mx[i][0] = matrix[*col-1][i];

}

//копирование первого столба в первую строку

for(int i = 0, j = *col-1; i < *col; ++i,j--)

{

mx[0][i] = matrix[j][0];

}

//копирование остальных элементов в середине матрицы

for(int i = 1; i < *col-1; ++i)

{

for(int j = 1; j < *row-1; ++j)

{

mx[i][j]=matrix[i][j];

}

}

//удаление лишней матрицы

DestroyMatrix(matrix,col);

return mx;

}

int main()

{

int *row = new int(5);

int *col = new int(5);

int **mx = NewMatrix(row,col);

mx = Random(mx,col,row);

ShowMatrix(mx,col,row);

mx = Roll(mx,col,row);

printf("\nRolling...\n\n");

ShowMatrix(mx,col,row);

DestroyMatrix(mx,col);

delete row;

delete col;

system("pause");

Вас заинтересует