0 / 0 / 0
Регистрация: 23.05.2018
Сообщений: 1
1

Поиск и сортировка в массиве структур

23.05.2018, 18:17. Показов 851. Ответов 1
Метки нет (Все метки)

Доброго времени суток! Нужна помощь!
Уменьшить на 10% стоимость билетов тех рейсов, время в полете которых не превышает 3 часа.

Вот программка

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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include<stdio.h>
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#include<dir.h>
#include<conio.h>
#define MAXT  60
#define MAXAS  150      
#define MAXA  200
 
struct aeroflot
{
    unsigned char punkt[MAXT];
    unsigned char nomer[MAXAS];
    unsigned char tip[MAXA];    
    int h;
    float p;
};
#include"h\\wind.h"
#include"h\\page_1.h"
//запись в файл
int fil_struct(struct aeroflot New[], char *str)
{
    FILE  *fp;
    int num;
    // Открыть файл для записи
    if ((fp = fopen(str, "w")) == NULL)
    {
        puts("Невозможно открыть файл");
        exit(1);
    }
    num = 0;
    while(strlen(New[num].punkt) > 0)
    {
        fwrite(&New[num], sizeof(New[num]), 1, fp);
        num++;
    }
    fclose(fp);
    return num;
}
 
void stroka(int x, int y, int kol)
{
    for(int i = 0; i < kol; i++)
    {
        gotoxy(x + i, y);
        putchar(196);
    }
}
 
//вывод на экран
void print_struct(struct aeroflot New[], int col)
{
    int num;
    char ch = 179;      // символ для вертикальной полоски
    stroka(2, 2, 47);
    char *t = "Пункт назначения", *k = "Номер рейса", *r = "Тип самол", *P = "Время", *d = "Цена";
    gotoxy(2, 3);  cout << ch; gotoxy(2, 3);  cout << t;
    gotoxy(15, 3); cout << ch; gotoxy(16, 3); cout << k;
    gotoxy(25, 3); cout << ch; gotoxy(26, 3); cout << r;
    gotoxy(34, 3); cout << ch; gotoxy(35, 3); cout << P;
    gotoxy(40, 3); cout << ch; gotoxy(41, 3); cout << d;
    stroka(2, 4, 47);
    for(num = 0; num < col; num++)
    {
        gotoxy( 2, 5 + num); cout << ch;
        gotoxy( 4, 5 + num); cout << New[num].punkt;
        gotoxy(15, 5 + num); cout << ch;
        gotoxy(17, 5 + num); cout << New[num].nomer;
        gotoxy(25, 5 + num); cout << ch;
        gotoxy(29, 5 + num); cout << New[num].tip;
        gotoxy(34, 5 + num); cout << ch;
        gotoxy(36, 5 + num); cout << New[num].h;
        gotoxy(40, 5 + num); cout << ch;
        gotoxy(42, 5 + num); cout << New[num].p;
        gotoxy(48, 5 + num); cout << ch;
    }
    stroka(2, 5 + num, 47);
}
 
 
void main()
{
    page_1();
    window(1, 1, 80, 25); textattr(15 + (7 << 4)); clrscr();
    Wind(15, 3, 65, 20, 0, 1);
    char  *name = "..\\fil_dat\\pr46_bai.dat";
    int col;
    // массив структур cat длиной списка MAXB
    const int MAXB = 13;
    struct aeroflot reis[MAXB] =
    {
        "Москва", "№234", "ИЛ-96-300", 2, 3000,
        "Токио", "№369", "ИЛ-96-300", 6, 20000,
        "Краснодар", "№768", "Ту-204", 4, 7000,
        "Ростов", "№456", "ИЛ-96М", 7, 15000,
        "США", "№8908", "Боинг-747", 19, 30000,
        "Лондон", "№999", "ИЛ-62", 24, 40000,
        "Париж", "№8908", "ИЛ-96-300", 18, 65000,
        "Турция", "№345", "Боинг-747", 15, 34000,
        "Киев", "№608", "ИЛ-96М", 20, 25000,
        "Воронеж", "№1111", "Ту-204", 10, 10000,
        "Греция", "№9808", "Боинг-747", 25, 70000,
        "Ставрополь", "№3408", "ИЛ-96-300", 5, 7000
    };                                                         
    col = fil_struct(reis, name);
    print_struct(reis, col);
    getch();
}
А вот заготовка, тут нужно лишь сделать задание из моего варианта, которое указанно выше!

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
86
87
88
89
90
91
92
93
94
95
#include<stdio.h>
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#include<dir.h>
#include<conio.h>
#define MAXT  60
#define MAXAS  150      
#define MAXA  200
        
struct aeroflot
{
    unsigned char punkt[MAXT];
    unsigned char nomer[MAXAS];
    unsigned char tip[MAXA];    
    int h;
    float p;
};
#include"h\\wind.h"
#include"h\\page_1.h"
// Функция: читать массив структур из файла
int read_struct(struct aeroflot New[], char *str)
{
        FILE  *fp;
        int num = 0;
        // Открыть файл для чтения
        if ((fp = fopen(str, "r")) == NULL)
        {       puts("Невозможно открыть файл");
                exit(1);
        }
        while(fread(&New[num], sizeof(New[num]), 1, fp) == 1)
                num++;
        fclose(fp);
        return num;
}
 
void stroka(int x, int y, int kol)
{
    for(int i = 0; i < kol; i++)
    {
        gotoxy(x + i, y);
        putchar(196);
    }
}
 
//вывод на экран
void print_struct(struct aeroflot New[], int col)
{
    int num;
    char ch = 179;      // символ для вертикальной полоски
    stroka(2, 2, 47);
    char *t = "Пункт назначения", *k = "Номер рейса", *r = "Тип самол", *P = "Время", *d = "Цена";
    gotoxy(2, 3);  cout << ch; gotoxy(2, 3);  cout << t;
    gotoxy(15, 3); cout << ch; gotoxy(16, 3); cout << k;
    gotoxy(25, 3); cout << ch; gotoxy(26, 3); cout << r;
    gotoxy(34, 3); cout << ch; gotoxy(35, 3); cout << P;
    gotoxy(40, 3); cout << ch; gotoxy(41, 3); cout << d;
    stroka(2, 4, 47);
    for(num = 0; num < col; num++)
    {
        gotoxy( 2, 5 + num); cout << ch;
        gotoxy( 4, 5 + num); cout << New[num].punkt;
        gotoxy(15, 5 + num); cout << ch;
        gotoxy(17, 5 + num); cout << New[num].nomer;
        gotoxy(25, 5 + num); cout << ch;
        gotoxy(29, 5 + num); cout << New[num].tip;
        gotoxy(34, 5 + num); cout << ch;
        gotoxy(36, 5 + num); cout << New[num].h;
        gotoxy(40, 5 + num); cout << ch;
        gotoxy(42, 5 + num); cout << New[num].p;
        gotoxy(48, 5 + num); cout << ch;
    }
    stroka(2, 5 + num, 47);
}
 
 
void main()
{
    page_1();
    window(1, 1, 80, 25); textattr(15 + (7 << 4)); clrscr();
    Wind(15, 3, 65, 20, 0, 1);
    char  *name = "..\\fil_dat\\pr46_bai.dat";
    int col;
    // массив структур cat длиной списка MAXB
    const int MAXB = 13;
    struct aeroflot reis[MAXB];
 
    col = read_struct(reis, name);
    print_struct(reis, col);
 
    //Задание свего ваианта
    
 
    getch();
}
Пожалуйста не пройдите мимо! Помогите!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2018, 18:17
Ответы с готовыми решениями:

Сортировка в массиве структур
Здравствуйте . Вот я создаю структуру: struct Data //описываемая структура { int m;...

Сортировка Хоара в массиве структур
Не могу нормально отсортировать элементы структуры с помощью быстрой сортировки. Программа просто,...

Поиск в массиве структур
Помогите написать программу на ассемблере! Дана структура Printer с полями: наименование, тип...

Поиск в массиве структур.
Кто может,пожалуйста,гляньте. Вот мой массив: #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include...

1
7167 / 6142 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
24.05.2018, 09:35 2
C++
1
2
3
for (int i = 0; i < col; ++i)
    if (reis[i].h <= 3)
        reis[i].p *= 0.9;
Без округления.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2018, 09:35
Помогаю со студенческими работами здесь

Поиск в массиве структур
Добрый вечер! у меня есть структура и создан массив из 20 предметов(которые были закуплены в...

Поиск в массиве структур.
не работает поиск по полю класса ınt, не могу понять в чем ошибка. помогите пожалуйста) #include...

Поиск в отсортированном массиве структур
Всем привет, пожалуйста помогите с поиском в отсортированном массиве структур. Нужно найти...

Поиск студента в массиве структур
Объясните пожалуйста где ошибка #define _CRT_SECURE_NO_WARNINGS #include &lt;stdio.h&gt; #include...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru