Найти максимальное значение массива - C (СИ) (73194)

Узнай цену своей работы

Формулировка задачи:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
 
int vvod(int m[5], int i, int max);
 
int main()
{
    setlocale(LC_ALL, "rus");
    int m[5];
    int c, i, max;
 
    do{
        printf("1 - Ввод 1 массива\n");
        printf("2 - Ввод 2 массива\n"); // это пока чтобы было, потом доработаю
        printf("3 - Выход\n");
        printf("Ввод: ");
        scanf("%d", &c);
        switch(c)
        {
        case 1:
            printf("%d", vvod(m[5], i, max));
            break;
        default:
            printf("Ошибка ввода\n");
            break;
        }
    }while(c == 3);
}
 
int vvod(int m[5], int i, int max)
{
    max = m[0];
    for(i = 1; i < 5; i++)
    {
        printf("Введите число: ");
        scanf("%d", m[i]);
        if (m[i] > max)
        {
            max = m[i];
        }
    }
    printf("Максимальное число: %d", max);
    return max;
}
Тренирую свои навыки в Си Писал программу, которая находит максимальное значение массива Когда запускаю, ввожу 1, то сразу выбивает ошибку и выводит на строку 34 Вроде должно же работать, в чем ошибка?

Решение задачи: «Найти максимальное значение массива»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
#include <limits.h>
 
enum constants {SZ = 5};
 
int vvod(int m[], int sz);
 
int main()
{
    int m[SZ];
    int c;
 
    setlocale(LC_ALL, "");
    do{
        printf("1 - Ввод 1 массива\n");
        printf("2 - Ввод 2 массива\n"); // это пока чтобы было, потом доработаю
        printf("3 - Выход\n");
        printf("Ввод: ");
        scanf("%d", &c);
        switch(c)
        {
        case 1:
            vvod(m, SZ);
            break;
        default:
            printf("Ошибка ввода\n");
            break;
        }
    }while(c != 3);
}
 
int vvod(int m[], int sz)
{
    int i, max;
    max = -INT_MAX;
    for(i = 0; i < sz; i++)
    {
        printf("Введите число: ");
        scanf("%d", &(m[i]));
        if (m[i] > max)
        {
            max = m[i];
        }
    }
    printf("Максимальное число: %d", max);
    return max;
}

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

  1. Объединение всех необходимых заголовочных файлов.
  2. Создание перечисления для определения размера массива.
  3. Объявление функции ввода массива.
  4. Основной цикл программы с использованием do-while, который будет выполняться до тех пор, пока пользователь не введет 3.
  5. Ввод массива с помощью функции vvod.
  6. Функция vvod принимает два аргумента: массив и размер массива.
  7. Внутри функции vvod инициализируется переменная max значением -INT_MAX.
  8. Затем происходит проход по всем элементам массива с помощью цикла for.
  9. Каждый элемент массива сравнивается с текущим максимальным значением.
  10. Если текущий элемент больше максимального значения, то он становится новым максимальным значением.
  11. После прохода по всем элементам массива выводится максимальное значение.
  12. Функция возвращает найденное максимальное значение.
  13. В основной функции после вызова функции vvod происходит проверка введенного значения на предмет ошибки.
  14. Если введено некорректное значение, выводится сообщение об ошибке.
  15. Программа завершается после выхода из основного цикла.

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


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

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

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