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

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

Войти
Регистрация
Восстановить пароль
 
greendoom
 Аватар для greendoom
4 / 4 / 1
Регистрация: 13.03.2011
Сообщений: 56
#1

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

02.11.2011, 17:22. Просмотров 802. Ответов 3
Метки нет (Все метки)

Задан целочисленный одномерный массив a из n элементов.
Найти минимальное значение положительных элементов, расположенных правее первого элемента, равного нулю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2011, 17:22     Найти минимальное значение положительных элементов, расположенных правее первого элемента, равного нулю.
Посмотрите здесь:

Найти сумму модулей элементов массива, расположенных после первого элемента, равного нулю C++
Найти сумму элементов массива, расположенных после последнего элемента, равного нулю C++
Найти номер первого максимального элемента среди отрицательных элементов, расположенных до первого элемента, большего Т. C++
C++ В одномерном массиве, состоящем из 30 целых элементов, вычислить сумму элементов массива, расположенных после последнего элемента, равного нулю.
Найти произведение элементов, расположенных правее первого элемента равного первого элемента равного k C++
Вычислить сумму модулей элементов , расположенных после первого элемента ,равному нулю C++
Найти сумму элементов, расположенных правее последнего отрицательного элемента C++
Найти номер первого максимального элемента среди отрицательных элементов, расположенных до первого элемента, большего заданного числа Т C++
C++ Найти сумму модулей элементов массива, расположенных после первого элемента, равного нулю
C++ Вычислить сумму модулей элементов массива, расположенных после первого элемента, равного нулю
C++ Найти минимальное значение положительных элементов массива, расположенных до первого элемента, равного нулю
Найти значение максимального элемента среди парных по значению элементов, расположенных до первого непарного C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
02.11.2011, 17:44     Найти минимальное значение положительных элементов, расположенных правее первого элемента, равного нулю. #2
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
#include <iostream>
#include <vector>
#include <algorithm>
 
typedef std::vector<int> vecInt;
typedef vecInt::iterator vecIntItr;
 
bool isPositive(int i)
{
    return ((i > 0) ? true : false);
}
 
int main()
{
    vecInt v;
    int buf;
    while(std::cin >> buf)
        v.push_back(buf);
 
    vecIntItr minPositive = find_if((find(v.begin(), v.end(), 0)), v.end(), isPositive); 
 
    if(minPositive == v.end())
    {
        std::cout << "no zero in array or no positive element after zero" << std::endl;
        return 0;
    }
    else
        std::cout << *minPositive << std::endl;
 
    return 0;
}
Сыроежка
Заблокирован
02.11.2011, 18:58     Найти минимальное значение положительных элементов, расположенных правее первого элемента, равного нулю. #3
Цитата Сообщение от greendoom Посмотреть сообщение
Задан целочисленный одномерный массив a из n элементов.
Найти минимальное значение положительных элементов, расположенных правее первого элемента, равного нулю.
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
#include   <algorithm>
#include   <functional>
#include   <iostream>
 
 
const size_t n = 10;
 
int main()
{
   int a[n];
   int *min = a + n;
 
   //  звполняете каким-нибудь образом массив. Можно его инициализировать при его объявлении
 
   
   int *zero = std::find( a, a + n, 0 );
 
 
   if ( zero != a + n )
   {
       ++zero;
       min = std::min_element( zero, a + n, std::bind2nd( std::greater<int>(), 0 ) );
   }
 
   if ( min != a + n ) std::cout << "Minimum element = " << *min << std::endl;
   else std::cout << "Minimum of positive elements is not found\n";
 
   return ( 0 );
}
Добавлено через 1 минуту
Цитата Сообщение от soon Посмотреть сообщение
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
#include <iostream>
#include <vector>
#include <algorithm>
 
typedef std::vector<int> vecInt;
typedef vecInt::iterator vecIntItr;
 
bool isPositive(int i)
{
    return ((i > 0) ? true : false);
}
 
int main()
{
    vecInt v;
    int buf;
    while(std::cin >> buf)
        v.push_back(buf);
 
    vecIntItr minPositive = find_if((find(v.begin(), v.end(), 0)), v.end(), isPositive); 
 
    if(minPositive == v.end())
    {
        std::cout << "no zero in array or no positive element after zero" << std::endl;
        return 0;
    }
    else
        std::cout << *minPositive << std::endl;
 
    return 0;
}
Ваша программа делает не то, что требуется. Она пытается найти первый положительный элемент после первого найденного 0 в векторе.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
02.11.2011, 19:04     Найти минимальное значение положительных элементов, расположенных правее первого элемента, равного нулю. #4
Действительно. Про минимальный то я и позабыл
Yandex
Объявления
02.11.2011, 19:04     Найти минимальное значение положительных элементов, расположенных правее первого элемента, равного нулю.
Ответ Создать тему
Опции темы

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