Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include <Windows.h>
- #include <limits.h>
- int main() {
- int ** matrix = NULL;
- int rows, cols;
- int row, col;
- int max, min;
- int max_index, min_index;
- int temp;
- int stop;
- system("chcp 1251");
- system("cls");
- do {
- printf(" Введите количество строк матрицы: ");
- fflush(stdin);
- } while(!scanf_s("%i", &rows) || rows < 1);
- do {
- printf(" Введите количество столбцов матрицы: ");
- fflush(stdin);
- } while(!scanf_s("%i", &cols) || cols < 1);
- srand((unsigned int)time(NULL));
- if ((matrix = (int **)calloc(rows, sizeof(int *))) == NULL) {
- printf(" Не удалось выделить память под массив указателей!\n\a");
- free(matrix);
- matrix = NULL;
- printf(" Программа завершает свою работу!\n");
- Sleep(3000);
- exit(EXIT_FAILURE);
- }
- for (row = 0; row < rows; row++) {
- if ((matrix[row] = (int *)calloc(cols, sizeof(int ))) == NULL) {
- printf(" Не удалось выделить память под массив элементов!\n\a");
- stop = row;
- for (row = 0; row < stop; row++) {
- free(matrix[row]);
- }
- free(matrix);
- matrix = NULL;
- printf(" Программа завершает свою работу!\n");
- Sleep(3000);
- exit(EXIT_FAILURE);
- }
- for (col = 0; col < cols; col++) {
- matrix[row][col] = 1 + rand() % 999;
- }
- }
- printf("\n");
- max = INT_MIN, min = INT_MAX;
- max_index = min_index = 0;
- for (row = 0; row < rows; row++, printf("\n")) {
- for (col = 0; col < cols; col++) {
- printf("%5i", matrix[row][col]);
- if (max < matrix[row][col]) {
- max = matrix[row][col];
- max_index = row;
- }
- if (min > matrix[row][col]) {
- min = matrix[row][col];
- min_index = row;
- }
- }
- }
- if (min_index != max_index) {
- for (col = 0; col < cols; col++) {
- temp = matrix[min_index][col];
- matrix[min_index][col] = matrix[max_index][col];
- matrix[max_index][col] = temp;
- }
- printf("\n\n");
- for (row = 0; row < rows; row++, printf("\n")) {
- for (col = 0; col < cols; col++) {
- printf("%5i", matrix[row][col]);
- }
- }
- } else {
- printf("\n Максимальный и минимальный элементы находятся в одной строке!\n");
- }
- for (row = 0; row < rows; row++) {
- free(matrix[row]);
- }
- free(matrix);
- matrix = NULL;
- fflush(stdin);
- getchar();
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement