Перейти к содержимому

Как найти индекс минимального элемента массива c

  • автор:

найти индекс минимального элемента массива

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

  • Pirnazar
  • Тема
  • 12.10.2016
  • array c # массивы найтииндекснайтииндекс максимального элементамассиванайтииндексминимальногоэлементамассива
  • Ответы: 0
  • Раздел: C / C++ / C#

Номер min элемента, произведение элементов массива

Дан массив из N элементов (вещественные числа). Вычислить:

  1. номер минимального элемента массива;
  2. произведение элементов массива, расположенных между первым и вторым отрицательными элементами;
  3. преобразовать массив так, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом – элементы, все остальные.

Результат работы программы показан ниже:

// operations_array.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include #include using namespace std; int main(int argc, char* argv[]) < srand(time(NULL)); setlocale(LC_ALL, "rus"); int length_array; cout > length_array; float *arrayPtr = new float [length_array]; // одномерный динамический массив // заполняем одномерный массив случайными числами for (int counter = 0; counter < length_array; counter++) < arrayPtr[counter] = - 5.00 + ((rand() % 101) / 10.0); // генерируем случайные числа [-5, 5] cout cout arrayPtr[counter]) < min = arrayPtr[counter]; // минимальный элемент number_min = counter; // номер минимального элемента >> cout 0) // пока не нашли второе отрицательное число < product *= arrayPtr[counter]; // накапливаем произведение элементов counter++; >break; // выход из цикла for > > cout > // заполняем массив элементами, модуль которых больше 1 for (int counter = 0; counter < length_array; counter++) < if (abs(arrayPtr[counter]) >1) < relocation_arrayPtr[index] = arrayPtr[counter]; index++; >> // напечатать преобразованный массив cout cout 

CppStudio.com

Укажите количество элементов массива: 15 -1 3.2 -3.8 4.2 -3.9 3.2 4 -3.4 -4.4 2.8 -2.6 4.6 2 4.6 -3.1 номер минимального элемента = 9 произведение = 3.2 Преобразованный массив: -1 3.2 -3.8 4.2 -3.9 3.2 4 -3.4 -4.4 2.8 -2.6 4.6 2 4.6 -3.1

Следующие статьи помогут вам в решении данной задачи:

Дата: 12.09.2012

Поделиться:

Комментарии

Костя Сатив
int main() < setlocale(0,""); cout>size; double *arr=new double[size]; cout>arr[i]; > double min=0; int j=0; for(int i =0;iarr[i]) < min=arr[i]; j=i; >> cout > j+=1; for(int i =j;arr[i]>0;i++) < coutcout > > cout >
Кайл Брофловски
#include #include #include using namespace std; double* sort_arr(double* arr, int dim, int& min, double& mult); int _tmain(int argc, _TCHAR* argv[]) < double my_arr[]; int mmin<>; double mmult<>; double* aarr = sort_arr(my_arr, 16, mmin, mmult); for (int i = 0; i < 16; i++) < cout cout double* sort_arr(double* arr, int dim, int& min, double& mult) < using flag = bool; flag first_neg< false >; flag second_neg< false >; double min_val< *arr >; mult = 1; auto Abs = [](double a); listless_one; listgreater_one; for (int i = 0; i < dim; i++) < if (arr[i] < min_val) < min = i; min_val = arr[i]; >if (arr[i] < 0 && first_neg && !second_neg) second_neg = true; if (first_neg && (!second_neg)) mult *= arr[i]; if (arr[i] < 0 && !first_neg) first_neg= true ; if (Abs(arr[i]) < 1) less_one.push_back(i); else greater_one.push_back(i); >double* resarr = new double[dim]; for (int i = 0; i < dim; i++) < if (!less_one.empty()) < resarr[i] = arr[less_one.front()]; less_one.pop_front(); >else if (!greater_one.empty()) < resarr[i] = arr[greater_one.front()]; greater_one.pop_front(); >> return resarr; >
gornyyvladimir
#include #include #include #include #include #include #pragma hdrstop #pragma argsused int main(int argc, char* argv[]) < size_t N; cout>N; srand( time( 0 ) ); vector mas; double min = 10.0; size_t minindex,first,second; for(size_t i=0; irandomValue) < min = randomValue; minindex = i; >> copy( mas.begin(), mas.end(), ostream_iterator(cout," ") ); cout 0 && j break; > > for(size_t i=0; i > cout<<"Multiplication = "<
Adam1983
#include #include #include #include using namespace std; int main(int argc, char** argv) < setlocale (LC_ALL, "russian"); //определяем величину массива int N; cout >N; //выделяем динамическую память под массив double* arr = new double [N]; srand(time(0)); //заполняем массив случайными вещественными значениями от -10 до 10 for (int i(0); i //находим минимальное значение массива double temp=arr[0];//присваеваем значение первого элемента временной переменной int index; //сохраняем значение минимального элемента и его индекс в пеерменных for (int i(1); i //выводим результат на монитор cout for (int i(first+1); i //находим произведение между двумя отрицательными элементами массива и выводим на монитор temp=1; if ((second-first) <2) cout <<"между первыми двумя отрицательными значениями других значений нету\n\n"; else < for (int i(first+1); icout //сортировка массива, все значения по модулю меньше 1 перемещаем в начало массива. for (int i(0); ii ;j--) if (fabs (arr[i])>1 && fabs (arr[j])<1) swap (arr[i],arr[j]); //вывод на монитор отсортированного массива for (int i(0); i
petruska

