На языке программирования С !Задачка 1Программа обязана удовлетворять последующим требованиям:
На языке программирования С !
Задача 1
Программа обязана удовлетворять следующим требованиям:
1. массивы могут генерироваться автоматом, если в задачке не обсуждено иное. Оставшиеся начальные данные обязаны вводиться с клавиатуры по запросу.
2. необходимо работать только через указатели и функции.
3. все значения функций обязаны быть перенаправлены в качестве параметров.
4. на экране должны храниться как начальные данные так и итог.
Само задание
Напишите функцию, которая в квадратной матрице сдвигает последние элементы по кольцу, то есть 1-ая строчка сменяет последний столбец, заключительный столбец-заключительней строкой, заключительная строчка-первым столбцом, а 1-ый столбец-первой строчкой.
Есть еще задания, если превосходно разбираетесь
Высококачественный ответ обязательно отмечу наилучшим. Могу дублировать задания если нужно больше баллов
Не совершенно сообразил всех критерий, например "все значения функций обязаны быть перенаправлены в качестве характеристик", по этому если это условие не выполнено - растолкуй мне что это такое и я переделаю.
Не делал итераторы цикла динамическими ибо это не имеет смысла, остальные переменные я использовал как указатели.
Тестировал на GNU GCC, всё работает, писал на незапятанной Си.
Мой вариант решения:
include lt;stdio.hgt;
include lt;stdlib.hgt;
include lt;time.hgt;
//Создание нашей матрицы
int** NewMatrix(int *row, int* col)
int** matrix = new int*[*col];
for(int i = 0; i lt; *col; ++i)
matrix[i] = new int[*row];
return matrix;
//удаление матрицы
void DestroyMatrix(int **matrix, int *col)
for(int i = 0; i lt; *col; ++i)
delete[]matrix[i];
delete[]matrix;
//наполнение матрицы случайными числами
int ** Random(int**matrix, int* col, int *row)
srand(time(0));
for(int i = 0; i lt; *col; ++i)
for(int j = 0; j lt; *row; ++j)
matrix[i][j] = rand()%10;
return matrix;
//вывести матрицу на экран
void ShowMatrix(int**matrix, int* col, int *row)
for(int i = 0; i lt; *col; ++i)
for(int j = 0; j lt; *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 lt; *col; ++i)
mx[i][*col-1] = matrix[0][i];
//копирование последнего столба в последнюю строчку
for(int i = 0, j = *col-1; i lt; *col; ++i,j--)
mx[*col-1][i] = matrix[j][*col-1];
//копирование заключительной строчки в 1-ый столб
for(int i = 0; i lt; *col; ++i)
mx[i][0] = matrix[*col-1][i];
//копирование первого столба в первую строчку
for(int i = 0, j = *col-1; i lt; *col; ++i,j--)
mx[0][i] = matrix[j][0];
//копирование других частей в середине матрицы
for(int i = 1; i lt; *col-1; ++i)
for(int j = 1; j lt; *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");
-
Вопросы ответы
Статьи
Информатика
Статьи
Математика.
Разные вопросы.
Разные вопросы.
Математика.
Разные вопросы.
Математика.
Физика.
Геометрия.
Разные вопросы.
Обществознание.