0 / 0 / 0
Регистрация: 25.03.2019
Сообщений: 16
1

Найти наибольший элемент массива и его позицию

26.03.2019, 22:11. Показов 5788. Ответов 7
Метки нет (Все метки)

дано массив из N элементов. найти наибольший элемент и его позицию. не знаю как делать, помогите пожалуйста
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2019, 22:11
Ответы с готовыми решениями:

Найти наибольший элемент двумерного массива в каждой его строке
Дан масив из n x m элементов.Найти наибольший элемент массива в каждой строке #include...

Найти наибольший элемент числового массива А = (a1, a2, ..., aN) и его порядковый номер
{Найти наибольший элемент числового массива А = (a1, a2, ..., aN) и его порядковый номер. ...

Одномерный массив. Найти наибольший элемент массива и поменять его местами с наименьшим элементом
Дан массив из N чисел. Найти наибольший элемент массива и поменять его местами с наименьшим...

В массиве из 6 целых чисел найти наибольший элемент и поменять его местами с первым элементом массива
Очень прошу, помогите развязать: 1)В массиве из 6 целых чисел найти наибольший элемент и поменять...

7
8 / 7 / 1
Регистрация: 17.02.2019
Сообщений: 47
27.03.2019, 17:36 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// Пускай N=10, при необходимости можно будет организовать её ввод с клавиатуры 
#include <iostream>
using namespace std;
 
int main(int argc, char** argv) 
{
    int A[10], max=0, i=0, max_N=0;
   
  for (i=0; i<10; i++)
  
{cout<<"A["<<i+1<<"] = "<<endl; cin>>A[i];}
 
max=A[0]; //для начала пускай 1 элемент будет максимальным. Будем отталкиваться от этого
 
    for (i=0; i<10; i++)
   
  {if (A[i]>=max)  { max=A[i]; max_N=i; } }
  
      // дальше на случай, если у нас все числа минусовые и есть один или несколько 0
     // а у нас число не должно быть = 0, если же это не важно - то всё от if(max==0)
    // и до cout<<"Max........  можно не писать
 if (max==0)      
{     for (i=0; i<10; i++)
     
 {    
 if (A[i]!=0)  { max=A[i]; break; }  
 }
    for (i=1; i<10; i++)
    {       if (A[i]>max && A[i]!=0)  {  max=A[i]; max_N=i; }  
            if (max==0) { cout<<"Nekorektnie dannie, vse elementy = 0"; return 1; } 
    }
} 
 
 
    cout<<"Max element"<<max<<"Pozicia "<<max_N;
    
    return 0;}
0
5 / 5 / 1
Регистрация: 15.12.2015
Сообщений: 51
28.03.2019, 12:10 3
Можно сделать красивее и понятнее:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int main()
{
    const int N = 10;
    float arr[N], result;
    int i, resultInd;
    
    cout << "Enter array." << endl;
    for (i = 0; i < N; i++)
    {
        cout << i << " element: ";
        cin >> arr[i];
    }
 
    result = arr[0];
    resultInd = 0;
    for (i = 0; i < N - 1; i++)
        if (arr[i + 1] > result)
        {
            result = arr[i + 1];
            resultInd = i + 1;
        }
 
    cout << "The greatest element is: " << result << " with index " << resultInd << endl;
 
    system("pause");
    return 0;
}
2
1581 / 1014 / 307
Регистрация: 25.01.2019
Сообщений: 2,630
28.03.2019, 14:00 4
Цитата Сообщение от Марауль Посмотреть сообщение
Можно сделать красивее и понятнее:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
template <class T>
size_t find_index_of_max(T *arr, size_t size);
 
int main()
{
    const size_t N = 5;
    double arr[N] = { 2.3, 5.766, 999.8, 999.82, 23.5 };
 
    size_t index = find_index_of_max(arr, N);
    std::cout << "Max = " << arr[index] << " , index = " << index;
 
    system("pause");
    return 0;
}
 
template <class T>
size_t find_index_of_max(T *arr, size_t size)
{
    size_t result = 0;
    for(size_t i=0; i<size; ++i)
    {
        if(arr[i] > arr[result]) result = i;
    }
    return result;
}
0
5 / 5 / 1
Регистрация: 15.12.2015
Сообщений: 51
28.03.2019, 14:02 5
Folian, нормально, да)
0
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
28.03.2019, 14:06 6
Folian,
C++
1
2
3
4
5
6
7
#include <iostream>
#include <algorithm>
 
int main() {
    double arr[5]{ 2.3, 5.766, 999.8, 999.82, 23.5 };
    std::cout << "Index of max element: " << std::distance(arr, std::max_element(arr, std::end(arr)));
}
2
7421 / 5016 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
29.03.2019, 06:17 7
Марауль, в цикле суммировать единичку нет необходимости - находите индекс и при выводе добавляете +1.
забывайте про float и при вводе размера массива с клавиатуры применяйте динамический массив.

Luks_espnlz, такой код найдёт max элемент и выведет позицию первого (max элементов в массиве может быть несколько):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
int main()
{
    int n, imax=0;
    cout <<"n="; cin >>n;
 
    double*a = new double[n], max=0.0;
 
    cout << "Enter " << n << " elements:\n";
    for (int i = 0; i < n; i++)
      {
      cin >> a[i];
      if (i==0 || a[i]>max) {max=a[i];imax=i;}
      }  
      
    cout << "max=" << max << "  position=" << imax+1 << "\n";  
 
    delete[]a;
system("pause");
return 0;
}
0
8 / 7 / 1
Регистрация: 17.02.2019
Сообщений: 47
31.03.2019, 22:31 8
Цитата Сообщение от Yetty Посмотреть сообщение
Марауль, в цикле суммировать единичку нет необходимости - находите индекс и при выводе добавляете +1.
забывайте про float и при вводе размера массива с клавиатуры применяйте динамический массив.

Luks_espnlz, такой код найдёт max элемент и выведет позицию первого (max элементов в массиве может быть несколько):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
int main()
{
    int n, imax=0;
    cout <<"n="; cin >>n;
 
    double*a = new double[n], max=0.0;
 
    cout << "Enter " << n << " elements:\n";
    for (int i = 0; i < n; i++)
      {
      cin >> a[i];
      if (i==0 || a[i]>max) {max=a[i];imax=i;}
      }  
      
    cout << "max=" << max << "  position=" << imax+1 << "\n";  
 
    delete[]a;
system("pause");
return 0;
}
Хмм , а что, если все элементы равны?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2019, 22:31
Помогаю со студенческими работами здесь

Как добавить элемент в конец массива и расширить его на одну позицию?
как добавить элемент в конец? просидел 5 часов , прошустрил кучу сайтов и не сообразил. (через...

Вывести на экран наибольший элемент массива и его индекс
Нужно вывести наибольший элемент и его порядковый номер для каждого числа. Пожалуйста не нужно...

Найдите и запишите вместо первого элемента массива наибольший его элемент
Найдите и запишите вместо первого элемента массива наибольший элемент этого массива, а вместо...

Найти наибольший элемент заданной прямоугольной матрицы и его индексы
На С++ нужен код


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru