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

Сортировка массива, состоящего из 8 структур - C++

Восстановить пароль Регистрация
 
AK_U
 Аватар для AK_U
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 22
27.02.2010, 15:29     Сортировка массива, состоящего из 8 структур #1
Пусть дана структура:
C++
1
2
3
4
5
6
struct Marsh
{
    char start_punkt[15];       //начальный пункт
    char finish_punkt[15];      //конечный пункт
    int number;                 //номер маршрута
};
Потом вводим данные в массив из восьми структур Marsh. И требуется упорядочить записи по номерам маршрутов( это должна быть отдельная функция). Я пробовал вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void sort_by_number( Marsh *m1, const int max)
{
    
    for( int j=0; j<max-1; j++)
        for( int k=j+1; k<max; k++)
        {
            if( m1[j].number > m1[k].number)
            {
                Marsh temp = m1[j];
                m1[j] = m1[k];
                m1[k] = temp;
            }
            
        }
}
Но ничего не получилось. В чем ошибка или есть более красивый( главное что б рабочий) вариант?
Заранее спасибо!)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2010, 15:29     Сортировка массива, состоящего из 8 структур
Посмотрите здесь:

C++ Сортировка массива структур
C++ Сортировка массива структур...
Сортировка массива структур C++
Сортировка массива структур C++
C++ Сортировка массива структур
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
27.02.2010, 16:32     Сортировка массива, состоящего из 8 структур #2
Код с виду правильный.
А что не получилось?
Может быть ты обращаешься к функции неправильно?
Совет: расставь по программе "printf" или "cout <<", чтоб увидеть ход событий
Или пошаговое выполнение (если транслятор позволяет).
Ты думаешь, чего это мы такие умные? - да просто следовали этому совету (т.к.форумов и инетов
в ту пору еще небыло)
ЗЫ: А функцией qsort пользоваться можно?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
27.02.2010, 16:57     Сортировка массива, состоящего из 8 структур #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
#include <stdio.h>
#include <stdlib.h>
 
 
typedef struct {
    char start[15];
    char finish[15];
    int num;
} Marsh_t;
 
int marshNumCmp(const void *a, const void *b){
    return (*(Marsh_t*)a).num - (*(Marsh_t*)b).num;
}
 
#define MAX_MARSH 8
 
int main(void){
    Marsh_t m[MAX_MARSH];
    int i;
 
    for ( i = 0; i < MAX_MARSH; ++i){
        printf("\nMarshrut #%d\n", i + 1);
        printf("Start point: ");
        scanf("%s", m[i].start);
        printf("End point: ");
        scanf("%s", m[i].finish);
        printf("Number: ");
        scanf("%d%*c", &m[i].num);
    }
 
    qsort(m, MAX_MARSH, sizeof(Marsh_t), marshNumCmp);
    printf("\nNumber\tStart\tFinish\n");
    for ( i = 0; i < MAX_MARSH; ++i )
        printf("%d\t%s\t%s\n", m[i].num, m[i].start, m[i].finish);
 
    exit(0);
}
AK_U
 Аватар для AK_U
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 22
01.03.2010, 02:55  [ТС]     Сортировка массива, состоящего из 8 структур #4
Можно пользоваться чем угодно, и qsort в том числе. Ошибка была в выводе массива, причем я ее исправил, но почему программа не работала, так и не понял. Ей не нравилось определение переменной( по которой идет цикл) внутри цикла for, который находится в ветвлении switch.
Yandex
Объявления
01.03.2010, 02:55     Сортировка массива, состоящего из 8 структур
Ответ Создать тему
Опции темы

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