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

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

Войти
Регистрация
Восстановить пароль
 
Starstuck
4 / 4 / 0
Регистрация: 01.02.2012
Сообщений: 124
#1

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

04.11.2012, 16:30. Просмотров 605. Ответов 0
Метки нет (Все метки)

Не понимаю смысла функции 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");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2012, 16:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Compare - не понимаю смысла (C++):

Compare vs == - C++
может вопрос странный, но какая строчка будет работать быстрее? !(*iter1).compare(*iter2) или *iter1 == *iter2

Метод compare string - C++
Всем привет! Не могу понять в чем у меня ошибка! Применяю метод compare из string, но компилятор выдает ошибку, что мало параметров в...

Std::string compare - C++
#include &lt;cstring&gt; #include &lt;iostream&gt; int main() { std::string a = &quot;aa&quot;; std::string b = &quot;ab&quot;; std::cout &lt;&lt;...

Описать функцию Compare - C++
Последняя из 6 задачек (5 осилил, 1 с вашей помощью) Описать функцию Compare(A,B,n), возвразающую 1, если можно преобразовать...

Функция Compare для стандартной сортировки - C++
Имеется стандартная сортировка, использующая функцию mysorted sort(tasks.begin(), tasks.end(), mysorted); Вот один прототип функции...

Что делает функция compare в коде и зачем она нужна в qsort - C++
Объясните, пожалуйста, что делает функция compare (17 строка) в данном случае и зачем она нужна в qsort? #include &lt;stdio.h&gt; ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2012, 16:30
Привет! Вот еще темы с ответами:

Сравнение двух строк (экземпляры класса string ) задействуя метод compare - C++
Здравствуйте, мне необходимо сравнить два экземпляра класса string, один из экземпляров вводится с клавиатуры, второй экземпляр берется из...

Не понимаю смысла типа Boolean и поэтому не могу составить программу - Pascal ABC
Составить программу подсчета у логического вектора В = { bi }, i = 1/n максимального количества стоящих подряд элементов с значением false....

не пойму смысла задачи - Pascal ABC
Есть задача не пойму что делать ?? просто смысла не понял я вот фотка задачи

Не могу понять смысла JFrame - Java
Вот такие пироги такой смысл,немогу сделать,подскажите пожалуйста


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

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

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