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

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

Войти
Регистрация
Восстановить пароль
 
KostyaKulakov
Заблокирован
#1

сортировка по никнайму - C++

27.08.2012, 20:33. Просмотров 378. Ответов 4
Метки нет (Все метки)

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
#include <iostream>
#include <iomanip>
using namespace std;
 
int intCmpReverse(const void * pa, const void *pb)
{
    const int* a = reinterpret_cast<const int*>(pa);
    const int* b = reinterpret_cast<const int*>(pb);
 
    return -(*a - *b);
}
 
struct User
{
    int id;
    char nickname[51];
    int karma;
};
 
 
void addKarma(User& user, int amount = 1)
{
    user.karma += amount;
}
 
int main()
{  
 
     User user[] =  { {15, "picknick", 0}, 
                      {18, "Ololoh", 0}, 
                      {15, "AlexeyZakharenkov", 0},
                      {18, "Tanya", 0} };
 
    addKarma(user[0], 245);
    addKarma(user[1], 226);
    addKarma(user[2], 9000158);
    addKarma(user[3], 9000157);
    
 
 
    int   sortkarma[4] = {user[0].karma, user[1].karma, user[2].karma, user[3].karma};
 
    qsort(sortkarma, 4, sizeof(int), intCmpReverse);
 
    cout << "SORT KARMA" << endl << endl;
 
    for (int i=0; i<4; ++i)
    {
        for(int k=0; k < 4; k++)
        {
            if(sortkarma[i] == user[k].karma)
            {
                cout << i+1 << ". " << user[k].nickname << endl;
                //cout << " Karma: " << user[k].karma << endl;
            } 
        }
    }
 
    cout << endl << endl << "SORT NICKNAME" << endl << endl;
 
    cout << endl;
 
}
помогите сделать сортировку по длинне никнейма. пробывал через strlen не получилось )

Добавлено через 2 минуты
написать программу,
которая бы с помощью функции qsort сортировала массив пользователей а) по
величине кармы; б) по nickname.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2012, 20:33     сортировка по никнайму
Посмотрите здесь:

Сортировка выбором, сортировка вставкой, сортировка заменой, сортировка обменом ("пузырьковая" сортировка) - C#
Создать класс, содержащий массив и реализующий алгоритмы сортировки и бинарного поиска в этом массиве. Класс описать с помощью...

Блок схема.Сортировка «Пузырьком», Сортировка методом «Последовательных перестановок», Сортировка «Вставками» - Pascal
Помогите, нужны блок схемы Сортировка «Вставками» Program Vstavka; uses dos; Type mass=array of integer; Var i,b,n,j,a:...

Разработать программу сортировки: сортировка перестановкой, сортировка вставкой, быстрая сортировка - Prolog
Задание: Разработать программу сортировки: - сортировка перестановкой - сортировка вставкой - быстрая сортировка

1)Бинарный поиск 2)Сортировка включением 3)Шейкерная сортировка 4)Сортировка разделением - Pascal
1)В заданном массиве К(N) найти индексы элементов, которые кратны минимальному значению элемента массива. 2)Задан массив AX (N). Добавить...

Сортировка массива целых чисел A(n) по убыванию(используя метод обменная сортировка) - Turbo Pascal
Помогите написать программу для сортировки массива целых чисел A(n) по убыванию(используя метод обменная сортировка). Или хотя бы без этого...

Сортировка Шелла. Написал программу, не могу понять, почему сортировка не выполняется - C++
Программа создает динамический массив с рандомным заполнением. Дальше выбор сортировок, пузырьком или сортировка Шелла. Вот она то и не...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пaтрик
415 / 390 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
27.08.2012, 20:38     сортировка по никнайму #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
#include <iostream>
#include <cstring>
#include <cstdlib>
 
struct User
{
    int id;
    char nickname[51];
    int karma;
};
 
int cmp_by_nick_length(const void* ptr1, const void* ptr2)
{
    return std::strlen(((User*)ptr1)->nickname) - 
        std::strlen(((User*)ptr2)->nickname);
}
 
int main()
{
    User user[] =  { 
        { 15, "picknick", 0 }, 
        { 18, "Ololoh", 0 }, 
        { 15, "AlexeyZakharenkov", 0 },
        { 18, "Tanya", 0} 
    };
    std::qsort(user, 4, sizeof(User), cmp_by_nick_length);
    for(int i = 0; i < 4; i++)
        std::cout << user[i].nickname << std::endl;
}
link
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
27.08.2012, 20:49     сортировка по никнайму #3
А нафига юзать qsort в C++, если есть std::sort?
Пaтрик
415 / 390 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
27.08.2012, 20:55     сортировка по никнайму #4
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
#include <iostream>
#include <cstring>
#include <algorithm>
 
struct User
{
    int id;
    char nickname[51];
    int karma;
};
 
bool cmp_by_nick_length(const User& user1, const User& user2)
{
    return std::strlen(user1.nickname) < std::strlen(user2.nickname);
}
 
int main()
{
    User user[] =  { 
        { 15, "picknick", 0 }, 
        { 18, "Ololoh", 0 }, 
        { 15, "AlexeyZakharenkov", 0 },
        { 18, "Tanya", 0} 
    };
    std::sort(std::begin(user), std::end(user), cmp_by_nick_length);
    for(int i = 0; i < 4; i++)
        std::cout << user[i].nickname << std::endl;    
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2012, 21:26     сортировка по никнайму
Еще ссылки по теме:

Быстрая сортировка, ситуация, при которой сортировка работает не корректно - Turbo Pascal
Procedure sort(m, l: Integer); Var i, j, x, w: Integer; Begin i := m; j := l; x := ar; Repeat While...

Сортировка слиянием. В каком куске кода происходит сортировка и каким именно образом? - C++
Помогите, пожалуйста, разобраться. Подскажите в каком куске кода происходит сортировка и каким именно образом? #include &lt;iostream&gt; ...

Быстрая сортировка(сортировка Хоара). Отсортировать фрагмент массива - C++
Мне нужно отсортировать фрагмент массива, расположенный между первым и последним отрицательным элементом. Немогу понять как устоновить...

Быстрая сортировка и Обменная сортировка - реализация API функции - C (СИ)
Всех приветствую! Делаю курсовой проект и появилась одна проблем-ка.... У меня есть готовые две программы(быстрая сортировка и Обменная...


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

Или воспользуйтесь поиском по форуму:
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
27.08.2012, 21:26     сортировка по никнайму #5
вместо strlen наверно нужно strcmp или что-то такое использовать. иначе это сортировка по длинне ника, а не по нику. А в остальном Патрик уже все написал.
Yandex
Объявления
27.08.2012, 21:26     сортировка по никнайму
Ответ Создать тему
Опции темы

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