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

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

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

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

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

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

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

Сортировка массива структур - C++
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop #include &lt;stdio.h&gt; ...

Сортировка массива структур - C++
Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN; записи...

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

Сортировка массива структур - C++
Нужно создать структуру Student c полями Имя, Номер группы, Оценки (массив из 5 элементов) #include &quot;stdafx.h&quot; using namespace std; ...

Сортировка массива структур - C++
Помогите с сортировкой даных в массиве структур. Мне нужно реализовать сортировку по любому заданному полю. Вот программа: ...

Сортировка массива структур - C++
Господа есть массив структур, необходимо его отсортировать по полю name с помощью функции qsort. Вроде как написал без ошибок, но...

Сортировка массива структур - C++
В общем, то что в названии темы, то и не получается. Не хочет присваиваться адрес предыдущей ячейки в массиве stud1.h #include...

Сортировка массива структур - C++
Дана структура WORKER и массив из 10 стркутур. Нужно 1)сортировать список 2) вывести на экран рабочих чей стаж больше числа введённого с...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Day
1154 / 959 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
27.02.2010, 16:32     Сортировка массива, состоящего из 8 структур #2
Код с виду правильный.
А что не получилось?
Может быть ты обращаешься к функции неправильно?
Совет: расставь по программе "printf" или "cout <<", чтоб увидеть ход событий
Или пошаговое выполнение (если транслятор позволяет).
Ты думаешь, чего это мы такие умные? - да просто следовали этому совету (т.к.форумов и инетов
в ту пору еще небыло)
ЗЫ: А функцией qsort пользоваться можно?
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
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
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 22
01.03.2010, 02:55  [ТС]     Сортировка массива, состоящего из 8 структур #4
Можно пользоваться чем угодно, и qsort в том числе. Ошибка была в выводе массива, причем я ее исправил, но почему программа не работала, так и не понял. Ей не нравилось определение переменной( по которой идет цикл) внутри цикла for, который находится в ветвлении switch.
Yandex
Объявления
01.03.2010, 02:55     Сортировка массива, состоящего из 8 структур
Ответ Создать тему
Опции темы

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