Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/41: Рейтинг темы: голосов - 41, средняя оценка - 4.61
 Аватар для Arum
1 / 1 / 0
Регистрация: 23.05.2010
Сообщений: 5

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

23.05.2010, 23:07. Показов 8727. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.05.2010, 23:07
Ответы с готовыми решениями:

Найти в матрице минимальный элемент и определить его местоположение
Дана матрица целых чисел размером nхm. Найти в ней минимальный элемент и определить его местоположение (номер строки и номер столбца). Если...

Найти минимальный элемент среди отрицательных чисел массива и его местоположение в массиве
Доброго времени суток знатоки! Помогите решить задачу: Дан массив Х(N, M). Найти минимальный элемент среди отрицательных чисел массива и...

Найти последний минимальный элемент вектора и указать его местоположение
Найти последний минимальный элемент вектора и указать его местоположение!!!!

7
 Аватар для chum
111 / 51 / 5
Регистрация: 19.01.2010
Сообщений: 139
23.05.2010, 23:09
Вы ошиблись разделом форума: здесь Delphi...
0
35 / 35 / 8
Регистрация: 22.05.2010
Сообщений: 107
24.05.2010, 13:59
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
302 / 160 / 62
Регистрация: 27.02.2010
Сообщений: 317
24.05.2010, 14:27
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
35 / 35 / 8
Регистрация: 22.05.2010
Сообщений: 107
24.05.2010, 14:42
В инициализации цикла for всё правильно. Нет смысла сравнивать первый элемент с самим собой.
0
302 / 160 / 62
Регистрация: 27.02.2010
Сообщений: 317
24.05.2010, 15:03
Цитата Сообщение от vladislavchick Посмотреть сообщение
В инициализации цикла for всё правильно. Нет смысла сравнивать первый элемент с самим собой.
Имелась ввиду инициализация i не внутри цикла, а при объявлении переменной (в for с i все в порядке).
Не знаю, как вы, но я вижу нецелесообразным дважды инициализировать переменные min и nmin, тем более внутри цикла for.
Возможно, я и ошибаюсь.
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
24.05.2010, 15:10
Такой вариант еще:

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  [ТС]
Огромноное спасибо!!!!!
Правильный код...
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.05.2010, 18:28
Помогаю со студенческими работами здесь

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

Определить минимальный элемент массива и его порядковый номер, заменить минимальный элемент массива нулём
Определить минимальный элемент массива С и его порядковый номер, замените минимальный элемент массива нулём. Массив С(К),...

Найти минимальный элемент массива B(15) и определить его порядковый номер
Помогите с задачкой на массив: Найти минимальный элемент массива B(15) и определить его порядковый номер.

Найти наименьший элемент массива и его местоположение
Здравствуйте. Помогите, пожалуйста, решить задачи. что-то 2 из 10 задач ни как не хотят решаться :( 1.Составить программу для...

Найти в матрице наименьший элемент и определить его местоположение.
Выручайте, мне позарез надо программу: Дана матрица n*m, состоящая из натуральных чисел. Найти в ней наименьший элемент и определить ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru