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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.77
Kristinka
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 8
#1

Как найти три наибольших элемента массива за один просмотр - C++

04.11.2009, 18:56. Просмотров 4313. Ответов 13
Метки нет (Все метки)

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

Вывести в порядке убывания три наибольших элемента массива. У меня выводит как хочешь - C++
В принципе вот: x1=mas;x2=mas;x3=mas; for(i=3; i<n; i++) if(mas>=x1 || mas>=x2 || mas>=x3) { ...

Найти три наибольших элемента в массиве - C++
Здравствуйте! Помогите, пожалуйста, с задачей: необходимо найти три наибольших элемента в массиве. Как найти наибольший я понимаю, а вот...

Найти три наибольших элемента из набора и вывести их в порядке убывания - C++
Всем привет) Помогите решить задачи) Пол года не занимался, совсем все забыл) Буду очень благодарен) 1. Дано целое число N (> 3) и...

Найти три наименьших элемента произвольного одномерного массива - C++
Найти три наименьших элемента произвольного одномерного массива. ---------------- очень срочно нужно! помогите пожалуйста

Найти три наименьших элемента произвольного одномерного массива - C++
1 Найти 3 наименьших элемента произвольного одномерного массива.

Даны три числа. Найти сумму двух наибольших из них - C++
Скоро экзамен , кто чем может ) Помоги ближнему , ибо смех продлевает жизнь...) 10. Даны три числа. Найти сумму двух наибольших...

13
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
04.11.2009, 19:13 #2
где-то была такая же задачка тока для двух. принцип один и тотже. заваодишь три перменные и если массив содержит больше трёх элементов записываешь в них максимальные значения. то есть в 1м совсем максимальное, 2м - нутак средне максимальное и в 3м совсем не масимальное но ещё максимально среди оставшихся и усё
0
breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
04.11.2009, 19:14 #3
уточни условие, очереди проходили
0
Андрейка
420 / 224 / 27
Регистрация: 25.03.2009
Сообщений: 744
04.11.2009, 19:40 #4
Kristinka, отсортируй и возьми первые 3 ) умеешь?
1
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
04.11.2009, 19:58 #5
Цитата Сообщение от Андрейка Посмотреть сообщение
Kristinka, отсортируй и возьми первые 3 ) умеешь?
за один просмотр? напомни сортировку такую, что-то я упустил
0
Андрейка
420 / 224 / 27
Регистрация: 25.03.2009
Сообщений: 744
04.11.2009, 19:59 #6
TanT, аа там за один да я воще std::sort всунул бы и норм)) меньше всего писать если на С++
0
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
04.11.2009, 20:05 #7
Цитата Сообщение от Андрейка Посмотреть сообщение
TanT, аа там за один да я воще std::sort всунул бы и норм)) меньше всего писать если на С++
нет, тёска, такое точно для зачёта не прокатит. да сказывается мне, что попахивает ту чистым С. так Kristinka? и в пред уточняйти язык
0
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.11.2009, 21:54 #8
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
#include <windows.h>
#include <iostream.h>
int main ()
{
    int *mas, n, i, a, b, c;
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    cout<<"Ââåäèòå êîëè÷åñòâî ýëåìåГ*òîâ Г¬Г*Г±Г±ГЁГўГ*: "<<endl;
    cin>>n;
    mas=new int[n];
    cout<<"Ââåäèòå ýëåìåГ*ГІГ» Г¬Г*Г±Г±ГЁГўГ*: "<<endl;
    for(i=0; i<n; i++)
    {
       cout<<"["<<i<<"]= ";
       cin>>mas[i];
    }
    cout<<"èñõîäГ*ûé Г¬Г*Г±Г±ГЁГў"<<endl;
    for(i=0; i<n; i++)
       cout<<mas[i]<<" ";
    cout<<endl;
    a=mas[0];
    b=mas[1];
    c=mas[2];
    for(i=3; i<n; i++)
        if(mas[i]>=a || mas[i]>=b || mas[i]>=c)
        {
            if(a<=b && a<=c)
                a=mas[i];
            else
                if(b<=c)
                    b=mas[i];
                else
                    c=mas[i];
        }       
        cout<<"Òðè Г*Г*èáîëüøèõ Г·ГЁГ±Г«Г*: "<<a<<"  "<<b<<"  "<<c<<endl;
        return 0; 
}
2
sheka
Босс
161 / 127 / 7
Регистрация: 03.06.2009
Сообщений: 750
04.11.2009, 21:58 #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
30
31
32
33
34
#include <iostream>
#include <conio.h>
using std::cout;     // подключишь cout
using std::cin;       // подключишь cin
using std::endl;     // подключишь endl
 
int max[2];
 
int min_index(int a,int b){
    if (max[a]<=max[b]) return(a);
    else return(b);
}
 
main(){
    int i;
    int n=5;
    int a[n];
    for(i=0;i<=n-1;i++){
        cout<<"vvedi element massiva"<<endl;
        cin>>a[i];
    }
    for(i=0;i<=2;i++){
        max[i]=a[i];
    }
    for(i=3;i<=n;i++){
        if (max[min_index(0,min_index(1,2))]<a[i]){
            max[min_index(0,min_index(1,2))]=a[i];
        }
    }
    for(i=0;i<=2;i++){
        cout<<max[i]<<endl;
    }
    getch();
}
Добавлено через 2 минуты
Андрейка, я даже не догадался сортировкой сделать)))
правда это не в один проход.
1
Kristinka
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 8
04.11.2009, 22:21  [ТС] #10
Спасибки огромнейшее!

Добавлено через 2 минуты
Я имела ввиду язык с....сорри))))
0
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.11.2009, 22:38 #11
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
#include <windows.h>
int main ()
{
    int *mas, n, i, a, b, c;
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    printf("Ââåäèòå êîëè÷åñòâî ýëåìåГ*òîâ Г¬Г*Г±Г±ГЁГўГ*: \n");
    scanf("%d", &n);
    mas=new int[n];
    printf("Ââåäèòå ýëåìåГ*ГІГ» Г¬Г*Г±Г±ГЁГўГ*: \n");
    for(i=0; i<n; i++)
        {
       printf("[%d]= ", i);
       scanf("%d", &mas[i]);
        }
    printf("èñõîäГ*ûé Г¬Г*Г±Г±ГЁГў\n");
    for(i=0; i<n; i++)
       printf("%d  ", mas[i]);
    printf("\n");
        a=mas[0];
        b=mas[1];
        c=mas[2];
        for(i=3; i<n; i++)
                if(mas[i]>=a || mas[i]>=b || mas[i]>=c)
                {
                        if(a<=b && a<=c)
                                a=mas[i];
                        else
                                if(b<=c)
                                        b=mas[i];
                                else
                                        c=mas[i];
                }               
        printf("Òðè Г*Г*èáîëüøèõ Г·ГЁГ±Г«Г*: %d,  %d,  %d\n", a, b, c);
        return 0; 
}
0
sheka
Босс
161 / 127 / 7
Регистрация: 03.06.2009
Сообщений: 750
05.11.2009, 00:14 #12
valeriikozlov, а в Си cin,cout нет?
0
Somebody
2791 / 1602 / 147
Регистрация: 03.12.2007
Сообщений: 4,200
Завершенные тесты: 1
05.11.2009, 13:05 #13
Цитата Сообщение от sheka Посмотреть сообщение
а в Си cin,cout нет?
Там вообще нет классов и объектов, можешь переменную class назвать. :-)
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
05.11.2009, 16:20 #14
Цитата Сообщение от valeriikozlov Посмотреть сообщение
mas=new int[n];
А ещё в С оператора new нет...

Вот ещё вариант, совсем на С
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
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
 
#define GREATESTS_NUM 3
 
int main(){
    int *pArray = NULL;
    int count, i, j, k;
    int greatests[GREATESTS_NUM];
    char buf[BUFSIZ];
    
    for ( i = 0; i < GREATESTS_NUM; i++ )
        greatests[i] = INT_MIN;
    
    printf("Enter array elements count: ");
    fgets(buf, BUFSIZ, stdin);
    if ( ( count = atoi(buf) ) < GREATESTS_NUM ) {
        printf("ERROR: Array can't hold less then %d values!\n", GREATESTS_NUM);
        exit(1);
    }
    if ( ( pArray = (int *)calloc(count, sizeof(int)) ) == NULL ){
        printf("ERROR: Not enough memory!\n");
        exit(1);
    }
    for ( i = 0; i < count; i++ ) {
        printf("Array[%d] = ", i);
        pArray[i] = atoi(fgets(buf, BUFSIZ, stdin));
    }
    
    for ( i = 0; i < count; i++ ) {
        for ( j = 0; j < GREATESTS_NUM; j++ ){
            if ( pArray[i] > greatests[j] ){
                for ( k = (GREATESTS_NUM - 1); k > j; k-- )
                    greatests[k] = greatests[k - 1];
                greatests[j] = pArray[i];
                break;
            }
        }
    }
    
    printf("\nAll Array values:\n");
    for ( i = 0; i < count; i++ )
        printf("Array[%d] = %d\n", i, pArray[i]);
    
    printf("\n%d greatests:\n", GREATESTS_NUM);
    for ( i = 0; i < GREATESTS_NUM; i++ )
        printf("Greatests[%d] = %d\n", i, greatests[i]);
    
    free(pArray);
    exit(0);
}
0
05.11.2009, 16:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2009, 16:20
Привет! Вот еще темы с ответами:

Даны три числа. Найти сумму двух наибольших из них - C++
Дана задача: даны три числа. Найти сумму двух наибольших из них. С применением if.

Найти 3 наибольших элемента - C++
Дано целое число n(&gt;3) и набор из n чисел.Найти 3 наибольших элемента из данного набора и вывести эти элементы в порядке убывания их...

Найти 3 наибольших элемента матрицы - C++
Помогите, пожалуйста, написать программу на С++ для нахождения в матрице 3х3 трех наибольших элементов и вывод их на экран в окошки Edit....

Дан целочисленный массив. Найти 2 наибольших элемента - C++
дан целочисленный массив. Найти 2 наибольших элемента


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

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

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