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

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

Войти
Регистрация
Восстановить пароль
 
AK_U
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 22
#1

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

27.02.2010, 15:29. Просмотров 438. Ответов 3
Метки нет (Все метки)

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

Сортировка слиянием для массива состоящего из букв - C++
Всем привет, помогите пожалуйста с задачкой: с помощью сортировки слиянием нужно отсортировать массив состоящий из букв, которые пишет...

Сортировка массива структур через сортировку массива указателей - C++
Ошибка возникает в функции void sort(student **ppStud, int k, char ch). Кто видит ошибку - помогите, пожалуйста. Код программы: ...

Сортировка массива структур - C++
void sortByFio() { int i,j; char temp; char temp2; char temp3; for (i = 0; i&lt;len; i++) { for ( i = j+1; j&lt;len; j++) { ...

Сортировка массива структур - C++
Ругается на использование структуры, соответственно не работает вся программа. Задача: отсортировать массив по типу культур. struct...

Сортировка массива структур - C++
Есть файл с текстом(this is spartaaaaaa!), нужно посчитать количество повторений каждого символа, вывести все это в консоль, затем...

Сортировка массива структур - C++
Здравствуйте! Помогите пожалуйста реализовать сортировку массива структур по полю &quot;date&quot; (все записи должны быть отсортированны по дате)....

3
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
27.02.2010, 16:32 #2
Код с виду правильный.
А что не получилось?
Может быть ты обращаешься к функции неправильно?
Совет: расставь по программе "printf" или "cout <<", чтоб увидеть ход событий
Или пошаговое выполнение (если транслятор позволяет).
Ты думаешь, чего это мы такие умные? - да просто следовали этому совету (т.к.форумов и инетов
в ту пору еще небыло)
ЗЫ: А функцией qsort пользоваться можно?
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,848
27.02.2010, 16:57 #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);
}
0
AK_U
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 22
01.03.2010, 02:55  [ТС] #4
Можно пользоваться чем угодно, и qsort в том числе. Ошибка была в выводе массива, причем я ее исправил, но почему программа не работала, так и не понял. Ей не нравилось определение переменной( по которой идет цикл) внутри цикла for, который находится в ветвлении switch.
0
01.03.2010, 02:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2010, 02:55
Привет! Вот еще темы с ответами:

Сортировка массива структур - C++
Имеется структура : struct Data_base { string team_name; string city; int scored_goals; int missed_goals;...

Сортировка массива структур - C++
имеется структура struct { char lastname, firstname; unsigned int math, inf, phys; }rat, temp; необходимо отсортировать...

Сортировка массива структур... - C++
Здравствуйте! Не могли бы вы выложить примеры или кинуть ссылочку на интересную статью по сортировке массива структур. Имеется массив...

Сортировка массива структур - C++
Привет всем ! как отсортировать массив структур ? а то почему не получается ... вот код #include &lt;iostream&gt; #include &lt;stdio.h&gt; ...


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

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

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