Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 25
1

Найти минимальное положительное число из данного набора

25.04.2013, 15:51. Просмотров 1194. Ответов 13
Метки нет (Все метки)

Дано целое число N и набор из N целых чисел. Найти минимальное положительное число из данного набора. Если положительные числа в наборе отсутсвуют, то вывести 0.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2013, 15:51
Ответы с готовыми решениями:

Найти минимальное положительное число из данного набора (исправить ошибку)
Дано целое число N. Задать N элементов одномерного массива. Найти минимальное положительное число...

Найти минимальное положительное число из данного набора (если положительные отсутствуют - вывести 0)
Дано целое число N. Задать N элементов одномерного массива. Найти минимальное положительное число...

Найти минимальное положительное числа из набора
Дано целое число n и набор из N чисел найти минимальное положительное число из данного набора Если...

Найти минимальное положительное число
все вычисляет верно, но желательно оптимизировать, может знает кто? #include <iostream> #include...

13
136 / 128 / 59
Регистрация: 13.12.2012
Сообщений: 293
25.04.2013, 16:06 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
int main()
{
    const int N=10;
    int arr[10]={6,2,-1,-2,-3,-4,-5,3,45,-8};
    int min=99999;
    bool flag=false;
    for (int i=1;i<N;i++)
        if (arr[i]>0 && arr[i]<min){
            min=arr[i];
            flag=true;}
    if (flag) cout<<min; else cout<<0;
}
1
4293 / 1415 / 463
Регистрация: 16.12.2010
Сообщений: 2,938
Записей в блоге: 3
25.04.2013, 16:08 3
Если она легкая, чего бы и самому не решить?
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
int main()
{
    int val = 0;
    size_t min = -1;
    while (std::cin) // ввод пока не будет введен любой знак кроме цифры
    {
        std::cin >> val;
        min = val > 0 && val < min ? val : min;
    }
    std::cout << (min == -1 ? 0: min);
}
Здесь, правда, ввод не N чисел.
2
163 / 119 / 46
Регистрация: 17.03.2013
Сообщений: 283
25.04.2013, 16:08 4
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
#include <iostream>
#include <algorithm>
#include <vector>
 
int get_min_number(std::vector<int> array);
 
int main()
{
    std::vector<int> numbers;
 
    numbers.push_back(-9);
    numbers.push_back(5);
    numbers.push_back(1);
    numbers.push_back(-99);
 
 
    std::cout << "Min number: " << get_min_number(numbers) << std::endl;
 
    return 0;
}
 
 
int get_min_number(std::vector<int> array)
{
    std::sort(array.begin(), array.end());
 
    for(size_t i = 0; i < array.size(); ++i)
        if(array.at(i) >= 0)
            return array.at(i);
 
    return 0;
}
Очень интересное задание.
1
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 25
25.04.2013, 16:09  [ТС] 5
потому что не могу решить
0
380 / 351 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
25.04.2013, 16:24 6
и я свой вариант

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 <iostream>
#include <iomanip>
#include <vector>
#include <iterator>
#include <algorithm>
#include <cstdlib>
#include <time.h>
using namespace std;
 
int main(int argc, char* argv[])
{
    int N(10);
    vector<int> coll(N);
    
    srand(time(NULL));
    for_each(coll.begin(), coll.end(), [](int &elem)
        {
            elem = -10 + rand() % 21;
        });
 
    copy(coll.begin(), coll.end(), ostream_iterator<int>(cout, " "));
 
    int min = *min_element(coll.begin(), coll.end(), [](int i, int j) -> bool
        {
            if(i >= 0 && j >= 0)
                return i < j;
            else{
                if(i >= 0)
                    return true;
                else
                    return false;
            }
        });
 
    cout << "\nMin: " << (min == -1 ? 0: min);
    cout << "\n\n";
    return 0;
}
0
4293 / 1415 / 463
Регистрация: 16.12.2010
Сообщений: 2,938
Записей в блоге: 3
25.04.2013, 16:34 7
Цитата Сообщение от yoghurt92 Посмотреть сообщение
cout << "\nMin: " << (min == -1 ? 0: min);
yoghurt92, взять-то Вы у меня взяли эту строчку, а знаете хоть, почему там сравнение с -1 идет? Потому, что изначально я установил min типа size_t равную -1, т.е. отрицательное число в беззнаковом типе дает максимальное число типа unsigned int. Сравнение с -единицей, то бишь, с этим числом проверяет, есть ли в введенной последовательности неотрицательное число меньше этого самого максимального.
А у Вас min типа int, подобного эффекта не произойдет.
1
380 / 351 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
25.04.2013, 16:42 8
BumerangSP, да, вы правы, поспешил Думаю вот так будет правильно

