Форум программистов, компьютерный форум CyberForum.ru

Индекс минимального элемента - C++

Восстановить пароль Регистрация
 
ZubSam
12 / 12 / 1
Регистрация: 24.03.2012
Сообщений: 238
14.10.2012, 09:29     Индекс минимального элемента #1
В данной задаче мне нужно найти индекс минимального элемента , хотелось бы понять свою ошибку потому что программка мягко говорят не работает ) и можно ли использовать while внутри for ?)
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
38
39
#include <iostream>
using namespace std;
int main()
{
    int arr[100];
    int n;
    cin>>n;
    int min;
    int index=0;
 
    for(int i =0;i<n;i++)
    {
        cin>>arr[i];
    }
    min=arr[0];
    for(int i =0;i<n;i++)
    {
        
        if(min>arr[i])
        {
            min=arr[i];
            
        }
        
    }
 
    for(int i =0;i<n;i++)
    {
        while(min!=arr[i])
        {
        index++;
        }
    }
 
 
    cout<<index<<endl;
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.10.2012, 09:39     Индекс минимального элемента #2
Цитата Сообщение от ZubSam Посмотреть сообщение
можно ли использовать while внутри for ?
Можно.
ZubSam
12 / 12 / 1
Регистрация: 24.03.2012
Сообщений: 238
14.10.2012, 09:43  [ТС]     Индекс минимального элемента #3
я уже нашел минимальный элемент и теперь снова иду по циклу , внутри цикла завожу еще один и второй цикл будет продолжаться пока минимальный элемент не равен элементу в массиве и в этот момент я виду счетчик который записывает количество шагов , если я правильно понял) так почему не работает?!)
Цитата Сообщение от ZubSam Посмотреть сообщение
for(int i =0;i<n;i++)
{
while(min!=arr[i])
{
index++;
}
}
Raxxell
10 / 10 / 1
Регистрация: 27.07.2010
Сообщений: 107
14.10.2012, 09:44     Индекс минимального элемента #4
А если в 22 строке поставить
C++
1
index=i
Разве это не решит задачу?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.10.2012, 09:48     Индекс минимального элемента #5
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
#include <iostream>
using namespace std;
 
int main()
{
    int arr[100];
    int n;
    cin >> n;
    
    int min;
    int index = 0;
    for(int i = 0; i < n; i++)
    {
        cin >> arr[i];
    }
    
    min = arr[0];
    for(int i =1; i < n; i++)
         if(min > arr[i]) index = i;
            
    cout << index << " " << arr[index] << endl;
    system("pause");
    return 0;
}
ZubSam
12 / 12 / 1
Регистрация: 24.03.2012
Сообщений: 238
14.10.2012, 09:49  [ТС]     Индекс минимального элемента #6
Цитата Сообщение от Raxxell Посмотреть сообщение
Разве это не решит задачу?
черт, да решит...
спасибо)
не видел самого очевидного)
но все ровно хотелось понять ошибку в своем коде)
Raxxell
10 / 10 / 1
Регистрация: 27.07.2010
Сообщений: 107
14.10.2012, 10:43     Индекс минимального элемента #7
Цитата Сообщение от ZubSam Посмотреть сообщение
черт, да решит...
спасибо)
не видел самого очевидного)
но все ровно хотелось понять ошибку в своем коде)
Давай рассмотрим твой цикл на русском языке:

ПОКА min не равно arr[i]
{
index +1
}

Получается, что он как найдет минимальное число, остановится.

А если там их 2 числа?

По идее, должен цикл так работать.
ZubSam
12 / 12 / 1
Регистрация: 24.03.2012
Сообщений: 238
14.10.2012, 10:45  [ТС]     Индекс минимального элемента #8
Цитата Сообщение от Raxxell Посмотреть сообщение
По идее, должен цикл так работать.
я тоже думал) но почему то не пашет)
Raxxell
10 / 10 / 1
Регистрация: 27.07.2010
Сообщений: 107
14.10.2012, 10:50     Индекс минимального элемента #9
А если попробовать do while?
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
14.10.2012, 11:03     Индекс минимального элемента #10
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
#include <iostream>
using namespace std;
 
int main()
{
    int arr[100];
    int n;
    cin >> n;
    
    int min;
    int index = 0;
    for(int i = 0; i < n; i++)
    {
        cin >> arr[i];
    }
    
    min = arr[0];
    index = 0;
    for(int i =1; i < n; i++)
         if(min > arr[i]) 
         {
            min = a[i];  // минимальный элемент
            index = i;   // его индекс
         }
            
    cout << index << " " << arr[index] << endl;
    system("pause");
    return 0;
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
14.10.2012, 11:36     Индекс минимального элемента #11
Зачем хранить и индекс и значение, на которое он указывает?
C++
1
2
3
4
int min_index = 0;
for ( int i = 1; i < num_elements; ++i )
    if ( arr[min_index] > arr[i] )
        min_index = i;
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
14.10.2012, 11:50     Индекс минимального элемента #12
Цитата Сообщение от easybudda Посмотреть сообщение
Зачем хранить и индекс и значение, на которое он указывает?
не понятно. если не запоминать минимальное значение то тогда нельзя узнать индекс. вот например есть такой массив:
5 4 7 2 1 9 8 3
min_index перед входом в цикл будет ноль.
после первого прохода он станет 1
после второго не изменится
после третьего min_index будет 3
после четвертого он уже будет 4
и т.д.
а уже после всего прохода он окажется 7!
Но ведь минимальный элемент в этом массиве равен 1 а его индекс 4 а не 7
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.10.2012, 12:12     Индекс минимального элемента #13
Цитата Сообщение от V.A.L.I.D Посмотреть сообщение
если не запоминать минимальное значение то тогда нельзя узнать индекс
Запоминать нужно индекс минимального значения, а не само значение (о чём easybudda и пишет). Зная индекс, получить само значение не сложно:
C++
1
arr[index];
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2012, 12:20     Индекс минимального элемента
Еще ссылки по теме:

Найти индекс минимального элемента главной диагонали матрицы C++
Найти индекс минимального элемента двумерного массива C++
C++ Найти индекс минимального элемента массива

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

Или воспользуйтесь поиском по форуму:
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
14.10.2012, 12:20     Индекс минимального элемента #14
спасибо. я кажется понял.
Yandex
Объявления
14.10.2012, 12:20     Индекс минимального элемента
Ответ Создать тему
Опции темы

Текущее время: 09:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru