Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2015, 15:37   #1
Keniro
Пользователь
 
Регистрация: 27.09.2015
Сообщений: 21
Вопрос Помогите написать программу.C++

Помогите написать программу: пользователь вводит числа заканчивая введение нулем. Определить самое меньшее среди положительных и самое большое среди отрицательных.
Keniro вне форума Ответить с цитированием
Старый 27.09.2015, 15:54   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Keniro Посмотреть сообщение
Определить самое меньшее среди положительных и самое большое среди отрицательных.
Нерешаемая задача.
ест числа, крутящиеся около нуля. Если расчёты уходят в бесконечность, значит с теорией - неладно.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 27.09.2015, 15:54   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Попытки? Наработки?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.09.2015, 18:00   #4
Keniro
Пользователь
 
Регистрация: 27.09.2015
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Попытки? Наработки?
Ну вот смотрите у меня есть код почти робочий.Он правильно показивает самое меньшее среди положительных но почему он покизвает самое меньшее среди отрицательных если надо самое большое число?
Код:
#include <iostream>
#include <vector>
using namespace std;

int main()
{
	setlocale(LC_ALL, "Russian");
	cout << "введите числа и закончите ввод нулем: ";
    int a=1,mn=999999,mx=-999999;
    while(a!=0)
    {
        cin>>a;
        if(a==0)
        {
            continue;
        }
        if(a>0)
        {
            if(a<mn)
            {
                mn=a;
            }
        }
        if(a<0)
        {
            if(a>mx)
            {
                mx=a;
            }
        }
    }
    cout<<"min :"<<mn<<endl<<"max :"<<mx;
    return 0;
}
Keniro вне форума Ответить с цитированием
Старый 27.09.2015, 19:14   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Хотите попасть в раздел шедевров? Ну-ну.
int a=1,mn=999999,mx=-999999;
Код:
    while(a!=0)
    {
        cin>>a;
        if(a==0)
        {
            continue;
        }
Вы отсюда, выйдете, когда рак на горе свистнет.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 27.09.2015, 19:45   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вы о чем? Нормально оттуда выйдет, поле ввода 0.

Но я б написал while (true) и break в том месте, чтоб два раза не писать одну и ту же проверку.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 27.09.2015 в 19:48.
Alex11223 вне форума Ответить с цитированием
Старый 27.09.2015, 19:50   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
#include <iostream>
#include <vector>
using namespace std;

int main()
{
	setlocale(LC_ALL, "Russian");
	cout << "введите числа и закончите ввод нулем: ";
    int a=1,mn=999999,mx=-999999;
    while(a!=0)
    {
        cin>>a;
        if(a>0) mn=(mn>a)?a:mn; 
        if(a<0) mx=(mx<a)?a:mx; 
    }
    cout<<"min :"<<mn<<endl<<"max :"<<mx;
    return 0;
}
Цитата:
Вы отсюда, выйдете, когда рак на горе свистнет.
Выйдет. По условию из цикла выйдет. Хотя так писать конечно - обфускация.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.09.2015, 22:09   #8
Keniro
Пользователь
 
Регистрация: 27.09.2015
Сообщений: 21
По умолчанию

Так всем cпасибо я разобрался в своем коде. Оставлю здесь может кому-то будет нужно.
Код:
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    cout << "Введите числа и закончите ввод нулем: ";
    int a=1,mn=999999,mx=-999999;
    while(a!=0)
    {
        cin>>a;
        if(a>0)
        {
            if(a<mn)
            {
                mn=a;
            }
        }
        if(a<0)
        {
            mx=a;
        }
    }
    cout<<"min :"<<mn<<endl<<"max :"<<mx;
    return 0;
}
Keniro вне форума Ответить с цитированием
Старый 28.09.2015, 06:11   #9
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Вы о чем? Нормально оттуда выйдет, поле ввода 0.
Вот гадство. Я - Борландщик. Среда накладывает свой отпечаток. Вечно путаю cin с cout и направление двойных скобок потока.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите написать программу на C++ Алексей С Помощь студентам 13 06.11.2014 01:31
помогите написать программу Sveta-psv Паскаль, Turbo Pascal, PascalABC.NET 3 01.10.2014 00:24
Помогите написать программу. mysterio369 Паскаль, Turbo Pascal, PascalABC.NET 20 11.02.2014 19:47
Помогите написать программу voher3 Фриланс 3 01.12.2008 10:57