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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Строки Слов http://www.cyberforum.ru/cpp-beginners/thread223743.html
Ввести с клавиатуры строку символов, состоящую из слов, разделенных между собой одиночными пробелами. Если в строке оказалось не менее 2 слов, то поменять местами первое и последнее слова; если же слово только одно, удалить из него все заглавные латинские буквы.
C++ Глобальная ф-ция getline Всем добрый вечер :) Вообщем есть кусок кода: // read for name vector while (std::getline(std::cin, name)) { scoreIsValid = false; http://www.cyberforum.ru/cpp-beginners/thread223724.html
Вывести символы wchar_t C++
Здраствуйте, почему-то не получается записать в файл символы wchar_t, подскажите, пожалуйста, что я забыл #include "stdafx.h" #include <conio.h> #include <iostream> #include <fstream> #include <cwchar> #include <cwctype> using namespace std;
Напишите программу, выводящую на экран количество цифр в этом числе и сумму этих цифр C++
я начинающий! помогите! мне на екзам! Дано натуральное число а (a<100). Напишите программу, выводящую на экран количество цифр в этом числе и сумму этих цифр
C++ Использование разных типов указателей http://www.cyberforum.ru/cpp-beginners/thread223676.html
Здравствуйте! Программа должна засерать переменную n, а вместо этого она забивает мусором переменную upper. Можете подсказать в чём дело? // LayoutError - программа для представления // неаккуратного обращения с указателями #include <iostream> using namespace std; int main(int Argc, char* pszArgs) { setlocale(LC_ALL, "");
C++ Написать программу на строки, завтра защита Напишите , пожалуйста, программу на С. Завтра защита, выручайте! Вот задание: Дана строка. Найти в ней самую длинную подстроку, которая повторяется не менее двух раз. Пример: если дана такая строка asd25 2btr8 jdd25y Ответом будет: d25 Программа "CodeGear RAD Studio" написать в Console Application Пожалуйста с комментами! подробнее

Показать сообщение отдельно
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
04.01.2011, 14:02     Ввести с клавиатуры массив из N чисел (N также вводится с клавиатуры). Найти наименьший из его положительных элементов.
vx5, не скажи, сокращение всё-таки довольно существенное.

ForEveR, понятно. Но всё равно у тебя не очень алгоритмически эффективно реализовано, потому что ты два раза проходишь по массиву: отдельно для подсчёта положительных элементов и отдельно для поиска минимума.

NightmareZ, идея засунуть итераторы в конструктор вектора — это круто. Но программа у тебя написана неправильно. Во-первых, поиск минимума у тебя организован неправильно (см. мою программу), а во-вторых, массив сортируется в любом случае, даже тогда, когда искомый элемент не найден.

Добавлено через 32 минуты
Предлагаю вашему вниманию улучшенный вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <functional>
 
int main () {
    std::cout << "Введите массив: ";
    std::vector<int> numbers(std::istream_iterator<int>(std::cin), std::istream_iterator<int>());
    
    std::vector<int>::iterator minimum = std::find_if(numbers.begin(), numbers.end(), std::bind2nd(std::greater<int>(), 0));
    for (std::vector<int>::iterator i = minimum; i != numbers.end(); ++i) if (*i > 0 && *i < *minimum) minimum = i;
    
    if (minimum != numbers.end()) {
        std::cout << "Наименьший положительный элемент массива: " << *minimum << std::endl;
        
        std::sort(minimum, numbers.end(), std::greater<int>());
        std::cout << "Отсортированный массив: ";
        std::copy(numbers.begin(), numbers.end(), std::ostream_iterator<int>(std::cout, " "));
    } else std::cout << "В массиве нет положительных элементов." << std::endl;
 
    return 0;
}
 
Текущее время: 11:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru