С Новым годом! Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 19.02.2014
Сообщений: 28
1

Найти три наибольших элемента массива

12.09.2014, 22:51. Показов 2246. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ввести массив действительных чисел длиной n (n < 30). Найти три наибольших элемента массива.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.09.2014, 22:51
Ответы с готовыми решениями:

Найти три минимальных элемента массива
Найти три минимальных элемента массива и их порядковый номер. Программу я написал и она вроде...

Из массива X(N) удалить три наибольших простых числа.(СИ)
(СИ)Из массива X(N) удалить три наибольших простых числа.

Переставить первые три и последние три элемента одномерного динамического массива
Дан одномерный массив из N элементов. Переставить первые три и последние три элемента, сохранив...

Даны три числа. Найти сумму двух наибольших из них
Даны три числа. Найти сумму двух наибольших из них.

2
191 / 161 / 116
Регистрация: 14.09.2013
Сообщений: 302
13.09.2014, 13:25 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
#include <stdio.h>
#include <limits.h>
 
int main( void ){
    int n, i;
    double a[31], max1, max2, max3;
    scanf("%d", &n);
    max1 = max2 = max3 = (double)LONG_MIN;
    for (i = 0; i < n; i++){
        scanf("%lf", &a[i]);
        if (a[i] >= max1){
            max3 = max2;
            max2 = max1;
            max1 = a[i];
        }
        else
        if (a[i] >= max2){
            max3 = max2;
            max2 = a[i];
        }
        else
        if (a[i] >= max3)
            max3 = a[i];
    }
    if (max1 != (double)LONG_MIN)
        printf("%lf ", max1);
    if (max2 != (double)LONG_MIN)
        printf("%lf ", max2);
    if (max3 != (double)LONG_MIN)
        printf("%lf", max3);
    return 0;
}
2
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
14.09.2014, 12:56 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include "greatest.h"
 
double* max3(const double* arr, unsigned int siz)
{
    static double max[3];
    if( siz < 3 ) { return NULL; }
    max[0] = max[1] = max[2] = *arr;
    while( --siz ) {
        ++arr;
        if( *arr < max[2] ) { continue; }
        if( *arr > max[0] ) {
            max[2] = max[1];
            max[1] = max[0];
            max[0] = *arr;
        } else if( *arr > max[1] ) {
            max[2] = max[1];
            max[1] = *arr;
        } else {
            max[2] = *arr;
        }
    }
    return max;
}
 
TEST max3_123()
{
    double arr[] = { 1.0, 2.0, 3.0 };
    double* max = max3(arr, sizeof(arr) / sizeof(arr[0]));
    if( !max ) { FAIL(); }
    ASSERT_EQ(3.0, max[0]);
    ASSERT_EQ(2.0, max[1]);
    ASSERT_EQ(1.0, max[2]);
    PASS();
}
 
TEST max3_1243()
{
    double arr[] = { 1.0, 2.0, 4.0, 3.0 };
    double* max = max3(arr, sizeof(arr) / sizeof(arr[0]));
    if( !max ) { FAIL(); }
    ASSERT_EQ(4.0, max[0]);
    ASSERT_EQ(3.0, max[1]);
    ASSERT_EQ(2.0, max[2]);
    PASS();
}
 
TEST max3_15243()
{
    double arr[] = { 1.0, 5.0, 2.0, 4.0, 3.0 };
    double* max = max3(arr, sizeof(arr) / sizeof(arr[0]));
    if( !max ) { FAIL(); }
    ASSERT_EQ(5.0, max[0]);
    ASSERT_EQ(4.0, max[1]);
    ASSERT_EQ(3.0, max[2]);
    PASS();
}
 
SUITE(test_max3) {
    RUN_TEST(max3_123);
    RUN_TEST(max3_1243);
    RUN_TEST(max3_15243);
}
 
/* Add definitions that need to be in the test runner's main file. */
GREATEST_MAIN_DEFS();
 
int main(int argc, char **argv) {
    GREATEST_MAIN_BEGIN();      /* command-line arguments, initialization. */
    RUN_SUITE(test_max3);
    GREATEST_MAIN_END();        /* display results */
}
1
14.09.2014, 12:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.09.2014, 12:56
Помогаю со студенческими работами здесь

Разработать функцию,которая находит 2 наибольших элемента массива
Помогите пожалуйста))) Разработать функцию,которая находит 2 наибольших элемента массива

Найти четыре наибольших элемента матрицы
Задана матрица A(n,m). Найти четыре наибольших числа. Диапазон . Двухмерный массив. Напишите,...

Разработать функцию, которая находит два наибольших элемента массива
Реализовать функцию, производящую операции над одномерным массивом согласно варианта задания....

Процедуры и функции: Разработать функцию,которая находит 2 наибольших элемента массива
Помогите пожалуйста))) Разработать функцию,которая находит 2 наибольших элемента массива ...

Составить программу поиска элемента массива, который является наименьшим из наибольших по столбцам
Задан числовой массив А. Составить программу поиска элемента массива, который является наименьшим...

Написать программу, меняющую местами два наибольших элемента одномерного массива с первым и последним
Написать программу, меняющую местами два наибольших элемента одномерного массива с первым и...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru