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

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

Восстановить пароль Регистрация
 
iluxa1810
12 / 12 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
27.11.2011, 17:10     Среди 10 чисел найти 2 максимальных #1
Надо,что бы программа среди 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 одинаковых числа в ответе .Так же сказано,что надо сделать что бы программа управлялась счетчиком,но у меня это сделать не получилось т.к ,когда программа спрашивает последнее число ,она с ним никаких операций не проводит...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2011, 17:10     Среди 10 чисел найти 2 максимальных
Посмотрите здесь:

C++ найти минимум среди максимальных элементов столбцов матрицы c++
Найти минимум среди максимальных элементов столбцов матрицы C++
C++ Найти количество максимальных элементов последовательности чисел
C++ Нужно найти минимальное значение среди позитивных чисел и максимальное среди отрицательных.
C++ Найти минимальное число среди положительных чисел и максимальное число среди отрицательных чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
27.11.2011, 17:16     Среди 10 чисел найти 2 максимальных #2
iluxa1810,

Вам надо сделать следующим образом. Сначала вам надо объявить массив из десяти элементов. Заполнить его какими-то значениями. После этого можно приступить к решению основной задачи. Она выполняется в два этапа. Сначала вы находите первый максимальный элемент массива, точнее, как я понимаю, вам надо найти его позицию в массиве. А затем просто, начиная со следующего элемента после найденного максимума, искать другой элемент, который содержит такое же равное значение (его между прочим может и не быть!).
iluxa1810
12 / 12 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
27.11.2011, 17:19  [ТС]     Среди 10 чисел найти 2 максимальных #3
Я пока не до шел до массивов в книге Дейтлов .Они это просят сделать после изучения циклов >_<
SleepMaster
 Аватар для SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
27.11.2011, 17:26     Среди 10 чисел найти 2 максимальных #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;
 
 
}
iluxa1810
12 / 12 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
27.11.2011, 17:30  [ТС]     Среди 10 чисел найти 2 максимальных #5
SleepMaster,
Вроде не правильно ...
SleepMaster
 Аватар для SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
27.11.2011, 17:48     Среди 10 чисел найти 2 максимальных #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;
 
 
}
iluxa1810
12 / 12 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
27.11.2011, 18:00  [ТС]     Среди 10 чисел найти 2 максимальных #7
SleepMaster, Хотя вроде правильно .
Спасибо

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

Добавлено через 2 минуты
т.е ,что бы алгоритм работал,первое число не должно быть самым большим...
SleepMaster
 Аватар для SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
27.11.2011, 18:21     Среди 10 чисел найти 2 максимальных #8
Цитата Сообщение от iluxa1810 Посмотреть сообщение
Хотя вроде правильно .
Спасибо
Не за что. Плюсани мне сообщение с программой, если не трудно
iluxa1810
12 / 12 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
27.11.2011, 18:30  [ТС]     Среди 10 чисел найти 2 максимальных #9
Немного все равно не правильно .При вводе большого числа 50 например,а всех остальных меньше 50,то оба числа будут 50 .
SleepMaster
 Аватар для SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
27.11.2011, 18:46     Среди 10 чисел найти 2 максимальных #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;
 
 
}
iluxa1810
12 / 12 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
27.11.2011, 18:50  [ТС]     Среди 10 чисел найти 2 максимальных #11
Так работает нормально
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
27.11.2011, 19:04     Среди 10 чисел найти 2 максимальных #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);
}
iluxa1810
12 / 12 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
27.11.2011, 19:37  [ТС]     Среди 10 чисел найти 2 максимальных #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
SleepMaster
 Аватар для SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
27.11.2011, 19:44     Среди 10 чисел найти 2 максимальных #14
Цитата Сообщение от iluxa1810 Посмотреть сообщение
Немного упростил твою программу,еще мне кажется,что можно убрать первый if
Вообще, я брал за основу твою программу, отловил баги и дал тебе.
А что касается этой проги, ну введи последовательно: 100, 50, 75, 150 дальше можешь вводить единицы.
Abylaikhan
-8 / 3 / 0
Регистрация: 14.11.2011
Сообщений: 22
28.11.2011, 16:47     Среди 10 чисел найти 2 максимальных #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;
на переменные не обращай внимания я как было с прошлой задачи оставил
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2015, 15:49     Среди 10 чисел найти 2 максимальных
Еще ссылки по теме:

C++ Из 10 чисел вводимых из клавиатуры, найти 2 максимальных
C++ Среди чисел на четных местах найти максимум,а среди нечетных найти минимум
C++ Найти несколько максимальных чисел и запомнить их индекс

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

Или воспользуйтесь поиском по форуму:
vallinor
2 / 2 / 0
Регистрация: 20.04.2015
Сообщений: 19
14.05.2015, 15:49     Среди 10 чисел найти 2 максимальных #16
В книге Дейтелов есть задача 2 главы - примерно такая же:
Среди 10 чисел найти 2 максимальных. Условие: чтобы числа не повторялись.

В задаче поставлены условия - использовать if и while. Вот что получилось.


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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
//Нахождение 2 максимальных чисел из 10 без повторения чисел
#include <cstdlib>  //библиотека управления процессом
#include <iostream> //библиотека ввода-вывода
#include <Windows.h>    //библиотека команд Windows
using namespace std;    //использование в программе команд библиотеки iostream
 
int main()  //главная функция
{   //начало программы
 
    int counter=1,  //счетчик чисел
        largest1,   //первое максимальное число
        largest2=0,  //второе максимальное число
        number, //введенное число
        a, b, c, d, e, f, g, h, i, j;   //числа, с которыми будет сравнение
          
    setlocale(LC_ALL,"RUSSIAN");    //локаль параметров - вводим в программу русский язык
    while(counter<=10)  //цикл Пока 
    {   //начвало цикла
        cout<<"Введите число: ";    //ввод с клавиатуры
        cin>> number;   //вводим переменную
        a=number;   //присваиваем значение переменной
        if (largest1<number || largest2<number) //условие Если
        {   //начало условия
            if (largest1<number)    //вложенное условие
            {   //начало вложенного условия
                largest1=number; }  //при истинном вложенном условии
            else    //иначе
            {   //начало иначе
                largest2=number; }  //при ложном вложенном условии
        }   //конец условия
        counter++;  //счетчик +1
        cout<<"Введите число: ";    //вывод на экран
        cin>> number;   //вводим значение переменной
        b=number;   //присваиваем значение переменной
        if (largest1<number || largest2<number) //условие Если
        {   //начало условия
            if (largest1<number)    //вложенное условие
            {   //начало вложенного условия
                largest1=number; }  //при истинном вложенном условии
            else    //иначе
            {   //начало иначе
                largest2=number; }  //при ложном вложенном условии
        }   //конец условия
        if(b==a)    //условие не вводить одно число дважды
        {   //начало условия
            cout<<"Данное число уже введено. Введите другое число\n";   //вывод на экран
            cout<<"Введите число: ";    //вывод на экран
            cin>> number;   //вводим значение переменной
            b=number;   //присваиваем значение переменной
            if (largest1<number || largest2<number) //условие Если
            {   //начало условия
            if (largest1<number)    //вложенное условие
            {   //начало вложенного условия
                largest1=number; }  //при ложном вложенном условии
            else    //иначе
            {   //начало иначе
                largest2=number; }  //при ложном вложенном условии
        }   //конец условия
            counter++;  //счетчик + 1
        }   //конец условия
        else    //иначе
        {   //начало иначе
            counter++;  //счетчик + 1
        }   //конец иначе
        cout<<"Введите число: ";
        cin>> number;
        c=number;
        if (largest1<number || largest2<number)
        {
            if (largest1<number)
            {
                largest1=number; }
            else
            {
                largest2=number; }
        }
        if(c==a||c==b)
        {
            cout<<"Данное число уже введено. Введите другое число\n";
            cout<<"Введите число: ";
            cin>> number;
            c=number;
            if (largest1<number || largest2<number)
            {
            if (largest1<number)
            {
                largest1=number; }
            else
            {
                largest2=number; }
            }
            counter++;
            }
        else
        {
            counter++;
        } 
        cout<<"Введите число: ";
        cin>> number;
        d=number;
        if (largest1<number || largest2<number)
        {
            if (largest1<number)
            {
                largest1=number; }
            else
            {
                largest2=number; }
        }
        if(d==a || d==b || d==c)
        {
            cout<<"Данное число уже введено. Введите другое число\n";
            cout<<"Введите число: ";
            cin>> number;
            d=number;
            if (largest1<number || largest2<number)
            {
            if (largest1<number)
            {
                largest1=number; }
            else
            {
                largest2=number; }
            }
            counter++;
        }
        else
        {
            counter++;
        } 
        cout<<"Введите число: ";
        cin>> number;
        e=number;
        if (largest1<number || largest2<number)
        {
            if (largest1<number)
            {
                largest1=number; }
            else
            {
                largest2=number; }
        }
        if(e==a || e==b || e==c || e==d)
        {
            cout<<"Данное число уже введено. Введите другое число\n";
            cout<<"Введите число: ";
            e=number;
            if (largest1<number || largest2<number)
            {
            if (largest1<number)
            {
                largest1=number; }
            else
            {
                largest2=number; }
            }
            counter++;
        }
        else
        {
            counter++;
        } 
        cout<<"Введите число: ";
        cin>> number;
        f=number;
        if (largest1<number || largest2<number)
        {
            if (largest1<number)
            {
                largest1=number; }
            else
            {
                largest2=number; }
        }
        if (f==a || f==b || f==c || f==d || f==e)
        {
            cout<<"Данное число уже введено. Введите другое число\n";
            cout<<"Введите число: ";
            cin>> number;
            f=number;
            if (largest1<number || largest2<number)
            {
            if (largest1<number)
            {
                largest1=number; }
            else
            {
                largest2=number; }
            }
            counter++;
        }
        else
        {
            counter++;
        } 
        cout<<"Введите число: ";
        cin>> number;
        g=number;
        if (largest1<number || largest2<number)
        {
            if (largest1<number)
            {
                largest1=number; }
            else
            {
                largest2=number; }
        }
        if(g==a || g==b || g==c || g==d || g==e || g==f)
        {
            cout<<"Данное число уже введено. Введите другое число\n";
            cout<<"Введите число: ";
            cin>> number;
            g=number;
            if (largest1<number || largest2<number)
            {
            if (largest1<number)
            {
                largest1=number; }
            else
            {
                largest2=number; }
        }
            counter++;
        }
        else
        {
            counter++;
        } 
        cout<<"Введите число: ";
        cin>> number;
        h=number;
        if (largest1<number || largest2<number)
        {
            if (largest1<number)
            {
                largest1=number; }
            else
            {
                largest2=number; }
        }
        if(h==a || h==b || h==c || h==d || h==e || h==f || h==g)
        {
            cout<<"Данное число уже введено. Введите другое число\n";
            cout<<"Введите число: ";
            cin>> number;
            h=number;
            if (largest1<number || largest2<number)
            {
            if (largest1<number)
            {
                largest1=number; }
            else
            {
                largest2=number; }
            }
            counter++;
        }
        else
        {
            counter++;
        } 
        cout<<"Введите число: ";
        cin>> number;
        i=number;
        if (largest1<number || largest2<number)
        {
            if (largest1<number)
            {
                largest1=number; }
            else
            {
                largest2=number; }
        }
        if(i==a || i==b || i==c || i==d || i==e || i==f || i==g || i==h)
        {
            cout<<"Данное число уже введено. Введите другое число\n";
            cout<<"Введите число: ";
            cin>> number;
            i=number;
            if (largest1<number || largest2<number)
            {
            if (largest1<number)
            {
                largest1=number; }
            else
            {
                largest2=number; }
            }
            counter++;
        }
        else
        {
            counter++;
        } 
        cout<<"Введите число: ";
        cin>> number;
        j=number;
        if (largest1<number || largest2<number)
        {
            if (largest1<number)
            {
                largest1=number; }
            else
            {
                largest2=number; }
        }
        if(j==a || j==b || j==c || j==d || j==e || j==f || j==g || j==h || j==i)
        {
            cout<<"Данное число уже введено. Введите другое число\n";
            cout<<"Введите число: ";
            cin>> number;
            j=number;
            if (largest1<number || largest2<number)
            {
            if (largest1<number)
            {
                largest1=number; }
            else
            {
                largest2=number; }
            }
            counter++;
        }
        else
        {
            counter++;
        }
    }
    cout <<"Максимальное число среди введенных: "<<largest1<<"\n";
    cout <<"Второе по величине число среди введенных: "<<largest2<<"\n";
    system("pause");    //приостановка программы
    return 0;   //указывает на успешное завершение программы
}   //конец программы

Выложил сюда может пригодится кому, чтобы новую тему не создавать.
Yandex
Объявления
14.05.2015, 15:49     Среди 10 чисел найти 2 максимальных
Ответ Создать тему
Опции темы

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