06.11.2014 Мой вариант

// MYPROJECT.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) < srand(time(NULL)); // for real rand values int size=0; cout >size; double * pA=new double [size]; // create dyn array // init and show array cout cout pA[i] ) < Min=pA[i]; MinIndex=i; >> cout > // find and save index of thecond negative number for (int i=first+1; i < size; i++) < if (pA[i] < 0) < thecond=i; break; >> // sum values between indexes for (int i=first+1; i < thecond; i++) product+=pA[i]; cout > for (int i=0; i < size; i++) < if ( fabs(pA[i]) >= 1 ) < pA2[ind1+ind2]=pA[i]; ind2++; >> cout cout 
ValMan

03.08.2013 Почему бы не заменить 3-ю часть (54-87 строки) на 2 прогона исходного массива?

cout ; >; for (int counter = 0; counter < length_array; counter++) < if (abs( arr[counter] >1 ) < cout ; >;

Как найти индекс минимального элемента массива c

Поиск минимального элемента в массиве

Поиск минимального элемента в массиве

На вход дается количество элементов в массиве и сам массив. Требуется найти наименьший элемент в массиве. Решение будет выглядеть следующим образом:

int n; // n — количество элементов в массиве
int a[100]; // a — массив целых чисел, максимальный размер 100 элементов

cin >> n;
for (int i = 0; i < n; i++) // ввод массива
cin >> a[i];

int m = a[0];

for (int i = 0; i < n; i++)
if (a[i] < m)
m = a[i];

cout

Переменная m является текущим минимумом. Если более формально то на i — том шаге, m — это минимальное значение среди элементов с 0 по i. Изначально m равна
нулевому элементу массива.

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

Вот как это будет действовать, например, на массиве 3 9 7 2 0 4 -1 6:

Номер шага__________0 1 2 3 4 5 6 7
Элемент____________ 3 9 7 2 0 4 -1 6
Текущий минимум___3 3 3 2 0 0 -1 -1

В итоге получили -1.

Иногда хочется отдохнуть от программирования и решения задач. Можно сыграть в любимую игрушку, посмотреть фильм. Недавно нашел интересный сайт, онлайн игра покер на реальные деньги, где можно расслабиться и к тому же заработать. По-моему достаточно неплохой вариант сочетания приятного с полезным.

One Reply to “Поиск минимального элемента в массиве”

arai gg :

24. Ввести массивы А, В и С. в массив О перенести из массива А те элементы, правее которых расположены элементы, имеющие значение меньше чем (minB+maxC)/2, где minB — значение минимального элемента массива В, а тахС — значение максимального элемента массива с. Массивы А, В, С и D отсортировать по возрастанию, используя сортировку методом пузырька.

Добавить комментарий Отменить ответ

Рубрики

  • C++ (27)
    • STL (2)
    • Арифметические операции (1)
    • Ввод-вывод (1)
    • Дополнительная информация (1)
    • Задачи (2)
    • Массивы (1)
    • Сортировки (2)
    • Типы данных (1)
    • Условные операторы (1)
    • Циклы (1)
    • Задачи читателей (6)
    • Одномерные массивы (2)
    • Простые операции (10)
    • Символьные строки (1)
    • Сортировка (3)
    • Типы данных (1)
    • Условные операторы (3)
    • Циклы (5)
    • Поисковая оптимизация для интернет-магазинов (25)

    Создание и продвижение интернет-магазинов. Предприниматель и автор книг Артур Мазитов.
    ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ «ГРУППА КОМПАНИЙ ПРАВО И ЗАЩИТА» ООО «ГКПЗ» ИНН 0275927223, ОГРН 1220200003561 |
    2014 © Copyright Все права защищены

    Статья Как найти индекс максимального или минимального элемента массива? C#

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

    Как найти индекс минимального элемента массива?
    Сначала нужно найти минимальный элемент массива, а затем воспользоваться одним из ниже приведенных примеров.

    Одномерный массив
    Для нахождения индекса минимального элемента в одномерном массиве можно воспользоваться методом IndexOf класса Array, например:

    int [] numbers = ; //1. Находим минимальное значение int minVal = numbers.Min(); //1 //2. Находим индекс int indexMin = Array.IndexOf(numbers, minVal); //Результат: 3

    Этот же результат можно получить и с помощью метода FindIndex всё того же класса Array, например:

    int indexMin = Array.FindIndex(numbers, x => x == minVal);

    Если в массиве будет найдено два или более одинаковых минимальных или максимальных значений, то тогда будет получен индекс самого первого из них. Если нужно получить индекс последнего найденного элемента, то тогда можно воспользоваться методом FindLastIndex, например:

    int [] numbers = < 20, 1, 562, 10, 900, 78, 1 >; int minVal = 1; int lastIndexMin = Array.FindLastIndex(numbers,x => x == minVal); //Результат: 6

    Многомерный массив
    С помощью методов: IndexOf и FindIndex можно найти индекс элемента только в одномерном массиве. В многомерном массиве индекс элемента будет иметь значения вида: array[0, 0] и найти его можно, например, с помощью обычного цикла for.

    int[,] numbers = < < 100,30,6,8,18,17 >, < 2,3,61,69,8,56 >>; //1. Находим минимальный элемент IEnumerableint> colNumbs = numbers.Castint>(); int minVal = colNumbs.Min(); //2 //2. Находим индекс минимального элемента for (int i = 0; i < numbers.GetLength(0); i++) < for (int j = 0; j < numbers.GetLength(1); j++) < if (numbers[i, j].Equals(minVal)) < Console.Write(i + "-" + j); //выход из цикла i = numbers.GetLength(0); break; >> > //Результат: 1-0

    Если в многомерном массиве будет несколько одинаковых минимальных или максимальных значений, то тогда можно убрать часть, отвечающую за выход из цикла и получить индекс каждого найденного элемента, например:

    int[,] numbers = < < 100,2,6,8,18,17 >, < 2,3,61,69,8,56 >>; int minVal = 2; if (numbers[i, j].Equals(minVal)) < Console.WriteLine(i + "-" + j); >//Результат: 0-1, 1-0

    Jagged массив
    В Jagged массиве каждый элемент представляет собой отдельный массив. Чтобы найти индекс самого минимального значения в массиве также воспользуемся циклом for.

    int[][] numbers = < new int [] , new int [] , new int [] >; //1. Находим минимальный элемент int minVal = numbers.SelectMany(x => x).Min(); //находим его индекс for (int i = 0; i < numbers.Length; i++) < for (int j = 0; j < numbers.Length; j++) < if (numbers[j].Equals(minVal)) < Console.Write(i + "-" + j); //выход из цикла i = numbers.Length; break; >> > //Результат: 1-3

    Как найти индекс максимального значения?
    Всё то же самое, только сначала нужно найти максимальный элемент массива.

    • Включаем нумерацию строк в Visual Studio 2013
    • Как подписаться на событие?
    • C# Как скопировать файл?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *