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

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

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

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

30.05.2010, 19:29. Просмотров 2863. Ответов 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; 
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2010, 19:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос C++, структуры (C++):

Помещение структуры в вектор, удаление структуры, изменение элементов структуры - C++
Здравствуйте. Помогите разобраться с тем, как: 1 - находить элементы в векторе зная уникальный элемент структуры. 2 - удалять...

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

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

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

Вывод структуры, строка как элемент структуры - C++
Описать структуру с именем TRAIN, содержащую следующие поля: □ название пункта назначения; □ номер поезда; □ время отправления. ...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
30.05.2010, 19:52 #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 переменные условны.
1
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
30.05.2010, 22:44  [ТС] #3
попробовал как выше напмсано все равно не катит, прога только несколько значений местами меняет

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

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

Добавлено через 9 минут
точнее упорядочиваются только номера рейсов
0
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
31.05.2010, 10:34 #4
Сделайте 2 раз сортировку как вам угодно(по чем угодно)
0
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
31.05.2010, 12:16  [ТС] #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;*/
 
}
0
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
31.05.2010, 12:32 #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;
}
0
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
31.05.2010, 12:39  [ТС] #7
таким образом сортируются тольео номера рейсов, а тип и пункт назначения не меняются
0
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
31.05.2010, 12:44 #8
А как по-вашему им надо меняться? Как должен быть отсортирован массив? дайте пример
0
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
31.05.2010, 12:53  [ТС] #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; 
}
0
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
31.05.2010, 13:07 #10
А в чем разница результатов? Объясните, пожалуйста, не понятно.
0
edd
36 / 36 / 0
Регистрация: 13.05.2010
Сообщений: 81
31.05.2010, 16:04 #11
Iliabobr, что бы всё сортировалось нужно temp создавать не int типа, а типа твоего класса, и тогда при присвоении будет изменятся весь обект, а не одна переменная)))
0
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
31.05.2010, 16:23  [ТС] #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 , но у меня другим методом уже получилося))
0
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
31.05.2010, 16:28 #13
Вот и я о том же ) Моя сортировка (предложенная чуть выше) работает - сортирует не только номера, но и полностью элементы массива...
1
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
31.05.2010, 16:31  [ТС] #14
ну значит я немного неправильно использовал ваш метод)
но и он мне пригодился. Пасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2010, 16:31
Привет! Вот еще темы с ответами:

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

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

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

Понятие структуры данных. Элементарные структуры данных. Простые структуры данных - C++
Понятие структуры данных. Элементарные структуры данных. Простые структуры данных: методы реализации, особенности в различных языках...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
31.05.2010, 16:31
Ответ Создать тему
Опции темы

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