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

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

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

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

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

Помогите решить задачу!!! три наибольших элемента массива за один просмотр
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2009, 18:56     Как найти три наибольших элемента массива за один просмотр
Посмотрите здесь:

C++ Три массива в один
C++ Найти 3 наибольших элемента матрицы
C++ Найти 3 наибольших элемента
C++ Даны три числа. Найти сумму двух наибольших из них
C++ Даны три числа. Найти сумму двух наибольших из них
C++ найти три наибольших элемента в массиве
C++ Найти три наименьших элемента произвольного одномерного массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
04.11.2009, 19:13     Как найти три наибольших элемента массива за один просмотр #2
где-то была такая же задачка тока для двух. принцип один и тотже. заваодишь три перменные и если массив содержит больше трёх элементов записываешь в них максимальные значения. то есть в 1м совсем максимальное, 2м - нутак средне максимальное и в 3м совсем не масимальное но ещё максимально среди оставшихся и усё
breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
04.11.2009, 19:14     Как найти три наибольших элемента массива за один просмотр #3
уточни условие, очереди проходили
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
04.11.2009, 19:40     Как найти три наибольших элемента массива за один просмотр #4
Kristinka, отсортируй и возьми первые 3 ) умеешь?
TanT
эволюционирую потихоньку
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
04.11.2009, 19:58     Как найти три наибольших элемента массива за один просмотр #5
Цитата Сообщение от Андрейка Посмотреть сообщение
Kristinka, отсортируй и возьми первые 3 ) умеешь?
за один просмотр? напомни сортировку такую, что-то я упустил
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
04.11.2009, 19:59     Как найти три наибольших элемента массива за один просмотр #6
TanT, аа там за один да я воще std::sort всунул бы и норм)) меньше всего писать если на С++
TanT
эволюционирую потихоньку
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
04.11.2009, 20:05     Как найти три наибольших элемента массива за один просмотр #7
Цитата Сообщение от Андрейка Посмотреть сообщение
TanT, аа там за один да я воще std::sort всунул бы и норм)) меньше всего писать если на С++
нет, тёска, такое точно для зачёта не прокатит. да сказывается мне, что попахивает ту чистым С. так Kristinka? и в пред уточняйти язык
valeriikozlov
Эксперт C++
4663 / 2489 / 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; 
}
sheka
Босс
161 / 127 / 7
Регистрация: 03.06.2009
Сообщений: 751
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 минуты
Андрейка, я даже не догадался сортировкой сделать)))
правда это не в один проход.
Kristinka
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 8
04.11.2009, 22:21  [ТС]     Как найти три наибольших элемента массива за один просмотр #10
Спасибки огромнейшее!

Добавлено через 2 минуты
Я имела ввиду язык с....сорри))))
valeriikozlov
Эксперт C++
4663 / 2489 / 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; 
}
sheka
Босс
161 / 127 / 7
Регистрация: 03.06.2009
Сообщений: 751
05.11.2009, 00:14     Как найти три наибольших элемента массива за один просмотр #12
valeriikozlov, а в Си cin,cout нет?
Somebody
2777 / 1591 / 142
Регистрация: 03.12.2007
Сообщений: 4,169
Завершенные тесты: 1
05.11.2009, 13:05     Как найти три наибольших элемента массива за один просмотр #13
Цитата Сообщение от sheka Посмотреть сообщение
а в Си cin,cout нет?
Там вообще нет классов и объектов, можешь переменную class назвать. :-)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2009, 16:20     Как найти три наибольших элемента массива за один просмотр
Еще ссылки по теме:

C++ Найти три наименьших элемента произвольного одномерного массива
C++ Записать два элемента одного массива, как один элемент другого
C++ Вывести в порядке убывания три наибольших элемента массива. У меня выводит как хочешь
Дан целочисленный массив. Найти 2 наибольших элемента C++
C++ Найти три наибольших элемента из набора и вывести их в порядке убывания

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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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);
}
Yandex
Объявления
05.11.2009, 16:20     Как найти три наибольших элемента массива за один просмотр
Ответ Создать тему
Опции темы

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