Stack Overflow на русском Asked by ArthurCoder on December 14, 2021
Чтобы получить минимальное число я прилумал следующий алгоритм:
У меня этот алгоритм не работает. Также мне не нужни сторонние библиотеки, функции..
#include <iostream>
using namespace std;
int getMin(int nums[], int len) {
if (len == 1) { return nums[0]; }
else if (len <= 0) { return 0; }
else {
signed int checkNum;
int check = 0;
for (int i = 0; i < len; i++) {
checkNum = nums[i];
check = 0;
for (int j = 0; j < len; j++) {
if (checkNum != nums[j] && checkNum < nums[j]) { check++; }
}
if (check == len-1) { return checkNum; break; }
}
}
}
int main() {
int nums[] = {2, 1, 3, 4, 5, 6, 0};
cout << "Min: " << getMin(nums, 7) << endl;
}
Если пишем на C++
, то лучше для каждой задачи использовать подходящий C++
класс_ контейнер. Например, вы могли бы использовать std::valarray
, который помимо других возможностей, знает свой минимальный элемент:
std::valarray<int> nums{ 34, 56, 104, 25,24, 465 };
cout << nums.min();
Answered by AR Hovsepyan on December 14, 2021
"Зачем просто, если можно сложно"...
Не хотите вот так?
int getMin(int nums[], int len)
{
if (len <= 0) throw runtime_error("Wrong array");
int min = nums[0];
for (int i = 1; i < len; i++)
if (min > nums[i]) min = nums[i];
return min;
}
Алгоритм: запоминаем как минимальный первый элемент массива. Затем для каждого оставшегося элемента массива сравниваем его с текущим минимальным. Если он меньше - запоминаем новый минимальный элемент.
По окончании массива возвращаем найденный минимум...
Возвращать при неверной длине массива 0 - решение очень нехорошее - как вы его отличите от 0 в верном массиве?
Answered by Harry on December 14, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP