Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/19: Рейтинг темы: голосов - 19, средняя оценка - 4.63
3 / 3 / 3
Регистрация: 04.11.2009
Сообщений: 98

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

30.05.2010, 19:29. Показов 3568. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.05.2010, 19:29
Ответы с готовыми решениями:

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

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

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

13
 Аватар для Sekt
159 / 156 / 47
Регистрация: 29.04.2009
Сообщений: 636
30.05.2010, 19:52
Используйте 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
3 / 3 / 3
Регистрация: 04.11.2009
Сообщений: 98
30.05.2010, 22:44  [ТС]
попробовал как выше напмсано все равно не катит, прога только несколько значений местами меняет

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

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

Добавлено через 9 минут
точнее упорядочиваются только номера рейсов
0
 Аватар для Sekt
159 / 156 / 47
Регистрация: 29.04.2009
Сообщений: 636
31.05.2010, 10:34
Сделайте 2 раз сортировку как вам угодно(по чем угодно)
0
3 / 3 / 3
Регистрация: 04.11.2009
Сообщений: 98
31.05.2010, 12:16  [ТС]
практически у меня выходит вот такая сортировка
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
302 / 160 / 62
Регистрация: 27.02.2010
Сообщений: 317
31.05.2010, 12:32
А вот так сделать не пробовали ) ?
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
3 / 3 / 3
Регистрация: 04.11.2009
Сообщений: 98
31.05.2010, 12:39  [ТС]
таким образом сортируются тольео номера рейсов, а тип и пункт назначения не меняются
0
302 / 160 / 62
Регистрация: 27.02.2010
Сообщений: 317
31.05.2010, 12:44
А как по-вашему им надо меняться? Как должен быть отсортирован массив? дайте пример
0
3 / 3 / 3
Регистрация: 04.11.2009
Сообщений: 98
31.05.2010, 12:53  [ТС]
Ураа, готово, будет это все выглядеть вот так:
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
302 / 160 / 62
Регистрация: 27.02.2010
Сообщений: 317
31.05.2010, 13:07
А в чем разница результатов? Объясните, пожалуйста, не понятно.
0
37 / 37 / 2
Регистрация: 13.05.2010
Сообщений: 81
31.05.2010, 16:04
Iliabobr, что бы всё сортировалось нужно temp создавать не int типа, а типа твоего класса, и тогда при присвоении будет изменятся весь обект, а не одна переменная)))
0
3 / 3 / 3
Регистрация: 04.11.2009
Сообщений: 98
31.05.2010, 16:23  [ТС]
ну допустим исходные данные были такие:
название пункта назначения номер рейса тип самолета
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
302 / 160 / 62
Регистрация: 27.02.2010
Сообщений: 317
31.05.2010, 16:28
Вот и я о том же ) Моя сортировка (предложенная чуть выше) работает - сортирует не только номера, но и полностью элементы массива...
1
3 / 3 / 3
Регистрация: 04.11.2009
Сообщений: 98
31.05.2010, 16:31  [ТС]
ну значит я немного неправильно использовал ваш метод)
но и он мне пригодился. Пасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.05.2010, 16:31
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru