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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.90
monstr95
0 / 0 / 0
Регистрация: 04.12.2012
Сообщений: 14
#1

Определить значение второго по величине элемента в последовательности чисел - C++

04.12.2012, 12:15. Просмотров 6348. Ответов 7
Метки нет (Все метки)

Дана последовательность натуральных чисел (одно число в строке), завершающаяся числом 0. Определите значение второго по величине элемента в
этой последовательности, то есть элемента, который будет наибольшим, если из последовательности удалить наибольший элемент.
В этой задаче нельзя использовать глобальные переменные. Функция получает данные, считывая их с клавиатуры, а не получая их в виде параметра. Гарантируется, что последовательность содержит хотя бы два числа (кроме нуля). Ввод Вывод
1
7
9
0 7
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2012, 12:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Определить значение второго по величине элемента в последовательности чисел (C++):

Цикл while: Определить значение второго по величине элемента в этой последовательности - C++
2)Последовательность состоит из различных натуральных чисел и завершается числом 0. Определите значение второго по величине элемента в этой...

Определить третий по величине элемент последовательности чисел - C++
Дана последовательность из различных целых чисел, содержащая не менее 3 чисел Определить в ней третий по величине элемент. #include...

Поиск максимального и второго по величине элемента в матрице - C++
помогите пожалуйста решить: В каждой строке матрицы поменять местами максимальный и второй по величине после максимального элементы.

Найти значение 3-го по величине элемента и значение всех элементов массива, которые его превышают, заменить на найденное значение - C++
Работа с массивами:

Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение - C++
Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение ...

найти значение третьего по величине элемента массива - C++
найти значение третьего по величине элемента массива размерность массива 200 диапазон значений 0-100 Добавлено через 1 час 11 минут...

7
valeriikozlov
Эксперт С++
4681 / 2507 / 322
Регистрация: 18.08.2009
Сообщений: 4,550
04.12.2012, 12:49 #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
#include<iostream>
using namespace std;
int main()
{
    int t=1, a, b;
    cin>>a>>b;
    if(b>a)
    {
        t=a; a=b; b=t;
    }
    while(t!=0)
    {
        cin>>t;
        if(t>=a)
        {
            b=a; a=t;
        }
        else
        if(t>b)
            b=t;
    }
    cout<<b;   
     return 0;
}
2
monstr95
0 / 0 / 0
Регистрация: 04.12.2012
Сообщений: 14
04.12.2012, 17:18  [ТС] #3
спасибо большое

Добавлено через 4 часа 25 минут
ребят извените я не множко ошибся а как эта задача будет выглядить не используя операторы цикла
0
JeiQ
0 / 0 / 0
Регистрация: 09.08.2015
Сообщений: 6
17.08.2015, 11:38 #4
valeriikozlov, а если взять отрицательные числа?
Должно быть так:
входные данные
-1
-2
0
выходные данные
-2

А у вас выйдет так:
входные данные
-1
-2
0
выходные данные
-1

А вот мой код:
C++ (Qt)
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
#include <iostream>
using namespace std;
int main()
{
    int max1,max2;
    int i;
    cin >> i;
    max1=i;
    cin >> i;
    max2=i;
        if (max2>max1)
            {
        max2=max1;
        max1=i;
            };
    while(i!=0)
    {
        cin >> i;
        if(i!=0)
        {
            if (i> max1)
            {
                max2=max1;
                max1=i;
            }
            else
                if (i> max2)
                max2=i;
        }
    }
    cout << max2;
    system("pause");
}
monstr95, эта задача без операторов цикла не решаема.
0
Mr.X
Эксперт С++
3060 / 1705 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.08.2015, 04:09 #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 <algorithm>
#include <iostream>
#include <vector>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::vector     < int   >   T_numbers;
/////////////////////////////////////////////////////////////////////////////////////////
void    input_numbers_and_print_premaximal_element()
{
    T_numbers   numbers;
    int         cur_val     =   0;
 
    std::cout   <<  std::endl
                <<  "-> ";
 
    while   (
                    std::cin    >>  cur_val
                &&  cur_val
            )
    {
        numbers.push_back( cur_val );
    }
 
    auto    premax_it   =       numbers.end()
                            -   2;
 
    std::nth_element
        (
            numbers.begin   (),
            premax_it,
            numbers.end     ()
        );
 
    std::cout   <<  *premax_it
                <<  std::endl;
}
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    for(;;)
    {
        input_numbers_and_print_premaximal_element();
    }
}
0
_Ivana
3227 / 1855 / 156
Регистрация: 01.03.2013
Сообщений: 5,080
Записей в блоге: 5
18.08.2015, 05:01 #6
Цитата Сообщение от JeiQ Посмотреть сообщение
эта задача без операторов цикла не решаема.
Конечно же это большое заблуждение (не считая того, что некропост). Откройте для себя свободу от операторов цикла.
C++
1
2
3
4
5
6
#include<iostream>
using namespace std;
 
int f(int a, int b) {int t; cin>>t; return t ? (t>=a ? f(t,a) : (t>b ? f(a,t) : f(a,b))) : b;}
 
int main() {int a, b; cin>>a>>b; cout << (a>=b ? f(a,b) : f(b,a)) << endl; return 0;}
1
Mr.X
Эксперт С++
3060 / 1705 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.08.2015, 08:29 #7
Цитата Сообщение от _Ivana Посмотреть сообщение
Конечно же это большое заблуждение
так как по заданию
Цитата Сообщение от monstr95 Посмотреть сообщение
Функция получает данные, считывая их с клавиатуры, а не получая их в виде параметра
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 <algorithm>
#include <iostream>
#include <queue>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::priority_queue     < int   >   T_numbers_prior_queue;
/////////////////////////////////////////////////////////////////////////////////////////
void     f()
{
    static  int                     num     =   1;
    static  T_numbers_prior_queue   numbers_prior_queue;
 
    if( num )
    {
        std::cin    >>  num;
        numbers_prior_queue.push( num );
        f();
    }
    else
    {
        numbers_prior_queue.pop();
        num     =   numbers_prior_queue.top();
 
        std::swap
            (
                numbers_prior_queue,
                T_numbers_prior_queue()
            );
 
        std::cout   <<  num
                    <<  std::endl
                    <<  std::endl;
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    for(;;)
    {
        f();
    }
}
0
_Ivana
3227 / 1855 / 156
Регистрация: 01.03.2013
Сообщений: 5,080
Записей в блоге: 5
18.08.2015, 08:33 #8
У меня в каком-то смысле так и есть, как написано в задании. Если кому этого смысла недостаточно, могут обернуть вызов во внешнюю функцию - без параметров.
0
18.08.2015, 08:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.08.2015, 08:33
Привет! Вот еще темы с ответами:

Определить наибольшее значение в последовательности введенных чисел - C++
Написать программу, которая вводит последовательно 10 чисел, определяет наибольшее значение и печатает его. counter-счетчик ...

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

Массив: Определить, сколько чисел в последовательности принимают максимальное значение? - C++
1. Дано 20 действительных чисел. Определить сколько из них принимают максимальное значение.

определить номер наименьшего по абсолютной величине элемента массива - C++
определить номер наименьшего по абсолютной величине элемента массива А на С++


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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