2015-03-05 5 views
-5

В моем классе C++ я должен использовать эту функцию «int mymaximum (int a [], int numberOfElements);», чтобы найти максимальное число в Массив. Функция должна вернуть наибольшее значение в этом массиве.Как найти максимальное число в массиве с помощью функции

Это код, который у меня есть до сих пор без функции, которую мне нужно использовать. Спасибо заранее и извините за грязный код, все еще учась.

#include <iostream> 

using namespace std; 

int main() { 
int Array[] = {23,2,90,53,38}; 
int mymaximum = 0; 

for(int i = 0; i < 5; i++){ 
    if(Array[i] > mymaximum){ 
     mymaximum = Array[i]; 
    } 
} 
cout << "The Max is: " << mymaximum << "\n"; 
return 0; 
} 
+4

Что делать, если в массиве есть все отрицательные числа, лучше инициализировать mymaximum как int mymaximum = Array [0] – sashas

ответ

2

Просто оберните вокруг логики, чтобы найти максимум в функции. Как это:

int mymaximum(int a[], int numberOfElements) 
{ 
    // moved code from main() to here 
    int mymaximum = 0; 

    for(int i = 0; i < numberOfElements; i++) 
    { 
     if(a[i] > mymaximum) 
     { 
      mymaximum = a[i]; 
     } 
    } 
    return mymaximum; 
} 

Асо, чтобы поддержать отрицательные числа, изменить логику так:

int mymaximum(int a[], int numberOfElements) 
    { 
     // moved code from main() to here 
     int mymaximum = a[0]; 

     for(int i = 1; i < numberOfElements; i++) 
     { 
      if(a[i] > mymaximum) 
      { 
       mymaximum = a[i]; 
      } 
     } 
     return mymaximum; 
    } 

Обратите внимание, что теперь я инициализировать максимум с первой записи в массиве!

В main() вызове метода, как это:

int main() { 
    int Array[] = {23,2,90,53,38}; 
    cout << "The Max is: " << mymaximum(Array, sizeof(Array)/sizeof(Array[0])) << "\n"; 
    return 0; 
} 
+0

Как насчет отрицательных чисел? – TriHard8

+1

Был в режиме редактирования! Добавлено сейчас. :) – CinCout

+0

Я знаю, что это тривиально. Каждый человек, который отправил ответ, совершил ту же ошибку. – TriHard8

3

Я покажу общую структуру без решения домашних заданий для вас:

#include <iostream> 

using namespace std; 

int mymaximum(int a[], int numberOfElements) { 
    int ret = 0; 
    // compute the maximum and store in `ret' 
    ... 
    return ret; 
} 

int main() { 
    int Array[] = {23,2,90,53,38}; 
    cout << "The Max is: " << mymaximum(Array, sizeof(Array)/sizeof(Array[0])) << "\n"; 
    return 0; 
} 

В случае, если вам интересно, sizeof(Array)/sizeof(Array[0]) вычисляет размер массива, так что вы не должны hard-code это здесь.

+0

В качестве комментария к сомнительной ценности вам не нужны скобки вокруг этих аргументов оператора sizeof' (они необходимы для * type * arguments). –

0

Заменить структуру for петли с этим:

int max(0); 
max = mymaximum(Array, 5); 

В функции mymaximum использовать этот код:

int max(a[0]); 
for(auto i(1); i < numberOfElements; ++i) 
    if(a[i] > max) 
     max = a[i]; 

return max; 
+0

* «замените ваш цикл' for' на ... 'mymaximum (Array, 5);' '* не совсем прав ...1) вызов функции, а не сохранение результата, оставит локальную переменную без изменений и 2) их имена столкнутся, поэтому 'mymaximum (Array, 5)' попытается что-то сделать с локальной переменной, а не использовать эту функцию. –

+0

@TonyD да, я был слишком обеспокоен тем, что все остальные не решались на негативы, ха-ха. Я исправил это, спасибо. – TriHard8

1

Просто переместите свою логику в нужную функциональность на следующие:

int mymaximum(int Array[], int numberOfElements) 
{ 
    int mymaximum = 0; 

    for(int i = 0; i < numberOfelements; i++){ 
     if(Array[i] > mymaximum){ 
      mymaximum = Array[i]; 
     } 
    } 
    return mymaximum; 
} 

Put что выше int main(), то внутри main() заменить удаленный код с:

int mymaximum = ::mymaximum(Array, 5); 

(:: бы не нужны, если либо локальная переменная или функция была другая имена).

Затем вы должны применить предложение в комментарии sasha для использования [0] в качестве первоначального предположения по максимуму.

+0

Ваш код не работает для массива, заполненного отрицательными номерами. – TriHard8

+2

Честно говоря, это не работает вообще, в этой функции нет «возврата». – Blindy

+2

@ TriHard8: Я знаю это - это было ясно указано в последней строке моего ответа. OP не знает, как написать функцию - нет оснований полагать, что он не может следовать совету для поддержки отрицательных чисел, хотя .... –

Смежные вопросы