Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
a.n.o.n.i.m
137 / 137 / 39
Регистрация: 26.02.2011
Сообщений: 543
1

Сортировка структуры по полю char

09.04.2012, 11:48. Просмотров 740. Ответов 4
Метки нет (Все метки)

Есть структура

C
1
2
3
4
5
6
7
8
struct AeroFlot
{
    char* destination[50];
    char* tip[50]; 
    int nomer; 
    int zanmest;
    int svobmest;
};
Нужно отсортировать ее
Делаю сортировку

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
for(i=0;i<n;i++)
                {
                                                        for(int j = 0 ; j < n - i - 1 ; j++)
                                                        {
                                                            if(air[j].svobmest>air[j+1].svobmest)
                                                            {
                                                                                                 tmp1=air[j].nomer;
                                                                                                 tmp4=air[j].destination;
                                                                                                 tmp5=air[i].tip;
                                                                                                 tmp2=air[j].svobmest;
                                                                                                 tmp3=air[j].zanmest;
                                                                                                 air[j].nomer=air[j+1].nomer;
                                                                                                 air[j].destination=air[j+1].destination;
                                                                                                 air[j].tip=air[j+1].tip;
                                                                                                 air[j].svobmest=air[j+1].svobmest;
                                                                                                 air[j].zanmest=air[j+1].zanmest;
                                                                                                 air[j+1].nomer=tmp1;
                                                                                                 air[j+1].destination=tmp4;
                                                                                                 air[j+1].tip=tmp5;
                                                                                                 air[j+1].svobmest=tmp2;
                                                                                                 air[j+1].zanmest=tmp3;
                                                            }
                                                        }
                }
Проблем не возникает сортировать интовские поля а как чаровские поля сортировать air[j].destination и air[i].tip просто вылазиет ошибка у меня

Код
 ISO C++ forbids assignment of arrays
и так 6 раз

обьявляю так

C
1
2
3
    int tmp1,tmp2,tmp3;
    char *tmp4[50];
    char *tmp5[50];

Как исправить?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2012, 11:48
Ответы с готовыми решениями:

Сортировка по структуры по полю ФИО
О ГУРУ программирования! Помогите мне решить задачу. Нужно отсортировать структуру по полю FIO. Но...

Сортировка структуры по полю double
Доброе утро! Написал программу.. вот: #include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; #include...

Быстрая сортировка структуры по одному полю
Задача такова: Составить программу, в которой будет таблица, которая будет выводится после...

Сортировка структуры по полю "фамилия"
Нужно отсортировать структуру. Не знаю как это сделать, помогите пожалуйста! Сортировка по фамилии,...

Поиск по полю структуры
struct s { int k; char p; float l; char n; } дана структура как осуществить поиск по...

4
Kuzia domovenok
2945 / 2503 / 651
Регистрация: 25.03.2012
Сообщений: 8,945
Записей в блоге: 1
Завершенные тесты: 1
09.04.2012, 12:10 2

Не по теме:

Почему тут не первый форумчанин уже спрашивает про структуру Аэрофлот? Тут что, учащиеся целыми классами и из одних школ регистрируются?

Цитата Сообщение от a.n.o.n.i.m Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if(air[j].svobmest>air[j+1].svobmest)
                                                            {
                                                                                                 tmp1=air[j].nomer;
                                                                                                 tmp4=air[j].destination;
                                                                                                 tmp5=air[i].tip;
                                                                                                 tmp2=air[j].svobmest;
                                                                                                 tmp3=air[j].zanmest;
                                                                                                 air[j].nomer=air[j+1].nomer;
                                                                                                 air[j].destination=air[j+1].destination;
                                                                                                 air[j].tip=air[j+1].tip;
                                                                                                 air[j].svobmest=air[j+1].svobmest;
                                                                                                 air[j].zanmest=air[j+1].zanmest;
                                                                                                 air[j+1].nomer=tmp1;
                                                                                                 air[j+1].destination=tmp4;
                                                                                                 air[j+1].tip=tmp5;
                                                                                                 air[j+1].svobmest=tmp2;
                                                                                                 air[j+1].zanmest=tmp3;
                                                            }
                                                        }
Жесть какая! А не пробовал ?
C++
1
2
3
tmp=air[j];
air[j]=air[j+1];
air[j+1]=tmp;
0
a.n.o.n.i.m
137 / 137 / 39
Регистрация: 26.02.2011
Сообщений: 543
09.04.2012, 12:21  [ТС] 3
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Жесть какая! А не пробовал ?
Ты типа пошутиЛ?конечно же так не будет работать.Решил проблему так

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
for(i=0;i<n;i++)
                {
                                                        for(int j = 0 ; j < n - i - 1 ; j++)
                                                        {
                                                            if(air[j].svobmest>air[j+1].svobmest)
                                                            {
                                                                                                 tmp1=air[j].nomer;
                                                                                                 strcpy(tmp4,air[j].destination);
                                                                                                 strcpy(tmp5,air[j].tip);
                                                                                                 tmp2=air[j].svobmest;
                                                                                                 tmp3=air[j].zanmest;
                                                                                                 air[j].nomer=air[j+1].nomer;
                                                                                                 strcpy (air[j].destination,air[j+1].destination);
                                                                                                 strcpy (air[j].tip,air[j+1].tip);
                                                                                                 air[j].svobmest=air[j+1].svobmest;
                                                                                                 air[j].zanmest=air[j+1].zanmest;
                                                                                                 air[j+1].nomer=tmp1;
                                                                                                 strcpy(air[j+1].destination,tmp4);
                                                                                                 strcpy(air[j+1].tip,tmp5);
                                                                                                 air[j+1].svobmest=tmp2;
                                                                                                 air[j+1].zanmest=tmp3;
                                                            }
                                                        }
                }
C
1
2
    char tmp4[50];
    char tmp5[50];
C
1
2
3
4
5
6
7
8
struct AeroFlot
{
    char destination[50]; //пункт назначения
    char tip[50]; //тип самолёта
    int nomer; //номер рейса
    int zanmest;//занятые места
    int svobmest;//общее количество мест
}; //определение массива с записями
Этот вопрос неактуален

Да кто откуда это не важно,один фик берут одни и те же задания только меняют то что найти,поэтому так происходит,я структуру пишу сам и первый раз,поэтому столько вопросов
0
Kuzia domovenok
2945 / 2503 / 651
Регистрация: 25.03.2012
Сообщений: 8,945
Записей в блоге: 1
Завершенные тесты: 1
09.04.2012, 12:47 4
Ты типа пошутиЛ?конечно же так не будет работать.Решил проблему так
О ЧУДО!!! Такое работает!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <iostream>
struct AeroFlot
{
    char* destination[50];
    char* tip[50]; 
    int nomer; 
    int zanmest;
    int svobmest;
}; 
int main(){
    struct AeroFlot a;
    struct AeroFlot b;
    a.nomer=1;
    b=a;
    std::cin>>b.svobmest;
    a=b;
    return 0;
}
0
a.n.o.n.i.m
137 / 137 / 39
Регистрация: 26.02.2011
Сообщений: 543
09.04.2012, 12:48  [ТС] 5
Ничего не могу против сказать,но я пишу в чистом си
0
09.04.2012, 12:48
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2012, 12:48

Доступ к полю структуры из буфера
Добрый день. Столкнулся с такой проблемой - необходимо обратиться к полю структуры,которая...

Сортировка списка по полю
Написал код сортировки. Сортирует отлично. Есть ли какой - нибудь другой принцип сортировки?...

Можно ли присвоить случайное значение (rand), полю символьному структуры, состоящему из N элементов?
Здравствуйте, возник один вопросик. Можно ли присвоить случайное значение (rand), полю символьному...


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

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

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