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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нарисовать окружность http://www.cyberforum.ru/cpp-beginners/thread688349.html
Пишу на Visual C++ 2012. вот коды: // Win32Project1.cpp: определяет точку входа для приложения. // #include "stdafx.h" #include "Win32Project1.h" #include "laba2.h"
C++ почему то первый в этом коде у меня не нулевой элемент а идет по порядку все #include "stdafx.h" #include <iostream> #include "conio.h" #include "locale.h" #define countof(array) (sizeof(array) / sizeof((array))) using namespace std; int main(void) http://www.cyberforum.ru/cpp-beginners/thread688338.html
Строки: Дано предложение. Удалить из него все буквы «с» C++
Дано предложение. Удалить из него все буквы «с».
Работа с файлом C++
#include <stdio.h> #include <conio.h> int main(void){ FILE *fid; char ch, p; int i=1; if ((fid = fopen("D:\\data1.txt", "w")) == NULL)
C++ Ввод массива в Memo http://www.cyberforum.ru/cpp-beginners/thread688330.html
#include <stdio.h> void __fastcall TForm1::Button1Click(TObject *Sender) { int a={3, -1, 15, -7, 9, 3, 0}; int i,maxOtr; for (i=0; i<=6; i++) maxOtr=a; for (i=1; i<=6; i++) if (a>maxOtr && a>0) maxOtr=a;
C++ Строки: из слова «Программа» составить слова: «грамм», «рога», «гора» Составьте программу, которая из слова «Программа» составляет слова: «грамм», «рога», «гора». подробнее

Показать сообщение отдельно
Starstuck
4 / 4 / 0
Регистрация: 01.02.2012
Сообщений: 124

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

04.11.2012, 16:30. Просмотров 583. Ответов 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");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru