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

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

Войти
Регистрация
Восстановить пароль
 
 
iluxa1810
13 / 13 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
#1

Среди 10 чисел найти 2 максимальных - C++

27.11.2011, 17:10. Просмотров 824. Ответов 15
Метки нет (Все метки)

Надо,что бы программа среди 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
29
30
31
32
33
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
    int number;
    int largest1;
    int largest2;
    int i=1;
    cout<<"Введите число"<< endl;
    cin>>number;
            largest1 = number ;
            largest2 = number ;
    while (number!=00)
    {
 
       if (largest1<number)
        {
            largest2=largest1;
            largest1 = number;
        }
 
++i;
        cout<<"Введите число"<< endl;
                        cin>>number;
 
    }
    cout << "largest1= "<<largest1<<"\nlargest2= "<<largest2<<endl;
    return 0;
 
 
}
Я вот так сделал,но если мы ввод начинаем с самого большого числа,то программа пишет 2 одинаковых числа в ответе .Так же сказано,что надо сделать что бы программа управлялась счетчиком,но у меня это сделать не получилось т.к ,когда программа спрашивает последнее число ,она с ним никаких операций не проводит...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2011, 17:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Среди 10 чисел найти 2 максимальных (C++):

Найти минимальное значение среди найденных 4 максимальных - C++
Необходимо написать программу которая будет находить минимальное среди 4 максимальных елементов массива. Размерность массива 10. Елементы...

Найти минимальный элемент среди двух максимальных - C++
Всем привет, вот такая вот проблемка возникла, нужен мне минимальный элемент среди двух максимальных код вот так вот сделал: int...

