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

Если последовательность знакопеременна, то вывести максимум, в противном случае минимум - C++

Восстановить пароль Регистрация
 
User-808
0 / 0 / 0
Регистрация: 23.06.2014
Сообщений: 5
23.06.2014, 21:40     Если последовательность знакопеременна, то вывести максимум, в противном случае минимум #1
С клавиатуры вводится последовательность произвольных чисел, пока не введется "0". Если пос-ть знакопеременна, то вывести максимум,в другом случае минимум.
Вот исходник:

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
39
40
#include<iostream>
using namespace std;
void main()
{
    setlocale(0,"");
    int m;  //Переменная для текущего значения
    int M1;//Максимум
    int M2;//Минимум    
    cout<<"\nВведите число =        ";
    cin>>m;
    if(m == 0)
    {
        cout<<"Не введено ни одного элемента"<<endl;
        system("pause");
        return;
    }
    M1 = m; 
    M2 = m;
    bool sost = true;
    while(sost)
    {
     cout<<"\nВведите число =       ";
     cin>>m;
     if(m == 0) break;
    
     if(m<M2)M2=m;
     if(m<0)sost=false;
    }
    while(!sost)
    {cout<<"\nВведите число =       ";
        cin>>m;
     if(m == 0) break;
     if(m>M1)M1=m;
     }
    if(sost)
        cout<<"Минимальный элемент: "<<M2<<endl;
    if(!sost)
        cout<<"Максимаьный элемент: "<<M1<<endl;
    system("pause");
}
Нужно придумать как изменить, чтоб соблюдалось условие.
Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2014, 21:40     Если последовательность знакопеременна, то вывести максимум, в противном случае минимум
Посмотрите здесь:

Дано слово. Если длина нечетная, то удалить среднюю букву, в противном случае две буквы C++
C++ печатает “Yes”, если массив симметричен, и “No” в противном случае.
C++ Выведите YES, если число N является точной степенью двойки, или NO в противном случае.(Рекурсия)
C++ Если первое из введенных с клавиатуры чисел А и В равно 5, то вычислить А+В, в противном случае получить А/В.
C++ Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае не изменять его. Вывести полученное число
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
23.06.2014, 22:12     Если последовательность знакопеременна, то вывести максимум, в противном случае минимум #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
32
33
34
35
36
37
38
39
40
41
#include<iostream>
using namespace std;
void main()
{
    setlocale(0,"");
    int m;  //Переменная для текущего значения
    int M1;//Максимум
    int M2;//Минимум    
   int prevM;
    cout<<"\nВведите число =        ";
    cin>>m;
    if(m == 0)
    {
        cout<<"Не введено ни одного элемента"<<endl;
        system("pause");
        return;
    }
    M1 = m; 
    M2 = m;
    prevM=m;
    bool sost = true;
    
    while(m!=0)
    {
     cout<<"\nВведите число =       ";
     cin>>m;
     if(m == 0) break;
    
     if(m<M2)M2=m;
     if(m>M1)M1=m;
     if(m<0 && prevM<0)sost=false;
     if(m>0 && prevM>0)sost=false;
     prevM=m;
    }
    
    if(!sost)
        cout<<"Минимальный элемент: "<<M2<<endl;
    if(sost)
        cout<<"Максимаьный элемент: "<<M1<<endl;
    system("pause");
}
User-808
0 / 0 / 0
Регистрация: 23.06.2014
Сообщений: 5
23.06.2014, 22:51  [ТС]     Если последовательность знакопеременна, то вывести максимум, в противном случае минимум #3
спасибо,но все равно.при вводе всех отрицательных чисел и 1 положительной выводит минимум, вместо максимум

Добавлено через 8 минут
BatonPro, спасибо,но все равно.при вводе всех отрицательных чисел и 1 положительной выводит минимум, вместо максимум
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
23.06.2014, 23:07     Если последовательность знакопеременна, то вывести максимум, в противном случае минимум #4
Цитата Сообщение от User-808 Посмотреть сообщение
при вводе всех отрицательных чисел и 1 положительной выводит минимум, вместо максимум
ну и все правильно
Цитата Сообщение от User-808 Посмотреть сообщение
Если пос-ть знакопеременна, то вывести максимум,в другом случае минимум.
если все отрицательные и одна 1 это не знакопеременная последовательность
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
23.06.2014, 23:10     Если последовательность знакопеременна, то вывести максимум, в противном случае минимум #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Перепутал знакопеременную со знакочередующейся.
Вот правильный:
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
39
40
41
42
43
#include<iostream>
using namespace std;
void main()
{
    setlocale(0,"");
    int m;  //Переменная для текущего значения
    int M1;//Максимум
    int M2;//Минимум    
   bool sign = false;
    cout<<"\nВведите число =        ";
    cin>>m;
    if(m == 0)
    {
        cout<<"Не введено ни одного элемента"<<endl;
        system("pause");
        return;
    }
    M1 = m; 
    M2 = m;
    if(m<0) sign=false;
    if(m>0) sign=true;
    
    bool sost = false;
    
    while(m!=0)
    {
     cout<<"\nВведите число =       ";
     cin>>m;
     if(m == 0) break;
    
     if(m<M2)M2=m;
     if(m>M1)M1=m;
     if(m<0 && sign)sost=true;
     if(m>0 && !sign)sost=true;
    
    }
    
    if(!sost)
        cout<<"Минимальный элемент: "<<M2<<endl;
    if(sost)
        cout<<"Максимаьный элемент: "<<M1<<endl;
    system("pause");
}
Sapendo
5 / 5 / 3
Регистрация: 13.05.2014
Сообщений: 130
23.06.2014, 23:11     Если последовательность знакопеременна, то вывести максимум, в противном случае минимум #6
Цитата Сообщение от User-808 Посмотреть сообщение
спасибо,но все равно.при вводе всех отрицательных чисел и 1 положительной выводит минимум, вместо максимум
Так а тебе что надо??? Максимум - если знак меняется с + на -!!!! Если ты вводишь много значений с -, а потом с +, то это последовательность не знакопеременна!!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2014, 23:21     Если последовательность знакопеременна, то вывести максимум, в противном случае минимум
Еще ссылки по теме:

Массив: Переменной Х присвоить 1, если элементы массива упорядочены по возрастанию, 0 - в противном случае. C++
Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае C++
C++ Программа, печатающая значение true, если указанное высказывание является истинным, и false в противном случае

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

Или воспользуйтесь поиском по форуму:
User-808
0 / 0 / 0
Регистрация: 23.06.2014
Сообщений: 5
23.06.2014, 23:21  [ТС]     Если последовательность знакопеременна, то вывести максимум, в противном случае минимум #7
Извиняюсь, перепутал, большое спасибо)
Yandex
Объявления
23.06.2014, 23:21     Если последовательность знакопеременна, то вывести максимум, в противном случае минимум
Ответ Создать тему
Опции темы

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