Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.71
Arum
1 / 1 / 0
Регистрация: 23.05.2010
Сообщений: 5
#1

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

23.05.2010, 23:07. Просмотров 3191. Ответов 7
Метки нет (Все метки)

Задание:Дан массив чисел. Найти минимальный элемент массива и определить его местоположение.

у меня программка неправильное значение показывает...
Когда компилируешь ошибок нет и минимальный элемент он правильно находит...но вот его местоположение показывает неверно должнобыть 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";
 }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2010, 23:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти минимальный элемент массива и определить его местоположение (C++):

Найти минимальный элемент массива и его индексы - C++
Динамический массив. Задание Найти минимальный элемент массива и его индексы. Минимальный я нашел. Не могу найти индекс ,если находит...

Найти минимальный элемент массива и его порядковый номер. - C++
Дан массив целых чисел. Найти минимальный элемент массива и его порядковый номер. #include&lt;stdio.h&gt; #include&lt;conio.h&gt; ...

Найти минимальный элемент массива и сменить его знак - C++
Найти минимальный элемент массива, сменить у него знак и поменять местами с первым элементом. PS: Выккладываю 2 скрина - там код....

Найти минимальный элемент массива и вывести на экран его столбец и строку - C++
Помогите,как найти минимальный элемент массива и вывести на экран его столбец и строку? Срочно очень,экзамен и не могу с этим справится

Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть - C++
а)Дана последовательность n элементов в виде массива. Найти минимальный элемент массива,паставить его на первое место,остальные...

Найти минимальный элемент массива и упорядочить все элементы левее его по убыванию, а правее – по возрастанию - C++
Реализовать функцию для обработки массива целых чисел. Функция находит минимальный элемент массива и сортирует все элементы левее его по...

7
chum
51 / 50 / 2
Регистрация: 19.01.2010
Сообщений: 139
23.05.2010, 23:09 #2
Вы ошиблись разделом форума: здесь Delphi...
0
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)]
- значение этого элемента.
0
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";
 }
Удачи вам
0
vladislavchick
35 / 35 / 1
Регистрация: 22.05.2010
Сообщений: 107
24.05.2010, 14:42 #5
В инициализации цикла for всё правильно. Нет смысла сравнивать первый элемент с самим собой.
0
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
24.05.2010, 15:03 #6
Цитата Сообщение от vladislavchick Посмотреть сообщение
В инициализации цикла for всё правильно. Нет смысла сравнивать первый элемент с самим собой.
Имелась ввиду инициализация i не внутри цикла, а при объявлении переменной (в for с i все в порядке).
Не знаю, как вы, но я вижу нецелесообразным дважды инициализировать переменные min и nmin, тем более внутри цикла for.
Возможно, я и ошибаюсь.
0
neske
1503 / 870 / 84
Регистрация: 26.03.2010
Сообщений: 2,985
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;
}
0
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"; }
0
24.05.2010, 18:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2010, 18:28
Привет! Вот еще темы с ответами:

Сформировать одномерный массив Х из положительных элементов матрицы А, найти минимальный элемент массива Х и его номер - C++
Доброго всем времени суток) никак не могу создать массив из матрицы( кто поумнее меня , помогите плиз) Вот задание: ...

Среди элементов одномерного массива, имеющих нечетные значения, найти минимальный элемент и его номер - C++
Написать программу используя функции, но не использовать указатели. 1. Среди элементов одномерного массива, имеющих нечетные значения,...

В заданной матрице найти максимальный элемент; вывести на экран его значение и местоположение - C++
Друзья, добрый вечер. Задача создать двумерный массив 3х4, что бы в массиве находился максимальный элемент и его координаторы. Есть...

Найти максимальный элемент матрицы расположенный выше побочной диагонали и его местоположение - C++
2d массив C++ Добавлено через 12 минут Дана матрица размером . Добавлено через 2 часа 25 минут Максимальный среди элементов...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru