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

Найти минимальный элемент массива и определить его местоположение - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.71
Arum
 Аватар для Arum
1 / 1 / 0
Регистрация: 23.05.2010
Сообщений: 5
23.05.2010, 23:07     Найти минимальный элемент массива и определить его местоположение #1
Задание:Дан массив чисел. Найти минимальный элемент массива и определить его местоположение.

у меня программка неправильное значение показывает...
Когда компилируешь ошибок нет и минимальный элемент он правильно находит...но вот его местоположение показывает неверно должнобыть 5,а он показывает 8...
Подскажите пожалуйста где ошибка!?!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdio.h"
#include <iostream>
using namespace std;
void main()
{
 setlocale (LC_ALL,"Russian");
   int i=1;
   int b[] = {8,9,0,-3,5,-7,-1};
   int n = sizeof(b)/sizeof(b[0]);
   int min = b[i];
   int nmin = i;
   for (min=b[0],nmin=0,i=1; i < n; i++)
if (b[i] < min)
   {
       min = b[i];nmin=i;
   }
   for (int i = 0; i < n; i++)
       cout << " " << b[i];
cout << endl << "Минимальный элемент: " << min<<"\n";
cout<<"Его номер: "<<i+1<<"\n";
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2010, 23:07     Найти минимальный элемент массива и определить его местоположение
Посмотрите здесь:

Сформировать одномерный массив Х из положительных элементов матрицы А, найти минимальный элемент массива Х и его номер C++
C++ Найти минимальный элемент массива и вывести на экран его столбец и строку
Найти минимальный элемент массива и его порядковый номер. C++
C++ Найти максимальный элемент матрицы расположенный выше побочной диагонали и его местоположение
Найти минимальный по значению элемент и записать его на начало массива, высвободив для него место путем смещ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
chum
 Аватар для chum
51 / 50 / 2
Регистрация: 19.01.2010
Сообщений: 139
23.05.2010, 23:09     Найти минимальный элемент массива и определить его местоположение #2
Вы ошиблись разделом форума: здесь Delphi...
vladislavchick
35 / 35 / 1
Регистрация: 22.05.2010
Сообщений: 107
24.05.2010, 13:59     Найти минимальный элемент массива и определить его местоположение #3
C++
1
2
3
4
5
6
int min(int size, int array[]) {
    int result = 0;
    for (int i = 1; i < size; i++)
        if (array[i] < array[result]) result = i;
    return result;
}
Функция принимает количество элементов массива и его имя, а возвращает индекс минимального элемента массива. Значит,
C++
1
min(n, array)
- индекс минимального элемента массива array из n элементов, а
C++
1
array[max(n, array)]
- значение этого элемента.
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
24.05.2010, 14:27     Найти минимальный элемент массива и определить его местоположение #4
Arum, ошибка у вас не одна:
-массив индексируется, начиная с 0, а у вас с 1:
C++
1
for (min=b[0],nmin=0,i=1; i < n; i++)
также не понятно, зачем вы в вышестоящей строчке вновь присваиваете min и nmin начальные значения - вы их уже неправильно присвоили в
C++
1
2
 int min = b[i];
   int nmin = i;
изначально i вы присвоили 1, получается 0-й элемент вы просто игнорируете (а если бы именно он был минимальным?..)
и последнее: зачем вы выводите как индекс минимального элемента i+1? Ведь вы его посчитали в переменной nmin... ее и выводите. (а i+1 у вас выводит 8 позицию, т.к. предидущий цикл остановил значение i на 7 (последней) позиции, а вы к ней еще прибавили 1.
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
void main()
{
 setlocale (LC_ALL,"Russian");
   int i=0;
   int b[] = {8,9,0,-3,5,-7,-1};
   int n = sizeof(b)/sizeof(b[0]);
   int min = b[i];
   int nmin = i;
   for (i=1; i < n; i++)
       if (b[i] < min)
       {
         min = b[i];
         nmin=i;
       }
   for (int i = 0; i < n; i++)
       cout << " " << b[i];
 
    cout << endl << "Минимальный элемент: " << min<<"\n";
    cout<<"Его номер: "<<nmin<<"\n";
 }
Удачи вам
vladislavchick
35 / 35 / 1
Регистрация: 22.05.2010
Сообщений: 107
24.05.2010, 14:42     Найти минимальный элемент массива и определить его местоположение #5
В инициализации цикла for всё правильно. Нет смысла сравнивать первый элемент с самим собой.
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
24.05.2010, 15:03     Найти минимальный элемент массива и определить его местоположение #6
Цитата Сообщение от vladislavchick Посмотреть сообщение
В инициализации цикла for всё правильно. Нет смысла сравнивать первый элемент с самим собой.
Имелась ввиду инициализация i не внутри цикла, а при объявлении переменной (в for с i все в порядке).
Не знаю, как вы, но я вижу нецелесообразным дважды инициализировать переменные min и nmin, тем более внутри цикла for.
Возможно, я и ошибаюсь.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
24.05.2010, 15:10     Найти минимальный элемент массива и определить его местоположение #7
Такой вариант еще:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <algorithm>
 
int main ()
{
    const int size=10;
    int MAS[size]={2,9,6,4,1,11,15,7,10,8};
    int *min = std::min_element (MAS, MAS+size);
    int index_min = min-MAS;
 
    std::cout << "Min: " << *min << std::endl;
    std::cout << "Index: " << index_min << std::endl;
    system ("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2010, 18:28     Найти минимальный элемент массива и определить его местоположение
Еще ссылки по теме:

C++ Найти минимальный элемент массива и его индексы
C++ Среди элементов одномерного массива, имеющих нечетные значения, найти минимальный элемент и его номер
Вычислить минимальный элемент массива и заменить его C++

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

Или воспользуйтесь поиском по форуму:
Arum
 Аватар для Arum
1 / 1 / 0
Регистрация: 23.05.2010
Сообщений: 5
24.05.2010, 18:28  [ТС]     Найти минимальный элемент массива и определить его местоположение #8
Огромноное спасибо!!!!!
Правильный код...
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
#include "stdio.h"
#include <iostream>
using namespace std;
void main()
{
 setlocale (LC_ALL,"Russian");
   int i=1;
   int b[] = {8,9,0,-3,5,-7,-1};
 
   //определим размер массива
   int n = sizeof(b)/sizeof(b[0]);
 
   //объявим переменную для хранения минимального элемента-min
   //объявим переменную для хранения его номера-nmin
   //присвоим начальное значение, равное нулевому элементу
   //а в nmax его номер(то есть ноль)
   int min = *b;//*b=b[0]
   int nmin = 0;
//просмотрим все элементы начиная с 1-ого элемента
   for (int i=1; i < n; i++)
if (b[i] < min)
       //если i-й элемент будет меньше
       //текущего минимального значения,
   {    
       //то изменим это минимальное значение
       //на значение i-го элемента
       //а его номер будет равен i
       
          min = b[i];nmin=i;
   }
    
   //выведем на экран элементы массива
   for (int i = 0; i < n; i++)
       cout << " " << b[i];
   //и минимальный элемент
cout << endl << "Минимальный элемент: " << min<<"\n";
// и его номер
cout<<"Его номер: "<<nmin+1<<"\n"; }
Yandex
Объявления
24.05.2010, 18:28     Найти минимальный элемент массива и определить его местоположение
Ответ Создать тему
Опции темы

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