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

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

Войти
Регистрация
Восстановить пароль
 
dickivs
46 / 46 / 6
Регистрация: 25.11.2011
Сообщений: 270
Завершенные тесты: 1
#1

Два максимальных значения из 10 целых чисел - C++

05.06.2013, 18:54. Просмотров 666. Ответов 15
Метки нет (Все метки)

Найдите два наибольших значения из 10 чисел. [Замечание. Каждое число вы должны вводить только один раз.].
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2013, 18:54     Два максимальных значения из 10 целых чисел
Посмотрите здесь:
Последовательность целых чисел. Найти два минимальных / два максимальных элемента C++
Создать два файла целых чисел, первый содержит значения дней, а второй — значения месяцев C++
В одномерном массиве целых чисел содержится два нулевых значения. Подсчитать сумму чисел, заключённых между двумя нулями. C++
C++ найти два максимальных значения в массиве
В массиве целых чисел найти n максимальных элементов C++
C++ Даны два целых числа A и B (A < B). Найти сумму всех целых чисел от A до B включительно
Даны два целых числа А и В (А<В). Найти сумму квадратов всех целых чисел от А до В включительно C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DIEZEL-man
13 / 13 / 0
Регистрация: 17.02.2013
Сообщений: 54
05.06.2013, 19:11     Два максимальных значения из 10 целых чисел #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
#include<iostream>
using namespace std;
float max1(float *a,int  n){
      float max1=a[0];
      for(int i=1; i<n; i++) { 
              if(a[i]>max1){ 
                              max1=a[i];}}
                              return max1;}
float max2(float *a,int n) { 
      float max2;
      if(a[0]<max1(a,n)) {
                          max2=a[0];}
      else max2=a[1];
      for(int i=0; i<n; i++) { 
              if(a[i]>max2 && a[i]<max1(a,n)){ 
                              max2=a[i];}}
                              return max2;}
int main() { 
    float a[10], maxim1, maxim2;
    int n=10;
    cout<<"Vvedite massiv iz 10 chisel:"<<endl;
    for(int i=0; i<n; i++){ 
            cin>>a[i];}
    maxim1=max1(a, n);
    maxim2=max2(a, n);
    cout<<"Maximal'nie znacheniya massiva:"<<endl<<maxim1<<" "<<maxim2;
    system("pause");
return 0;}
dickivs
46 / 46 / 6
Регистрация: 25.11.2011
Сообщений: 270
Завершенные тесты: 1
05.06.2013, 19:22  [ТС]     Два максимальных значения из 10 целых чисел #3
Но возможно ли данную задачу решить без указателей и массивов? т.к. данная задача из Дейтела и на данном этапе требуется решение с использованием только цикла и не более.
MrGluck
Модератор
Эксперт CЭксперт С++
7000 / 4171 / 595
Регистрация: 29.11.2010
Сообщений: 11,061
05.06.2013, 19:38     Два максимальных значения из 10 целых чисел #4
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
#include <iostream>
 
int main()
{
    int max1, max2, x;
    bool flag1 = false, flag2 = false;
    for (int i=0; i < 10; i++)
    {
        std::cin >> x;
        if (!flag1)
        {
            max1 = x;
            flag1 = true;
        }
        else if (!flag2)
        {
            if (max1 < x)
            {
                max2 = max1;
                max1 = x;
            }
            else
                max2 = x;
            flag2 = true;
        }
        else if (max1 < x)
        {
            max2 = max1;
            max1 = x;
        }
        else if (max2 < x)
            max2 = x;
    }
    std::cout << "Max1: " << max1 << "\nMax2: " << max2 << std::endl;
}
Добавлено через 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
#include <iostream>
 
int main()
{
    int max1, max2, x;
    bool flag1 = false, flag2 = false;
    for (int i=0; i < 10; i++)
    {
        std::cin >> x;
        if (!flag1)
        {
            max1 = x;
            flag1 = true;
        }
        else if (max1 < x)
        {
            max2 = max1;
            max1 = x;
        }
        else if (max2 < x || !flag2)
        {
            max2 = x;
            flag2 = true;
        }
    }
    std::cout << "Max1: " << max1 << "\nMax2: " << max2 << std::endl;
}
dickivs
46 / 46 / 6
Регистрация: 25.11.2011
Сообщений: 270
Завершенные тесты: 1
06.06.2013, 21:57  [ТС]     Два максимальных значения из 10 целых чисел #5
Но должно быть решение еще проще ... ??? других идей нет?
MrGluck
Модератор
Эксперт CЭксперт С++
7000 / 4171 / 595
Регистрация: 29.11.2010
Сообщений: 11,061
06.06.2013, 22:28     Два максимальных значения из 10 целых чисел #6
Один хедер i/o, один цикл, 3 условия, переменные лишь int и bool, какого черта вы ждете, что будет еще проще?
undertacker
9 / 9 / 0
Регистрация: 28.04.2013
Сообщений: 55
06.06.2013, 23:02     Два максимальных значения из 10 целых чисел #7
dickivs, может это тебе полегче покажется, хотя метод
MrGluck, тоже достаточно прост...
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
#include <iostream>
using namespace std;
int main() {
        int counter = 0;
        int a, b;
        int hightGrade1 = 0;
        int hightGrade2 = 0;
        while (counter < 10)
        {
                cout << "enter element: ";
                cin >> a;
                if(a > hightGrade1)
                        hightGrade1 = a;
 
                if(hightGrade1 > hightGrade2){
                    b = hightGrade2;
                    hightGrade2 = hightGrade1;
                    hightGrade1 = b;
                }
 
                counter ++;
        }
        cout << "max1 = " << hightGrade1 << " max2 = " << hightGrade2 << endl;
        system("Pause void");
        return 0;
}
MrGluck
Модератор
Эксперт CЭксперт С++
7000 / 4171 / 595
Регистрация: 29.11.2010
Сообщений: 11,061
06.06.2013, 23:26     Два максимальных значения из 10 целых чисел #8
Цитата Сообщение от undertacker Посмотреть сообщение
MrGluck, тоже достаточно прост...
и неправилен.
system треубет хедера cstdlib,
что будет, если я введу отрицательные числа?