C++
1
cout << "\nMin: " << (min < 0 ? 0: min);

BumerangSP, спасибо вам большое
0
4293 / 1415 / 463
Регистрация: 16.12.2010
Сообщений: 2,938
Записей в блоге: 3
25.04.2013, 16:47 9
yoghurt92, еще не все, переделайте, ответы не совсем корректные. 0, например, не является положительным числом.
2
Миниатюры
Найти минимальное положительное число из данного набора  
380 / 351 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
25.04.2013, 16:52 10
BumerangSP, вот

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 <iostream>
#include <iomanip>
#include <vector>
#include <iterator>
#include <algorithm>
#include <cstdlib>
#include <time.h>
using namespace std;
 
int main(int argc, char* argv[])
{
    int N(10);
    vector<int> coll(mas, mas +10);
    
    srand(time(NULL));
    for_each(coll.begin(), coll.end(), [](int &elem)
        {
            elem = -10 + rand() % 21;
        });
 
    copy(coll.begin(), coll.end(), ostream_iterator<int>(cout, " "));
 
    int min = *min_element(coll.begin(), coll.end(), [](int i, int j) -> bool
        {
            if(i > 0 && j > 0)
                return i < j;
            else{
                if(i > 0)
                    return true;
                else
                    return false;
            }
        });
 
    cout << "\nMin: " << (min > 0 ? min : 0);
    cout << "\n\n";
    return 0;
}
0
163 / 119 / 46
Регистрация: 17.03.2013
Сообщений: 283
25.04.2013, 17:10 11
Цитата Сообщение от BumerangSP Посмотреть сообщение
yoghurt92, еще не все, переделайте, ответы не совсем корректные. 0, например, не является положительным числом.
Принято считать для определённости Ноль положительным числом.

Данный момент следовало бы уточнить у преподавателя, тк ноль может выступать положительным числом, это на самом деле волевое решение, кому как удобно
0
4293 / 1415 / 463
Регистрация: 16.12.2010
Сообщений: 2,938
Записей в блоге: 3
25.04.2013, 17:14 12
GetVariable, что-то я ни одной теоремы про это не видели и не в курсе, кем это принято. Мб удобно? С таким же успехом 0 можно считать и отрицательным.
1
163 / 119 / 46
Регистрация: 17.03.2013
Сообщений: 283
25.04.2013, 17:18 13
Цитата Сообщение от BumerangSP Посмотреть сообщение
GetVariable, что-то я ни одной теоремы про это не видели и не в курсе, кем это принято. Мб удобно? С таким же успехом 0 можно считать и отрицательным.
Все верно! http://ru.wikipedia.org/wiki/О... льный_ноль

Ноль может быть как положительным так и отрицательным.

это можно доказать программно:

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
int main()
{
    if(+0 == 0)
        std::cout << " +0 == 0 ";
    
    if(-0 == 0)
        std::cout << " -0 == 0 ";
 
    return 0;
}
Именно по этому, данный вопрос нужно было уточнить у преподавателя, тк явно утверждать мы не можем.

Насчёт "принятно", действительно вышла опечатка, спасибо за исправления.
0
4293 / 1415 / 463
Регистрация: 16.12.2010
Сообщений: 2,938
Записей в блоге: 3
25.04.2013, 17:23 14
GetVariable, если в таком контексте...Но здесь, такое не нужно учитывать, имхо.

Не по теме:

Цитата Сообщение от GetVariable Посмотреть сообщение
Насчёт "принятно", действительно вышла опечатка, спасибо за исправления.
я? я не исправлял :)

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2013, 17:23

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Найти минимальное положительное число в наборе
Дано целое число N и набор из N чисел. Найти минимальное положительное число из данного набора....

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

Найти минимальное положительное число из данного набора
Дано целое число N и набор из N чисел. Найти минимальное положительное число из данного набора....


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

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

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