Поменять местами максимальные элементы массива и матрицы - C (СИ)
Формулировка задачи:
Мне нужно решить задачу "Поменять местами максимальные элементы массива А (45) и матрицы
В (6х9)." Я составила программу, а мне говорят что нужно её решить одним циклом, а я не понимаю как. Помогите, посмотрите, посоветуйте, что изменить
#include <stdio.h> #include <conio.h> #define L 4 // Количество элементов массива #define N 3 // Количество строк матрицы #define M 2 // Количество столбцов матрицы void EnterData(double A[L], int num, double B[N][M], int numStr, int numCol); void EnterMatrix(double B[N][M], int numStr, int numCol); void OutputArray(double A[L], int num); void OutputMatrix(double B[N][M], int numStr, int numCol); void Change(double A[L], int num, double B[N][M], int numStr, int numCol); int main() { double A[L], B[N][M]; // Ввод массива и матрицы printf("Enter array A and Matrix B:\n"); EnterData(A, L, B, N, M); printf("\n"); // Вывод введенных массива и матрицы printf("Entered array A:\n"); OutputArray(A, L); printf("Entered matrix B:\n"); OutputMatrix(B, N, M); printf("\n"); Change(A, L, B, N, M); // Вывод измененных матриц printf("Changed array A:\n"); OutputArray(A, L); printf("Changed matrix B:\n"); OutputMatrix(B, N, M); printf("\n"); getch(); return 0; } // Ввод массива и матрицы void EnterData(double A[L], int num, double B[N][M], int numStr, int numCol) { int i, j; for (i = 0; i < num; ++i) { printf("Enter element[%d] = ", i); scanf("%lf", &A[i]); } for (i = 0; i < numStr; ++i) for (j = 0; j < numCol; ++j) { printf("Enter element[%d][%d] = ", i, j); scanf("%lf", &B[i][j]); } } // Вывод массива void OutputArray(double A[L], int num) { int i; for (i = 0; i < num; ++i) printf("%5.2lf ", A[i]); printf("\n"); } // Вывод матрицы void OutputMatrix(double B[N][M], int numStr, int numCol) { int i, j; for (i = 0; i < numStr; ++i) { for (j = 0; j < numCol; ++j) printf("%5.2lf ", B[i][j]); printf("\n"); } } // Смена максимальный элементов массива и матрицы void Change(double A[L], int num, double B[N][M], int numStr, int numCol) { double buf; int i, j, k, l, m; k = 0; for (i = 1; i < num; ++i) if (A[i] > A[k]) k = i; l = m = 0; for (i = 0; i < numStr; ++i) for (j = 0; j < numCol; ++j) if (B[i][j] > B[l][m]) { l = i; m = j; } buf = A[k]; A[k] = B[l][m]; B[l][m] = buf; }
Решение задачи: «Поменять местами максимальные элементы массива и матрицы»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <time.h> #define L 14 // Количество элементов массива #define N 6 // Количество строк матрицы #define M 9 // Количество столбцов матрицы int main() { int A[L], B[N][M], k, l, m, buf; l = k = m = 0; srand(time(NULL)); for (int i = 0; i < L || i < N; ++i) { if (i < L) printf("\n[%2d] ", A[i] = rand() % 100); if (i < N) for (int j = 0; j < M; ++j) printf("[%2d]", B[i][j] = rand() % 100); } for (int i = 0; i < L || i < N; ++i) // Поиск и в матрице и в массиве { // одним циклом if (i < L) if (A[i] > A[k]) k = i; if (i < N) for (int j = 0; j < M; ++j) if (B[i][j] > B[l][m]) { l = i; m = j; } } buf = A[k]; A[k] = B[l][m]; B[l][m] = buf; printf("\n Change [%2d] in matrix on [%2d] in array\n", A[k], B[l][m]); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с I/O, генерацией случайных чисел и временем
- Определяем количество элементов массива и матрицы
- Инициализируем переменные для хранения индексов максимальных элементов
- Инициализируем генератор случайных чисел текущим временем
- Заполняем массив и матрицу случайными числами
- Поиск индексов максимальных элементов в массиве и матрице с помощью одного цикла
- Обмениваем местами максимальные элементы массива и матрицы
- Выводим результат на экран
- Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д