Member 13739089 Ответов: 3

Напишите программу на языке C++, чтобы найти положение наибольшего числа в массиве.


я не получаю точного значения индекса.
П. С.: Я нищий.

Что я уже пробовал:

#include<iostream>
using namespace std;
main()
{
    int c[7],i,l,n,p;
    cout<<"Enter size of the array:"<<endl;
    cin>>n;
    cout<<"enter the elements"<<endl;

    for(i=0;i<n;i++) //i =index
    {
        cin>>c[i];
    }
    l=c[0];
    for(i=1;i<n;i++)
    {
        if (l<c[i])
        {
            l=c[i];
            break;
        }
    }
    p=0;
    p=i++;
    cout<<p<<endl;
}

на Н=5
элемнц= 6 7 8 7 9
im getting index=3 ;(
пожалуйста, помогите....

3 Ответов

Рейтинг:
1

CPallini

Ты знаешь C++ у вас ведь есть библиотека, не так ли?

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
  vector <int> v;
  while (true)
  {
    int i;
    cout << "enter next integer (a letter to stop entering): " << endl;
    cin >> i;
    if ( ! cin ) break;
    v.push_back(i);
  }

  if ( v.size() > 0)
    cout << "maximum is " << *max_element(v.begin(), v.end()) << endl;
}


Rick York

Лично я считаю, что новичкам лучше изучить базовые алгоритмы, прежде чем они перейдут в стандартную библиотеку.

CPallini

Однако они также должны знать, что библиотека мягко (и надежно) предоставляет.

Рейтинг:
0

Patrice T

Ваш алгоритм ошибочен. Вы перестаете искать максимум, когда находите новый, но вы не знаете, есть ли еще один после этого.

При обнаружении нового максимума необходимо сохранить новый максимум в переменной, а его положение-в другой.

Вам нужно изучить отладчик, он поможет вам понять, что не так в вашем коде.
[Обновление]

Цитата:
не могли бы вы подсказать мне, как выучить отладчик?

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]
Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.


Member 13739089

я согласен с вами.....
не могли бы вы подсказать мне, как выучить отладчик?

CPallini

5.

Patrice T

grazie mille
О единственных словах, которые я знаю по-итальянски :)

CPallini

Де рьен!

Рейтинг:
0

Rick York

Во - первых, не забудьте использовать тег pre для правильного форматирования кода при его публикации.

Ваш алгоритм неисправен. Что вам нужно сделать, так это сохранить индекс самого большого элемента, и вам нужно пройти весь список при поиске. Не вырывайся из него. Кроме того, не используйте имена переменных из одних букв для всего. Это не помогает понять код. Похоже, что у вас есть часть ввода данных, работающая нормально, так что вот цикл, который вы можете попробовать :

int largest = 0;           // initialize to first item index
for( i = 1; i < n; i++ )   // start loop at second item
{
    if( c[largest] < c[i] )
        largest = i;       // save index of largest item
}

cout << "largest index is " << largest << endl;
Ключевым моментом является то, что вы хотите знать индекс. Вы всегда можете получить доступ к значениям снова, когда захотите, но вам нужно отслеживать индекс самого большого значения для сравнений и пересекать весь массив.


Member 13739089

спасибо...