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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.96
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
#1

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

30.05.2010, 19:29. Просмотров 2851. Ответов 13
Метки нет (Все метки)

Описать структуру с именем 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++
Здравствуйте. Помогите разобраться с тем, как: 1 - находить элементы в векторе зная уникальный элемент структуры. 2 - удалять...

Функция внутри структуры использует указатель, как поле этой структуры - C++
Коротко, есть класс A, описан в файле A_class.h ну и реализованы функции в A_class.cpp, есть файл GlobalItems.h, где хранятся глобальные...

Динамические структуры данных. Программа ввода в структуры и вывода информации из неё. - C++
Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования. Для...

Динамическое изменение структуры таблицы для организации древовиднойой структуры - MS Access
Доброго времени суток. У меня такой вот вопрос: Необходимо сделать возможность добавления записей в таблицу определнным образом (через...

Динамические структуры данных, списковые структуры (надо разобраться что делает программа) - Delphi
дана программа, надо помочь выяснить что в ней делает каждая подпрограмма unit Unit6; interface uses Windows,...

Структуры, массивы структур (как можно присваивать(инициализировать) значения полям структуры) - C++
Есть у меня вот такая структура, например struct Subject { int cost; int Volume; }; Потом создаю экземпляр, Subject G; ...

Управляющие структуры. Программирование алгоритмов разветвляющейся структуры. - Delphi
как это в delphi выполнить?((( Вычислить объем и площадь полной поверхности цилиндра, если известны высота и радиус основания V=пr^2*h,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
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++
Описать структуру с именем TRAIN, содержащую следующие поля: □ название пункта назначения; □ номер поезда; □ время отправления. ...

Исследование структуры FILE или: что вообще можно выудить из этой структуры, указатель на которую мы получаем при открытии файла? - C++
Ничего нельзя. Итак, новичкам напомню, что после выполнения кода FILE* f= fopen (&quot;file.txt&quot;, &quot;w&quot;); в переменной f содержится...

Структуры. Работа с файлами, содержащими структуры - C++
2) Дана совокупность сведений, каждое из которых состоит из следующих рекви-зитов: фамилия и инициалы автора – 25 знаков; название книги –...

Оператор if и структуры. Возвращение структуры из функции - C++
Здравствуйте, имеется такая вот функция. void InputStructEmployee (int StructSize) { StructEmployee UsrStruct; string...

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


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

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

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