Добавлено через 28 секунд
Можете смотреть в сторону
C++
1
std::numeric_limits<int>::min()
Genn55
360 / 207 / 39
Регистрация: 26.12.2012
Сообщений: 694
07.06.2013, 03:09     Два максимальных значения из 10 целых чисел #9
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 <iostream>
using namespace std;
int main()
{
 
        int a, max1, max2;
        cout << "enter : "<<"\n";
        for (int i = 0; i < 10; i ++)
        {
              cin >> a;
              if(i == 0)
              {
                max1 = a;
                max2 = a;
              }
                if((a > max1)&&(i >0))
                   max1 = a;
                if(max1 > max2)
                {
                    int temp = max2;
                    max2 = max1;
                    max1 = temp;
                }
 
         }
        cout << "max1 = " << max1 << " max2 = " << max2 <<"\n";
 
        return 0;
}
работает со всеми числами
MrGluck
Модератор
Эксперт CЭксперт С++
7000 / 4171 / 595
Регистрация: 29.11.2010
Сообщений: 11,061
07.06.2013, 04:08     Два максимальных значения из 10 целых чисел #10
Я бы еще добавил так:
C++
1
2
3
4
5
if(i == 0)
{
    max1 = max2 = a;
    continue;
}
Genn55
360 / 207 / 39
Регистрация: 26.12.2012
Сообщений: 694
07.06.2013, 04:37     Два максимальных значения из 10 целых чисел #11
А для чего?Цикл все равно будет продолжаться,а это просто инициализация переменных, чтобы было с чем сравнивать.Все равно первое число будет введено и с ним пойдет сравнение.
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
07.06.2013, 06:08     Два максимальных значения из 10 целых чисел #12
Цитата Сообщение от Genn55 Посмотреть сообщение
а это просто инициализация переменных
поэтому можно вынести из цикла, ибо заведомо известно, что условие выполнится только один раз, а все остальные сравнения являются бессмысленными.

Добавлено через 2 минуты
сразу же отпадет необходимость тут во второй части (хотя можно было и в первом условии написать continue)
Цитата Сообщение от Genn55 Посмотреть сообщение
(a > max1)&&(i >0)
MrGluck
Модератор
Эксперт CЭксперт С++
7000 / 4171 / 595
Регистрация: 29.11.2010
Сообщений: 11,061
07.06.2013, 06:12     Два максимальных значения из 10 целых чисел #13
Genn55,
1. дабы дальше не считало
2. дабы освободить себя от лишних проверок
3. потому что это логично, не?
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
07.06.2013, 06:17     Два максимальных значения из 10 целых чисел #14
Цитата Сообщение от Genn55 Посмотреть сообщение
работает со всеми числами
И не работает он со всеми числами. Вам необходимо два разных максимума, а не один и тот же.
Если первое введенное число больше всех остальных, то получим что max1==max2==одному числу.

Добавлено через 18 секунд
Цитата Сообщение от MrGluck Посмотреть сообщение
потому что это логично, не?
потому что не правильно
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
07.06.2013, 06:18     Два максимальных значения из 10 целых чисел #15
Вот Вам для примера:
Название: Безымянный.png
Просмотров: 34

Размер: 3.2 Кб
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2013, 06:25     Два максимальных значения из 10 целых чисел
Еще ссылки по теме:
C++ В чем ошибка? В массиве целых чисел найти количество максимальных элементов
C++ Найти минимальный элемент из максимальных элементов строк двухмерного массива целых чисел
C++ Дан массив а, состоящий из n целых чисел (n < = 100). Найти количество максимальных элементов массива
C++ Дан массив а, состоящий из n целых чисел (n < = 100). Найти количество максимальных элементов массива
Задана матрица целых чисел A(n×n). Сформировать массив B(n) из максимальных элементов столбцов заданной матрицы C++

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

Или воспользуйтесь поиском по форуму:
MrGluck
Модератор
Эксперт CЭксперт С++
7000 / 4171 / 595
Регистрация: 29.11.2010
Сообщений: 11,061
07.06.2013, 06:25     Два максимальных значения из 10 целых чисел #16
Croessmah, я имел ввиду логично не выполнять лишних итераций и использовать инструкцию continue.
По логике действительно не верно, собственно именно подобный пример и заставил меня использовать два флага для установки максимумов вместо одного.
Но ТСу все сложно.
Yandex
Объявления
07.06.2013, 06:25     Два максимальных значения из 10 целых чисел
Ответ Создать тему
Опции темы

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