Поменять местами максимальные элементы массива и матрицы - 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;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с I/O, генерацией случайных чисел и временем
  2. Определяем количество элементов массива и матрицы
  3. Инициализируем переменные для хранения индексов максимальных элементов
  4. Инициализируем генератор случайных чисел текущим временем
  5. Заполняем массив и матрицу случайными числами
  6. Поиск индексов максимальных элементов в массиве и матрице с помощью одного цикла
  7. Обмениваем местами максимальные элементы массива и матрицы
  8. Выводим результат на экран
  9. Возвращаем 0, чтобы указать, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5
Похожие ответы