Функция выводящая на экран наибольшее число двух массивов

программа в которой функция max(int mass[5],int mass1[5]) выводит наибольшее число из двух массивов. Элементы массива вводятся с клавиатуры. Помогите, пожалуйста, найти ошибки, и подскажите как это можно исправить.

#include <iostream>

using namespace std;
void max (int mass[5], int mass1[5])
{
  int maxm = 0;
  for (int i = 0; i < 5; i++)
    {
      if (mass[i] > maxm)
      maxm = mass[i];
    }
  for (int j = 0; j < 5; j++)
    {
      if (mass1[j] > maxm)
      maxm = mass1[j];
    }
  cout << maxm;
}

int main ()
{
  int mass[5] = { };
  int mass1[5] = { };
  for (int i = 0; i < 5; i++)
    {
      cin >> mass[i];
    }
  for (int j = 0; j < 5; j++)
    {
      cin >> mass1[j];
    }
  max(int mass[5], int mass1[5]);
 
  return 0;
}

Ответы (3 шт):

Автор решения: DmitryK

Ваша функция должна найти сначала максимальный элемент одного массива, а потом проверить есть ли элементы большие этого во втором массиве. Или сразу сравнивать элементы обоих массивов с максимальным. Т.е. массивы нужно перебрать, в одном цикле, а не в двух вложенных циклах.
И переменную для поиска максимального инициализируют первым значением из массива, а не нулем.
Ну и в конце функции вы наверное хотели вывести значение максимального элемента, а не ввести?
Как-то так:

void max (int mass[5], int mass1[5])
{
    int maxm = mass[0];
    for(int i = 0; i < 5; i++)
    {
        if (mass[i] > maxm)
            maxm = mass[i];
        if (mass1[i] > maxm)
            maxm = mass1[i];
        
    }
    cout << maxm;
}

А в принципе, если оптимизировать, можно обойтись вообще без функции и без массивов (если с массивами больше не надо делать никаких операций, то и хранить их не надо) - поиск максимального элемента можно делать прямо при вводе.

int main()
{
    int elem;
    int maxm = INT_MIN;
    for (int i = 0; i < 5; i++)
    {
        cin >> elem;
        if(maxm < elem)
            maxm = elem;
    }

→ Ссылка
Автор решения: Andrei

Такую задачу можно решить примерно так:

#include <iostream>


using namespace std;

int max(int *mass, int *mass1, const int size)
{
    int maxm = mass[0];

    for (size_t i = 0; i < size; ++i)
    {
        if (mass[i] >  mass1[i])
        {
            if (mass[i] > maxm) maxm = mass[i];
        }
        else if (mass1[i] > mass[i])
        {
            if (mass1[i] > maxm) maxm = mass1[i];
        }
        else
        {
            if (mass[i] > maxm) maxm = mass[i];
        }
    }

    return maxm;

}


int main()
{  
    const int N = 5;
    int *mass = new int[N];
    int *mass1 = new int[N];

    cout << "Array 1" << endl;
    for (int i=0;i<5;i++) 
    {
        cout << "Enter number: ";
        cin>> mass[i];
    }

    cout << "Array 2" << endl; 
    for (int j=0; j<5;j++)
    {
        cout << "Enter number: ";
        cin>>mass1[j];
    }

    cout << "Max number: " << max(mass, mass1, N) << endl;

    delete []mass;
    delete []mass1;

    return 0;
}
→ Ссылка
Автор решения: Miracle-

В принципе, можно обойтись и без функции. Только не забудьте удалить вызов в аргументах max_element().

#include <iostream>
#include <algorithm>
#include <cstddef>
#include <cstdint>

bool compare_array(const std::uint32_t a,const std::uint32_t b) {
    return (a < b);
}

int main() {
    const int size = 5;
    std::uint32_t* first = new std::uint32_t[size];
    std::uint32_t* second = new std::uint32_t[size];

    std::cout << "First array.\n";
    for (std::size_t i{ 0 }; i < size; ++i) {
        std::cout << "Enter a number: ";
        std::cin >> first[i];
    }

    std::cout << "\nSecond array.\n";
    for (std::size_t i{ 0 }; i < size; ++i) {
        std::cout << "Enter a number: ";
        std::cin >> second[i];
    }

    std::cout << "The largest element in first array is: " << *std::max_element(first, first + size,compare_array) << '\n';
    std::cout << "The largest element in second array is: " << *std::max_element(second, second + size,compare_array) << '\n';

    delete[] first;
    delete[] second;
    return 0;
}
→ Ссылка