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

Compare - не понимаю смысла - C++

Восстановить пароль Регистрация
 
Starstuck
 Аватар для Starstuck
4 / 4 / 0
Регистрация: 01.02.2012
Сообщений: 124
04.11.2012, 16:30     Compare - не понимаю смысла #1
Не понимаю смысла функции COMPARE в решении данной задачи. (16 строчка)
Сортируем по убыванию, все просто. Почему возвращаемое значение этой функции - разность величин?
Что вообще должна возвращать функция COMPARE? Разве в нашем случае не наименьшее из двух величин? if (a<b) return a; else return b; Объясните, пожалуйста.



Условие:
Написать программу, которая находит «башню» из атлетов максимальной высоты. Атлеты характеризуются двумя параметрами – массой и силой. Сила равна максимальной массе, которую атлет может держать на плечах. Известно, что если атлет тяжелее, то он точно сильнее. Подсказка: упорядочьте атлетов по силе и стройте башню сверху. Вверх естественно поместить самого слабого. Входом является число атлетов n и n пар (масса, сила)




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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
struct athlet
{
    long m;
    long pow;
    athlet()
    {
        m=0;
        pow=0;
    }
};
 
int compare (const void * a, const void * b)
{
    athlet aa=*(athlet*)a;
    athlet bb=*(athlet*)b;
    return (aa.m==bb.m ? aa.pow-bb.pow : aa.m-bb.m);
}
 
int main()
{
 
    long n;
    scanf("%i", &n);
    athlet *mass; // Введем указатель *mass типа athlet
    mass=(athlet*)malloc(n*sizeof(athlet)); // создадим динамически массив
    for(long i=0;i<n;i++)
        scanf("%i %i", &mass[i].m, &mass[i].pow);
    qsort(mass, n, sizeof(athlet), compare);
    
    long res=1;
    long now=(*mass).m; // текущая масса
    for(long i=1;i<n;i++) // считаем высоту
        if(mass[i].pow>=now)
        {
            res++;
            now+=i[mass].m; // увел. текущую массу
        }
 
    printf("%i", res);
        system ("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2012, 16:30     Compare - не понимаю смысла
Посмотрите здесь:

Описать функцию Compare C++
C++ С++ не понимаю
C++ Не Понимаю С++
C++ не понимаю условие!!
Метод compare string C++
Что делает функция compare в коде и зачем она нужна в qsort C++
Std::string compare C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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