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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Itwnik
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 25
#1

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

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

Дано целое число N и набор из N целых чисел. Найти минимальное положительное число из данного набора. Если положительные числа в наборе отсутсвуют, то вывести 0.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2013, 15:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти минимальное положительное число из данного набора (C++):

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

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

Найти минимальное положительное число - C++
все вычисляет верно, но желательно оптимизировать, может знает кто? #include <iostream> #include <math.h> using namespace std; ...

Для данного числа m найти наименьшее положительное целое число с суммой цифр m и которое делится m - C++
Для данного числа m найти наименьшие положительное целое число с суммой цифр m, которое делится m. ВВОД: Во входном файле записано m ...

Найти минимальное положительное число в заданном массиве, а если таких нет, вывести на экран ноль - C++
Дан одномерный массив А. Найти минимальное положительное число из данного массива. Если положительные числа в наборе отсутствуют, то...

Дано целое число N и набор из N целых чисел. Найти номера первого и последнего мин. элемента из данного набора - C++
Дано целое число N и набор из N целых чисел. Найти номера первого и последнего минимального элемента из данного набора и вывести их в...

13
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;
}
1
BumerangSP
4286 / 1408 / 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 чисел.
2
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;
}
Очень интересное задание.
1
Itwnik
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 25
25.04.2013, 16:09  [ТС] #5
потому что не могу решить
0
yoghurt92
374 / 345 / 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;
}
0
BumerangSP
4286 / 1408 / 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, подобного эффекта не произойдет.
1
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
25.04.2013, 16:42 #8
BumerangSP, да, вы правы, поспешил Думаю вот так будет правильно

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

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

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

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

Не по теме:

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2013, 17:23
Привет! Вот еще темы с ответами:

Минимальное положительное целое число - C++
Братья,нужна помощь. Вычислить минимальное положительное целое число, которое не является точно представимым в типе double. Как найти...

Отобразить минимальное положительное число, которое невозможно представить в виде суммы элементов массива - C++
Отобразить то минимальное положительное число, которое невозможно представить в виде суммы элементов массива. Количество действий O(n^2). ...

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

Найти максимальный периметр прямоугольника из данного набора - C++
MiNmax3. Дано целое число N и набор из N прямоугольников, заданных своими сторонами — парами чисел (а, b). Найти максимальный периметр...


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

Или воспользуйтесь поиском по форуму:
14
Yandex
Объявления
25.04.2013, 17:23
Ответ Создать тему
Опции темы

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