Найти минимум среди максимальных элементов столбцов матрицы - C++
помогите выдаёт ошибку после компиляции вот код для переделки есть массив xнау а int min = a; for(int i = 1; i &lt; =n; ++i) { int...

Найти минимум среди максимальных элементов столбцов матрицы - C++
вот код для переделки // Поиск максимального элемента среди минимальных int max = a; // Это будущий максимум, пока что равен...

Найти минимальный элемент среди максимальных элементов строк матрицы - C++
двумерный массив. Размерность матрицы задаётся пользователем. Найти минимальный элемент среди максимальных элементов строк матрицы....

Среди чисел на четных местах найти максимум,а среди нечетных найти минимум - C++
Текст полной задачи: С клавиатуры вводится произвольная последовательность целых чисел.Числа вводятся до тех пор,пока пользователь не...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Сыроежка
Заблокирован
27.11.2011, 17:16 #2
iluxa1810,

Вам надо сделать следующим образом. Сначала вам надо объявить массив из десяти элементов. Заполнить его какими-то значениями. После этого можно приступить к решению основной задачи. Она выполняется в два этапа. Сначала вы находите первый максимальный элемент массива, точнее, как я понимаю, вам надо найти его позицию в массиве. А затем просто, начиная со следующего элемента после найденного максимума, искать другой элемент, который содержит такое же равное значение (его между прочим может и не быть!).
0
iluxa1810
13 / 13 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
27.11.2011, 17:19  [ТС] #3
Я пока не до шел до массивов в книге Дейтлов .Они это просят сделать после изучения циклов >_<
0
SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
27.11.2011, 17:26 #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
#include<iostream>
#include<locale>
#include<conio.h>
using std::cin;
using std::cout;
using std::endl;
int main()
{
    setlocale(LC_ALL, "Russian");
        int number;
        int largest1;
        int largest2;
        int i=1;
        cout<<"Введите число"<< endl;
        cin>>number;
                        largest1 = number ;
                        largest2 = number ;
        while (i!=10)
        {
            cout<<"Введите число"<< endl;
            cin>>number;
       if (largest1<number || largest2<number)
                {
                        largest2=largest1;
                        largest1 = number;
                }
++i;
        }
        cout << "largest1= "<<largest1<<"\nlargest2= "<<largest2<<endl;
        getch();
        return 0;
 
 
}
1
iluxa1810
13 / 13 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
27.11.2011, 17:30  [ТС] #5
SleepMaster,
Вроде не правильно ...
0
SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
27.11.2011, 17:48 #6
Какие данные вводили? Думаю так точно должно работать:
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
#include<iostream>
#include<locale>
#include<conio.h>
using std::cin;
using std::cout;
using std::endl;
int main()
{
        setlocale(LC_ALL, "Russian");
        int number;
        int largest1;
        int largest2;
        int i=1;
        cout<<"Введите число"<< endl;
        cin>>number;
                        largest1 = number ;
                        largest2 = number ;
        while (i!=10)
        {
                        cout<<"Введите число"<< endl;
                        cin>>number;
       if (largest1<number || largest2<number)
                {
                        if (largest1>largest2)
                        { largest2=largest1; 
                        largest1 = number; }
                        else
                        { largest1=largest2; 
                        largest2 = number; }
                }
++i;
        }
        cout << "largest1= "<<largest1<<"\nlargest2= "<<largest2<<endl;
                getch();
        return 0;
 
 
}
1
iluxa1810
13 / 13 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
27.11.2011, 18:00  [ТС] #7
SleepMaster, Хотя вроде правильно .
Спасибо

Добавлено через 3 минуты
Если от самого большого к примеру с 10 до 1,то выдаст 2 числа 10

Добавлено через 2 минуты
т.е ,что бы алгоритм работал,первое число не должно быть самым большим...
0
SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
27.11.2011, 18:21 #8
Цитата Сообщение от iluxa1810 Посмотреть сообщение
Хотя вроде правильно .
Спасибо
Не за что. Плюсани мне сообщение с программой, если не трудно
1
iluxa1810
13 / 13 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
27.11.2011, 18:30  [ТС] #9
Немного все равно не правильно .При вводе большого числа 50 например,а всех остальных меньше 50,то оба числа будут 50 .
0
SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
27.11.2011, 18:46 #10
Так нормально?
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
#include<iostream>
#include<locale>
#include<conio.h>
using std::cin;
using std::cout;
using std::endl;
int main()
{
        setlocale(LC_ALL, "Russian");
        int number;
        int largest1;
        int largest2;
        int i=1;
        cout<<"Введите число"<< endl;
        cin>>number;
                        largest1 = number ;
            largest2 = -2000000;
        while (i!=10)
        {
                        cout<<"Введите число"<< endl;
                        cin>>number;
       if (largest1<number || largest2<number)
                {
                                                if (largest1>largest2)
                                                { largest2=largest1; 
                                                largest1 = number; }
                                                else
                                                { largest1=largest2; 
                                                largest2 = number; }
                }
++i;
        }
        cout << "largest1= "<<largest1<<"\nlargest2= "<<largest2<<endl;
                getch();
        return 0;
 
 
}
1
iluxa1810
13 / 13 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
27.11.2011, 18:50  [ТС] #11
Так работает нормально
0
easybudda
Модератор
Эксперт CЭксперт С++
9625 / 5573 / 947
Регистрация: 25.07.2009
Сообщений: 10,708
27.11.2011, 19:04 #12
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
44
45
46
47
48
49
50
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define PMAX(a, b) ( (*(a)) < (*(b)) ? (b) : (a) )
 
int * max_element(const int * arr, size_t count){
    return ( count < 1 ) ? NULL : ( count < 2 ) ? (int*)arr : ( *arr < *(arr+count-1) ) ? max_element(arr+1, count-1) : max_element(arr, count-1);
}
 
void dump(const int * arr, size_t count){
    while ( count-- )
        printf("%d%c", *arr++, ( count ) ? ' ' : '\n');
}
 
void random_fill(int * arr, size_t count, int minval, int maxval){
    while ( count-- )
        *arr++ = rand() % (maxval-minval+1) + minval;
}
 
#define ELEMENTS_COUNT 10
#define TESTS_NUMBER 5
#define MINVAL 0
#define MAXVAL 99
 
int main(void){
    int arr[ELEMENTS_COUNT], i, *p1, *p2;
    
    srand(time(NULL));
    for ( i = 0; i < TESTS_NUMBER; ++i ){
        random_fill(arr, ELEMENTS_COUNT, MINVAL, MAXVAL);
        printf("Array:\n");
        dump(arr, ELEMENTS_COUNT);
        if ( ! ( p1 = max_element(arr, ELEMENTS_COUNT) ) ){
            fprintf(stderr, "Can't find first max element!\n");
            exit(1);
        }
        printf("First: %d\n", *p1);
 
        if ( ! ( p2 = max_element(arr, p1 - arr) ) && ! ( p2 = max_element(p1 + 1, ELEMENTS_COUNT + arr - p1 - 1) ) ){
            fprintf(stderr, "Can't find second max element!\n");
            exit(1);
        }
        if ( p2 < p1 && ( p1 = max_element(p1 + 1, ELEMENTS_COUNT + arr - p1 - 1) ) )
            p2 = PMAX(p1, p2);
        printf("Second: %d\n\n", *p2);
    }
    
    exit(0);
}
1
iluxa1810
13 / 13 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
27.11.2011, 19:37  [ТС] #13
SleepMaster,
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>
using std::cin;
using std::cout;
using std::endl;
int main()
{
    int number;
    int largest1;
    int largest2;
    int i=1;
    cout<<"Введите число"<< endl;
    cin>>number;
            largest1 = number ;
            largest2=-100500;
 
    while (i!=10)
    {
        cout<<"Введите число"<< endl;
            cin>>number;
 
            if (largest1<number || largest2<number)
                            {
                                                            if (largest1<number)
                                                            {
                                                             largest1 = number; }
                                                            else
                                                            {
                                                            largest2 = number; }
                            }
++i;
 
 
    }
    cout << "largest1= "<<largest1<<"\nlargest2= "<<largest2<<endl;
    return 0;
Немного упростил твою программу,еще мне кажется,что можно убрать первый if
0
SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
27.11.2011, 19:44 #14
Цитата Сообщение от iluxa1810 Посмотреть сообщение
Немного упростил твою программу,еще мне кажется,что можно убрать первый if
Вообще, я брал за основу твою программу, отловил баги и дал тебе.
А что касается этой проги, ну введи последовательно: 100, 50, 75, 150 дальше можешь вводить единицы.
0
Abylaikhan
-8 / 3 / 0
Регистрация: 14.11.2011
Сообщений: 22
28.11.2011, 16:47 #15
Вот моё решение на с++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
using namespace std;
int main ()
{
    int n,a[10000],b,j=0,i,k,max=-9999,min1=999999,min2=99999,max2=-99999;
    cin>>n;
    for(i=1;i<=n;i++)
    {
                     cin>>a[i];
                     if(a[i]>max) max=a[i];
                     }               
                     for(i=1;i<=n;i++)
                     {
                                      if(a[i]>max2 && a[i]<max) max2=a[i];
                                      }      
                     cout<<max2;            
    return 0;
    }
Добавлено через 1 минуту
Цитата Сообщение от Abylaikhan Посмотреть сообщение
int n,a[10000],b,j=0,i,k,max=-9999,min1=999999,min2=99999,max2=-99999;
на переменные не обращай внимания я как было с прошлой задачи оставил
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2011, 16:47
Привет! Вот еще темы с ответами:

Найти в массиве сумму максимума среди чисел с нечетными номерами и минимума среди чисел с четными номерами - C++
Найти сумму наибольшего значения среди чисел с нечетными номерами и наименьшего значения среди чисел с четными номерами тест ...

Найти минимальное число среди положительных чисел и максимальное число среди отрицательных чисел - C++
Никак не могу понять ,как написать эту программу.Помогите пожалуйста. Задан одномерный массив А (10) действительных чисел. Ввести массив...

Нужно найти минимальное значение среди позитивных чисел и максимальное среди отрицательных. - C++
Есть массив А, который вводится с клавиатуры. Нужно найти минимальное значение среди позитивных чисел и максимальное среди отрицательных....

Найти значения и номера элементов являющихся наименьшим среди чётных чисел и наибольшим среди нечетных - C++
помогите сделать данное задание Дан одномерный массив из N целых чисел т N&lt;=16. Найти значения и порядковые номера элементов,являющихся...


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

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

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