Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Itwnik
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 25
25.04.2013, 15:51     Найти минимальное положительное число из данного набора #1
Дано целое число N и набор из N целых чисел. Найти минимальное положительное число из данного набора. Если положительные числа в наборе отсутсвуют, то вывести 0.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2013, 15:51     Найти минимальное положительное число из данного набора
Посмотрите здесь:

C++ Найти минимальное положительное число.
Минимальное положительное целое число C++
Определить минимальное число и номиналы банкнот и монет, необходимые для набора заданной суммы C++
C++ Дано целое число N и набор из N целых чисел. Найти номера первого и последнего мин. элемента из данного набора
Найти минимальное положительное числа из набора C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ViktorKozlov
133 / 125 / 2
Регистрация: 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;
}
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 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 чисел.
GetVariable
 Аватар для GetVariable
163 / 119 / 5
Регистрация: 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;
}
Очень интересное задание.
Itwnik
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 25
25.04.2013, 16:09  [ТС]     Найти минимальное положительное число из данного набора #5
потому что не могу решить
yoghurt92
373 / 344 / 22
Регистрация: 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;
}
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
25.04.2013, 16:34     Найти минимальное положительное число из данного набора #7
Цитата Сообщение от yoghurt92 Посмотреть сообщение
cout << "\nMin: " << (min == -1 ? 0: min);
yoghurt92, взять-то Вы у меня взяли эту строчку, а знаете хоть, почему там сравнение с -1 идет? Потому, что изначально я установил min типа size_t равную -1, т.е. отрицательное число в беззнаковом типе дает максимальное число типа unsigned int. Сравнение с -единицей, то бишь, с этим числом проверяет, есть ли в введенной последовательности неотрицательное число меньше этого самого максимального.
А у Вас min типа int, подобного эффекта не произойдет.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
25.04.2013, 16:42     Найти минимальное положительное число из данного набора #8
BumerangSP, да, вы правы, поспешил Думаю вот так будет правильно

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

BumerangSP, спасибо вам большое
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
25.04.2013, 16:47     Найти минимальное положительное число из данного набора #9
yoghurt92, еще не все, переделайте, ответы не совсем корректные. 0, например, не является положительным числом.
Миниатюры
Найти минимальное положительное число из данного набора  
yoghurt92
373 / 344 / 22
Регистрация: 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;
}
GetVariable
 Аватар для GetVariable
163 / 119 / 5
Регистрация: 17.03.2013
Сообщений: 283
25.04.2013, 17:10     Найти минимальное положительное число из данного набора #11
Цитата Сообщение от BumerangSP Посмотреть сообщение
yoghurt92, еще не все, переделайте, ответы не совсем корректные. 0, например, не является положительным числом.
Принято считать для определённости Ноль положительным числом.

Данный момент следовало бы уточнить у преподавателя, тк ноль может выступать положительным числом, это на самом деле волевое решение, кому как удобно
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
25.04.2013, 17:14     Найти минимальное положительное число из данного набора #12
GetVariable, что-то я ни одной теоремы про это не видели и не в курсе, кем это принято. Мб удобно? С таким же успехом 0 можно считать и отрицательным.
GetVariable
 Аватар для GetVariable
163 / 119 / 5
Регистрация: 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;
}
Именно по этому, данный вопрос нужно было уточнить у преподавателя, тк явно утверждать мы не можем.

Насчёт "принятно", действительно вышла опечатка, спасибо за исправления.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2013, 17:23     Найти минимальное положительное число из данного набора
Еще ссылки по теме:

C++ Найти минимальное положительное число в заданном массиве, а если таких нет, вывести на экран ноль
Отобразить минимальное положительное число, которое невозможно представить в виде суммы элементов массива C++
Найти максимальный периметр прямоугольника из данного набора C++

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

Или воспользуйтесь поиском по форуму:
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
25.04.2013, 17:23     Найти минимальное положительное число из данного набора #14
GetVariable, если в таком контексте...Но здесь, такое не нужно учитывать, имхо.

Не по теме:

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

Yandex
Объявления
25.04.2013, 17:23     Найти минимальное положительное число из данного набора
Ответ Создать тему
Опции темы

Текущее время: 21:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru