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

C++, структуры - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.96
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
30.05.2010, 19:29     C++, структуры #1
Описать структуру с именем AEROFLOT содержащую:
название пункта рейса
номер рейса
тип самолета
написать программу, выполняющую сл. действия:
ввод с клавы данных в массив из семи элементов типа AEROFLOT; записи должны быть упорядочены по возрастанию номера рейса.......... ну и так далее
У меня программа есть но я запутался с сортировкой записей,
вот прога:
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
#include <fstream.h> 
#include <string.h> 
#include <stdlib.h> 
 
int main() { 
 
struct aeroflot { 
char naz[15];  
int number; 
char tip[6]; 
}; 
 
aeroflot tr[7]; 
 
//Vvod elementov s klaviaturi 
int kol=7; 
int i; 
cout<< "vvedite nazvanie punkta naznacheniya reisa(ne bolee 15 simvolov) "<<endl 
<< "vvedite nomer reisa "<<endl 
<< "vvedite tip samoleta (ne bolee 6 simvolov)"<<endl; 
 
for (i=0; i<kol; i++) { 
cout << i+1 <<"-i marshrut:" << endl; 
cin>> tr[i].naz >> tr[i].number >> tr[i].tip; 
// cout<< tr[i].naz << tr[i].number << tr[i].tip<<endl; 
} 
//sortirovka 
long imin; 
for (i=0; i<kol-1; i++) { 
    if(tr[i].number>tr[i+1].number){
        imin=tr[i].number;
        aeroflot a = tr[i+1]; 
         tr[i]=tr[i+1];
        tr[i+1]=a;
    }
}
//vivod 
cout << endl << "Otsortirovanniy massiv: " << endl; 
for (i=0; i<kol; i++) { 
cout << tr[i].naz <<" " << tr[i].number << " " << tr[i].tip; 
cout << endl; 
} 
 
//poisk po nazvaniu reisa  
while (true) { 
char vv [21]; //Поиск самолетв 
cout << endl << "Vvedite nazvanie punkta naznacheniya reisa" << endl;  
cin >> vv; 
bool f = false; //Флаг (найден ли хоть один) 
for (i=0; i<kol; i++) 
if (strcmp (tr[i].naz, vv)==0) { //Вывод информации при совпадениях 
cout << "Nomer reisa:" <<' '<< tr[i].number <<' '<< "Tip samoleta:" <<' '<< tr[i].tip << ' '<<endl; 
f = true; 
} 
if (!f) cout << "Net takogo punkta naznzcheniya"; //Сообщение при отсутствии необходимых данных 
} 
return 0; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2010, 19:29     C++, структуры
Посмотрите здесь:

Структуры Оо C++
C++ Структуры
Структуры C++
C++ структуры
C++ СТРУКТУРЫ
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
30.05.2010, 19:52     C++, структуры #2
Используйте 2 цикла.
C
1
2
3
4
5
6
7
8
9
for(int i =0;i<size-1;i++)
for(int j = i ; j<size;j++)
if(mass[i]>mass[j])
{
int temp;// В вашем случае ето объект структуры
temp = mass[i];
mass[i] = mass[j];
mass[j] = temp;
}
P.s переменные условны.
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
30.05.2010, 22:44  [ТС]     C++, структуры #3
попробовал как выше напмсано все равно не катит, прога только несколько значений местами меняет

Добавлено через 37 минут
так чутьчуть переделал, теперь вроде работает))
спасибо

Добавлено через 14 минут
так, теперь у меня другая проблема...
идет упорядочивание самих только записей , а тип и название рейса остаютя на местах

Добавлено через 9 минут
точнее упорядочиваются только номера рейсов
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
31.05.2010, 10:34     C++, структуры #4
Сделайте 2 раз сортировку как вам угодно(по чем угодно)
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
31.05.2010, 12:16  [ТС]     C++, структуры #5
практически у меня выходит вот такая сортировка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int temp;
for(i=0;i<kol-1;i++)
for(int j=i;j<kol;j++)
if(tr[i].number>tr[j].number)
{
    strcpy(tr[i].naz, temp1);
    strcpy(tr[i].naz, tr[j].naz);
    strcpy(tr[j].naz, temp1);
 
    temp=tr[i].number;
    tr[i].number=tr[j].number;
    tr[j].number=temp; 
/*  temp1=tr[i].naz;
    tr[i].naz=tr[j].naz;
    tr[j].naz=temp1;
    temp2=tr[i].tip;
    tr[i].tip=tr[j].tip;
    tr[j].tip=temp2;*/
 
}
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
31.05.2010, 12:32     C++, структуры #6
А вот так сделать не пробовали ) ?
C++
1
2
3
4
5
6
7
8
9
aeroflot qq;
    for(i=0;i<kol-1;i++)
        for(int j=i;j<kol;j++)
            if(tr[i].number>tr[j].number)
            {
                qq=tr[i];
                tr[i]=tr[j];
                tr[j]=qq;
}
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
31.05.2010, 12:39  [ТС]     C++, структуры #7
таким образом сортируются тольео номера рейсов, а тип и пункт назначения не меняются
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
31.05.2010, 12:44     C++, структуры #8
А как по-вашему им надо меняться? Как должен быть отсортирован массив? дайте пример
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
31.05.2010, 12:53  [ТС]     C++, структуры #9
Ураа, готово, будет это все выглядеть вот так:
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <fstream.h> 
#include <string.h> 
#include <stdlib.h> 
#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <cstring>
#include <fstream>
//using namespace std;
 
int main() { 
char* temp1= new char ;
char* temp2= new char;
 
struct aeroflot { 
char naz[15];  
int number; 
char tip[6]; 
}; 
 
aeroflot tr[3]; 
 
 
int kol=3; 
int i; 
cout<< "vvedite nazvanie punkta naznacheniya reisa(ne bolee 15 simvolov) "<<endl 
<< "vvedite nomer reisa "<<endl 
<< "vvedite tip samoleta (ne bolee 6 simvolov)"<<endl; 
 
for (i=0; i<kol; i++) { 
cout << i+1 <<"-i marshrut:" << endl; 
cin>> tr[i].naz >> tr[i].number >> tr[i].tip; 
 //cout<< tr[i].naz << tr[i].number << tr[i].tip<<endl; 
} 
 
int temp;
for(i=0;i<kol-1;i++){
    for(int j=i;j<kol;j++){
if(tr[i].number>tr[j].number)
{
    strcpy(temp1, tr[i].naz);
    strcpy(tr[i].naz, tr[j].naz);
    strcpy(tr[j].naz,temp1);
 
    strcpy(temp2,tr[i].tip);
    strcpy(tr[i].tip,tr[j].tip);
    strcpy(tr[j].tip,temp2);
 
    temp=tr[i].number;
    tr[i].number=tr[j].number;
    tr[j].number=temp; 
 
/*  temp1=tr[i].naz;
    tr[i].naz=tr[j].naz;
    tr[j].naz=temp1;
 
    temp2=tr[i].tip;
    tr[i].tip=tr[j].tip;
    tr[j].tip=temp2;*/
 
}
    }
}
 
cout << endl << "Otsortirovanniy massiv: " << endl; 
for (i=0; i<kol; i++) { 
cout << tr[i].naz <<" " << tr[i].number << " " << tr[i].tip; 
cout << endl; 
} 
 
 
while (true) { 
char vv [21]; 
cout << endl << "Vvedite nazvanie punkta naznacheniya reisa" << endl;  
cin >> vv; 
bool f = false; 
for (i=0; i<kol; i++) 
if (strcmp (tr[i].naz, vv)==0) { 
cout << "Nomer reisa:" <<' '<< tr[i].number <<' '<< "Tip samoleta:" <<' '<< tr[i].tip << ' '<<endl; 
f = true; 
} 
if (!f) cout << "Net takogo punkta naznzcheniya"; 
} 
return 0; 
}
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
31.05.2010, 13:07     C++, структуры #10
А в чем разница результатов? Объясните, пожалуйста, не понятно.
edd
36 / 36 / 0
Регистрация: 13.05.2010
Сообщений: 81
31.05.2010, 16:04     C++, структуры #11
Iliabobr, что бы всё сортировалось нужно temp создавать не int типа, а типа твоего класса, и тогда при присвоении будет изменятся весь обект, а не одна переменная)))
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
31.05.2010, 16:23  [ТС]     C++, структуры #12
ну допустим исходные данные были такие:
название пункта назначения номер рейса тип самолета
q 5 w
e 2 r
h 1 k
f 3 o

а в результе будет так:

h 1 k
e 2 r
f 3 o
q 5 w

конечно я может условие задачи первоначально не очень хорошо написал, так что извиняйте)))

Добавлено через 1 минуту
согласен с edd , но у меня другим методом уже получилося))
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
31.05.2010, 16:28     C++, структуры #13
Вот и я о том же ) Моя сортировка (предложенная чуть выше) работает - сортирует не только номера, но и полностью элементы массива...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2010, 16:31     C++, структуры
Еще ссылки по теме:

структуры C++
структуры с++ C++

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

Или воспользуйтесь поиском по форуму:
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
31.05.2010, 16:31  [ТС]     C++, структуры #14
ну значит я немного неправильно использовал ваш метод)
но и он мне пригодился. Пасибо
Yandex
Объявления
31.05.2010, 16:31     C++, структуры
Ответ Создать тему
Опции темы

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