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

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

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

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

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

Найдите два наибольших значения из 10 чисел. [Замечание. Каждое число вы должны вводить только один раз.].
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2013, 18:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Два максимальных значения из 10 целых чисел (C++):

Последовательность целых чисел. Найти два минимальных / два максимальных элемента - C++
Дана последовательность целых чисел a1,a2,...,an, где n=> 3. Найти: а) два максимальных элемента последовательности; б) два минимальных...

Создать два файла целых чисел, первый содержит значения дней, а второй — значения месяцев - C++
File67. Дан строковый файл, содержащий даты в формате «день/месяц/год», причем под день и месяц отводится по две позиции, а под год —...

В одномерном массиве целых чисел содержится два нулевых значения. Подсчитать сумму чисел, заключённых между двумя нулями. - C++
В одномерном массиве целых чисел содержится два нулевых значения. Подсчитать сумму чисел, заключённых между двумя нулями. Если можно с...

найти два максимальных значения в массиве - C++
Собственно, не получается реализовать нахождение второго максимального значения: // Найдти 2 максимальных значения без сортировки массива...

В массиве целых чисел найти n максимальных элементов - C++
Как массиве целых чисел размером size найти n максимальных? Добавлено через 1 минуту массив не изменять

Даны два целых числа A и B (A < B). Найти сумму всех целых чисел от A до B включительно - C++
Даны два целых числа A и B (A &lt; B). Найти сумму всех целых чисел от A до B включительно. как это реализовать на с++??

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DIEZEL-man
13 / 13 / 0
Регистрация: 17.02.2013
Сообщений: 54
05.06.2013, 19:11 #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;}
1
dickivs
46 / 46 / 6
Регистрация: 25.11.2011
Сообщений: 270
Завершенные тесты: 1
05.06.2013, 19:22  [ТС] #3
Но возможно ли данную задачу решить без указателей и массивов? т.к. данная задача из Дейтела и на данном этапе требуется решение с использованием только цикла и не более.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
05.06.2013, 19:38 #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;
}
1
dickivs
46 / 46 / 6
Регистрация: 25.11.2011
Сообщений: 270
Завершенные тесты: 1
06.06.2013, 21:57  [ТС] #5
Но должно быть решение еще проще ... ??? других идей нет?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
06.06.2013, 22:28 #6
Один хедер i/o, один цикл, 3 условия, переменные лишь int и bool, какого черта вы ждете, что будет еще проще?
0
undertacker
9 / 9 / 0
Регистрация: 28.04.2013
Сообщений: 55
06.06.2013, 23:02 #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;
}
1
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
06.06.2013, 23:26 #8
Цитата Сообщение от undertacker Посмотреть сообщение
MrGluck, тоже достаточно прост...
и неправилен.
system треубет хедера cstdlib,
что будет, если я введу отрицательные числа?

Добавлено через 28 секунд
Можете смотреть в сторону
C++
1
std::numeric_limits<int>::min()
0
Genn55
367 / 214 / 41
Регистрация: 26.12.2012
Сообщений: 708
07.06.2013, 03:09 #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;
}
работает со всеми числами
1
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
07.06.2013, 04:08 #10
Я бы еще добавил так:
C++
1
2
3
4
5
if(i == 0)
{
    max1 = max2 = a;
    continue;
}
0
Genn55
367 / 214 / 41
Регистрация: 26.12.2012
Сообщений: 708
07.06.2013, 04:37 #11
А для чего?Цикл все равно будет продолжаться,а это просто инициализация переменных, чтобы было с чем сравнивать.Все равно первое число будет введено и с ним пойдет сравнение.
0
Croessmah
Эксперт CЭксперт С++
13234 / 7506 / 846
Регистрация: 27.09.2012
Сообщений: 18,435
Записей в блоге: 3
Завершенные тесты: 1
07.06.2013, 06:08 #12
Цитата Сообщение от Genn55 Посмотреть сообщение
а это просто инициализация переменных
поэтому можно вынести из цикла, ибо заведомо известно, что условие выполнится только один раз, а все остальные сравнения являются бессмысленными.

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

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

Размер: 3.2 Кб
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2013, 06:18
Привет! Вот еще темы с ответами:

Даны два целых числа А и В (А<В). Найти сумму квадратов всех целых чисел от А до В включительно - C++
Даны два целых числа А и В (А&lt;В). Найти сумму квадратов всех целых чисел от А до В включительно.

В чем ошибка? В массиве целых чисел найти количество максимальных элементов - C++
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #define N 16 #define A 0 #define B 5 void Init(int *a, int n) { ...

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

Дан массив а, состоящий из n целых чисел (n < = 100). Найти количество максимальных элементов массива - C++
Дан массив а, состоящий из n целых чисел (n &lt; = 100). Найти количество максимальных элементов массива. #include &lt;iostream.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.06.2013, 06:18
Ответ Создать тему
Опции темы

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