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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.79
mr_aleks
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 131
#1

структуру AEROFLOT - C++

09.04.2012, 18:59. Просмотров 3631. Ответов 64
Метки нет (Все метки)

Сформировать структуру AEROFLOT для хранения следующей информации:

· номер рейса;

· название пункта назначения рейса;

· тип самолета;

· цена билета.



Ввести с клавиатуры информацию для нескольких рейсов (к-во заранее не определено) и сохранить ее в бинарном файле "5.dat".

Подготовьте файл, в котором будет не менее 20 корректных записей.
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
#include <iostream>
#include <stdio.h>
#include <iomanip>
using namespace std;
void main(void)
{
    struct AEROFLOT
    {
        int reis; char punkt[100];
        char tip[100]; int cena;
    }*px;
    int size;
    char punkt[100];
    cout << "Vvedite kolichestvo struktur: ";
    cin >> size; cout << "--------------------" << endl;
    AEROFLOT *pxas=new AEROFLOT[size]; px=&pxas[0];
    int i; FILE *f1;
    f1=fopen("5.dat","wb");
    for ( i=0; i<size; i++)
    {
        cin.ignore();
        cout << "Vvedite dannye: " << i+1 << endl;
        cout << "Nazvanie punkta naznachenija rejsa: "; gets(px[i].punkt); 
        cout << "Tip samoleta: "; gets(px[i].tip); 
        cout << "Nomer rejsa: "; cin >> px[i].reis;
        cout << "Cena bileta: ";  cin >> px[i].cena;
        cout << "--------------------" << endl;
        fwrite(&px[i],sizeof(AEROFLOT),1,f1);
    } fclose(f1);
    system("PAUSE");
}
Но она не правильно по мойму... т.к. не правильно выводит записи из файла в след. проге
Толи что то в обьявлении типов или еще где (
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2012, 18:59     структуру AEROFLOT
Посмотрите здесь:

Описать структуру AEROFLOT - C++
1. Описать структуру с именем AEROFLOT, содержащую следующие поля: - название пункта назначения рейса; - номер рейса; - тип самолета....

Описать структуру Aeroflot - C++
Описать структуру с именем AEROFLOT,которая имеет следующие поля: 1 - название пункта назначения рейса; 2 - номер рейса; 3 - тип...

Описать структуру с именем AEROFLOT - C++
Вариант 4 1. Описать структуру с именем АЕRОFLОТ, содержащую следующие поля: • NAZN - название пункта назначения рейса; • NUMR -...

Описать структуру с именем AEROFLOT - C++
Ребят, помогите пожалуйста с заданием на С++. 1. Описать структуру с именем AEROFLOT, содержащую следующие поля:  1. название пункта...

Описать структуру с именем AEROFLOT - C++
Описать структуру с именем AEROFLOT, содержащую поля:  1)название пункта назначения рейса;  2)номер рейса;  3)тип самолета. ...

Описать структуру с именем AEROFLOT - C++
1. Описать структуру с именем AEROFLOT, содержащую следующие поля: - название пункта назначения рейса; - номер рейса; - тип самолета....

Описать структуру с именем AEROFLOT - C++
Ребята помогите решить задачу для лабы....:cry: Описать структуру с именем AER0FL0T, содержащую следующие поля: • название...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
09.04.2012, 19:01     структуру AEROFLOT #2
да вы уже достали с этим аэрофлотом, сколько тут тем наплодили про него?
http://www.cyberforum.ru/yandex.php?...=ru&web=0#1239
Вы братья-близнецы все что ли?

 Комментарий модератора 
Чуть спокойнее...
mr_aleks
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 131
09.04.2012, 19:11  [ТС]     структуру AEROFLOT #3
Хорошо это прога менее простая
А вообще все ссылки с похожими немного но не с моей!

Тогда подскажите в чем проблемма тут
Захватить память для массива из 10 структур задания 1(кароче тобиш из пред в 1посте).

Заполните массив данными из файла "5.dat".

Вывести информацию о рейсах, имеющих определенный пункт назгачения. Определить минимальную цену на билет.

Перед завершением программы освободить память.
ВОт что есть
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
#include <iostream>
#include <stdio.h>
#include <iomanip>
using namespace std;
void main(void)
{
    struct AEROFLOT
    {
        int reis; char punkt;
        char tip; int cena;
    }*px;
    AEROFLOT *pxas=new AEROFLOT[10]; px=&pxas[0];
    int i,k=0; FILE *f1;
    char punk;
    if((f1=fopen("d:\\5.dat", "rb+"))==NULL) { printf("Oshibka pri otkrytii fajla.\n"); exit(1); }
    cout << "Vvedite punkt naznachenija: ";
    cin >> punk;
    for ( i=0; i<10; i++)
    {
        fread(&px[i],sizeof(AEROFLOT),1,f1); 
 
        {
            if (px[i].punkt==punk)
            {
                    cout << "Dannye: " << i+1 << endl;
                    cout << "Nazvanie punkta naznachenija rejsa: " << px[i].punkt << endl;
                    cout << "Tip samoleta: " << px[i].tip << endl;
                    cout << "Nomer rejsa: " << px[i].reis << endl;
                    cout << "Cena bileta: " << px[i].cena << endl;
                    cout << "--------------------" << endl;
            }
        }
    }
    fclose(f1);
    //cout << "Minimal'naja cena na bilet: " <<  << endl;
    delete []pxas;
    system("PAUSE");
}
Но выводит оно немного не так и цену почемуто вообще не тем числом ((

ПС тему создавал именно для решения этой задачи
ПС2 надеюсь на ваше понимание.
ПС3 и уже давно облазил все поиски так что можите не тыкать!
Kuzia domovenok
09.04.2012, 19:18
  #4

Не по теме:

А серьёзно, почему задание про AEROFLOT настолько тут популярно на этом форуме? Тут какая-то группа одноклассников что-ли поселилась? Или у нас по всей стране вдруг стали одни и теже лабораторные задавать?

mr_aleks
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 131
09.04.2012, 19:44  [ТС]     структуру AEROFLOT #5
Да просто задали сделать вот и пытаюсь

По существу давайте!)
p_r_a_g_m_a
109 / 61 / 18
Регистрация: 08.03.2012
Сообщений: 211
Завершенные тесты: 1
09.04.2012, 19:58     структуру AEROFLOT #6
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 <iostream>
#include <stdio.h>
#include <iomanip>
 
#define STRLEN 255
 
using namespace std;
 
#pragma pack (1)
typedef struct
{
    int reis;
    char punkt[STRLEN];
    char tip[STRLEN];
    int cena;
} AEROFLOT, *LPAEROFLOT;
#pragma pack()
 
int main(int argc, char** argv)
{
    LPAEROFLOT pxas=new AEROFLOT[10];
    int i,k=0;
    FILE *f1;
    char punk[STRLEN];
    
    if((f1=fopen("d:\\5.dat", "rb+"))==NULL) { printf("Oshibka pri otkrytii fajla.\n"); exit(1); }
    cout << "Vvedite punkt naznachenija: ";
    cin >> punk;
    for ( i=0; i<10; i++)
    {
        fread(&pxas[i],sizeof(AEROFLOT),1,f1); 
 
        {
            if (strcmp(pxas[i]->punkt, punk))
            {
                    cout << "Dannye: " << i+1 << endl;
                    cout << "Nazvanie punkta naznachenija rejsa: " << pxas[i]->punkt << endl;
                    cout << "Tip samoleta: " << pxas[i]->tip << endl;
                    cout << "Nomer rejsa: " << pxas[i]->reis << endl;
                    cout << "Cena bileta: " << pxas[i]->cena << endl;
                    cout << "--------------------" << endl;
            }
        }
    }
    k = pxas[0]->cena;
    for(i = 0; i < 10; i++)
    {
      if (k > pxas[i]->cena)
      {
        k = pxas[i]->cena;
      }
    }
    fclose(f1);
    cout << "Minimal'naja cena na bilet: " << k << endl;
    delete []pxas;
    system("PAUSE");
    return EXIT_SUCCESS;
}
mr_aleks
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 131
09.04.2012, 21:36  [ТС]     структуру AEROFLOT #7
Компилятор (MVS 6) ругался на "->" заменил на "." , скомпилировалось но вывод какую то жесть

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
#include <iostream>
#include <stdio.h>
#include <iomanip>
 
 
#define STRLEN 255
 
using namespace std;
 
#pragma pack (1)
typedef struct
{
    int reis;
    char punkt[STRLEN];
    char tip[STRLEN];
    int cena;
} AEROFLOT, *LPAEROFLOT;
#pragma pack()
 
int main(int argc, char** argv)
{
    LPAEROFLOT pxas=new AEROFLOT[10];
    int i,k=0;
    FILE *f1;
    char punk[STRLEN];
    
    if((f1=fopen("d:\\5.dat", "rb+"))==NULL) { printf("Oshibka pri otkrytii fajla.\n"); exit(1); }
    cout << "Vvedite punkt naznachenija: ";
    cin >> punk;
    for ( i=0; i<10; i++)
    {
        fread(&pxas[i],sizeof(AEROFLOT),1,f1); 
 
        {
            if (strcmp(pxas[i].punkt, punk))
            {
                    cout << "Dannye: " << i+1 << endl;
                    cout << "Nazvanie punkta naznachenija rejsa: " << pxas[i].punkt << endl;
                    cout << "Tip samoleta: " << pxas[i].tip << endl;
                    cout << "Nomer rejsa: " << pxas[i].reis << endl;
                    cout << "Cena bileta: " << pxas[i].cena << endl;
                    cout << "--------------------" << endl;
            }
        }
    }
    k = pxas[0].cena;
    for(i = 0; i < 10; i++)
    {
      if (k > pxas[i].cena)
      {
        k = pxas[i].cena;
      }
    }
    fclose(f1);
    cout << "Minimal'naja cena na bilet: " << k << endl;
    delete []pxas;
    system("PAUSE");
    return EXIT_SUCCESS;
}
ВОт первый скрин от этого! (левее который)

А предыдущая прога тоже похожей сделал вот она! вдруг что то в ней
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
#include <iostream>
#include <stdio.h>
#include <iomanip>
 
 
#define STRLEN 255
 
using namespace std;
 
#pragma pack (1)
typedef struct
{
    int reis;
    char punkt[STRLEN];
    char tip[STRLEN];
    int cena;
} AEROFLOT, *LPAEROFLOT;
#pragma pack()
 
int main(int argc, char** argv)
{
    LPAEROFLOT pxas=new AEROFLOT[10];
    int i,k=0;
    FILE *f1;
    char punk[STRLEN];
    int size;
    cout << "Vvedite kolichestvo struktur: ";
    cin >> size; cout << "--------------------" << endl;
    f1=fopen("d:\\5.dat","wb");
    for ( i=0; i<size; i++)
    {
        cin.ignore();
        cout << "Vvedite dannye: " << i+1 << endl;
        cout << "Nazvanie punkta naznachenija rejsa: "; gets(pxas[i].punkt); 
        cout << "Tip samoleta: "; gets(pxas[i].tip); 
        cout << "Nomer rejsa: "; cin >> pxas[i].reis;
        cout << "Cena bileta: ";  cin >> pxas[i].cena;
        cout << "--------------------" << endl;
        fwrite(&pxas[i],sizeof(AEROFLOT),1,f1);
    } fclose(f1);
    system("PAUSE");
    return EXIT_SUCCESS;;
}
и скрин ниже тоже (второй, правее который)

что тут не так то??
Миниатюры
структуру AEROFLOT   структуру AEROFLOT  
mr_aleks
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 131
09.04.2012, 22:22  [ТС]     структуру AEROFLOT #8
или вот мой вариант подправил но он вообще ничего не выводит (((

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
#include <stdio.h>
#include <string.h>
#include<iostream>
#include <iomanip>
using namespace std;
void main(void)
{
    struct AEROFLOT
    {
        char punkt[30];
        int reis;
        char tip[20];
        int cena;
    }*px;
    AEROFLOT *pxas=new AEROFLOT[10]; px=&pxas[0];
    int i,k=0; FILE *f1;
    char punk;
    if((f1=fopen("d:\\5.dat", "rb+"))==NULL) { printf("Oshibka pri otkrytii fajla.\n"); exit(1); }
    cout << "Vvedite punkt naznachenija: ";
    cin >> punk;
    for ( i=0; i<10; i++)
    {
        fread(&px[i],sizeof(AEROFLOT),1,f1); 
 
        {
            if (px[i].punkt[1]==punk)
            {
                    cout << "Dannye: " << i+1 << endl;
                    cout << "Nazvanie punkta naznachenija rejsa: " << px[i].punkt << endl;
                    cout << "Tip samoleta: " << px[i].tip << endl;
                    cout << "Nomer rejsa: " << px[i].reis << endl;
                    cout << "Cena bileta: " << px[i].cena << endl;
                    cout << "--------------------" << endl;
            }
        }
    }
    fclose(f1);
    delete []pxas;
    system("PAUSE");
}
Миниатюры
структуру AEROFLOT  
p_r_a_g_m_a
109 / 61 / 18
Регистрация: 08.03.2012
Сообщений: 211
Завершенные тесты: 1
10.04.2012, 00:32     структуру AEROFLOT #9
Да с стрелкой касяк) Ошибки.. ошибки
1) Новая структура отличается от старой, поэтому чтение из файла происходит с ошибками (размер массива строки)
2)
Цитата Сообщение от mr_aleks Посмотреть сообщение
px=&pxas[0];
а) какой смысл делать указатель на указатель
б) это указатель на 1 элемент из массива pxas, то есть там читается неизвесно что и откуда:
Цитата Сообщение от mr_aleks Посмотреть сообщение
px[i]
3)
Цитата Сообщение от mr_aleks Посмотреть сообщение
char tip;
ну тут без комментариев
4)
Цитата Сообщение от mr_aleks Посмотреть сообщение
(px[i].punkt==punk)
тут нужно использовать strcmp
mr_aleks
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 131
10.04.2012, 02:30  [ТС]     структуру AEROFLOT #10
Если бы вы исправили в моем примере было бы супер а то как эту функцию применить я не знаю даже((
p_r_a_g_m_a
109 / 61 / 18
Регистрация: 08.03.2012
Сообщений: 211
Завершенные тесты: 1
10.04.2012, 11:53     структуру AEROFLOT #11
Дайте посмотреть файл d:\\5.dat
mr_aleks
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 131
10.04.2012, 14:39  [ТС]     структуру AEROFLOT #12
ВОт, но он же бинарный)
Вложения
Тип файла: rar 5.rar (142 байт, 13 просмотров)
p_r_a_g_m_a
109 / 61 / 18
Регистрация: 08.03.2012
Сообщений: 211
Завершенные тесты: 1
10.04.2012, 15:45     структуру AEROFLOT #13
Изменил дат файл
Вложения
Тип файла: rar Aeroflot.rar (914 байт, 16 просмотров)
mr_aleks
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 131
10.04.2012, 16:06  [ТС]     структуру AEROFLOT #14
Все выводит спасибо большое, но что вы изменили в дат файле??

И мб гляньте что не так в проге которая компилирует этот файл??

И вообще огромное вам спасибо)
p_r_a_g_m_a
109 / 61 / 18
Регистрация: 08.03.2012
Сообщений: 211
Завершенные тесты: 1
10.04.2012, 17:44     структуру AEROFLOT #15
Ну просто в примерах ваших кодов, везде разные размеры массивов, поэтому я не знал какой нужно указать. Просто подстроил дат файл под мой код.

Добавлено через 29 минут
Код для создания дат файла.

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
#include <iostream>
#include <stdio.h>
#include <iomanip>
#define STRLEN 20
 
using namespace std;
 
#pragma pack (1)
typedef struct
{
    char punkt[STRLEN];
    int reis;
    char tip[STRLEN];
    int cena;
} AEROFLOT, *LPAEROFLOT;
#pragma pack()
 
int main(int argc, char** argv)
{
    setlocale(LC_ALL, "Russian");
 
    int size;
    cout << "Введите количество структур: ";
    cin >> size;
    cout << "--------------------" << endl;
    
    LPAEROFLOT pxas = new AEROFLOT[size];
    int index;
    FILE* file;
    
    if((file = fopen("D:\\5.dat", "wb")) == NULL) { printf("Ошибка при открытии файла.\n"); exit(1); }
    for (index = 0; index < size; index++)
    {
        cin.ignore();
        cout << "Введите данные: " << index + 1 << endl;
        cout << "Название пункта назначения рейса: "; gets(pxas[index].punkt); 
        cout << "Тип самолета: "; gets(pxas[index].tip); 
        cout << "Номер рейса: "; cin >> pxas[index].reis;
        cout << "Цена билета: ";  cin >> pxas[index].cena;
        cout << "--------------------" << endl;
        fwrite(&pxas[index], sizeof(AEROFLOT), 1, file);
    }
    fclose(file);
    delete[] pxas;
    system("PAUSE");
    
    return EXIT_SUCCESS;
}
Есть еще нюанс - нужно в дат файл записать кол-во структур в нем, для нормального чтения. Нужно будет переделать немного обе программы. Ну тут вы и сами справитесь.
mr_aleks
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 131
10.04.2012, 18:59  [ТС]     структуру AEROFLOT #16
Большое вам человеческое спасибо Благодарен вам от души


Маленький вопросик, почему у меня не выводится русским текстом в консоле? хотя функция setlocale(LC_ALL, "Russian"); есть и правельно написана, приходится все транслитом
p_r_a_g_m_a
109 / 61 / 18
Регистрация: 08.03.2012
Сообщений: 211
Завершенные тесты: 1
10.04.2012, 20:17     структуру AEROFLOT #17
Незачто).Нужно использовать CharToOemA и OemToCharA
mr_aleks
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 131
10.04.2012, 20:20  [ТС]     структуру AEROFLOT #18
скажите как сделать сортировку "данных по номеру рейса - причем сортировать потребуется только указатели в массиве." и сделать "массив указателей на AEROFLOT на 50 элементов." ?
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
10.04.2012, 20:35     структуру AEROFLOT #19
Цитата Сообщение от mr_aleks Посмотреть сообщение
скажите как сделать сортировку "данных по номеру рейса - причем сортировать потребуется только указатели в массиве." и сделать "массив указателей на AEROFLOT на 50 элементов." ?
понятия не имею, как сортировать массив структур, меняя только указатели. Может тебе нужен массив указателей на структуры?
C
1
struct aeroflot** pmas;
или
C
1
struct aeroflot* pmas[10];
Или вообще связанный список?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2012, 20:39     структуру AEROFLOT
Еще ссылки по теме:

Описать структуру с именем AEROFLOT - C++
Помогите пожалуйста, очень прошу. Описать структуру с именем AEROFLOT, содержащую следующие поля: название пункта назначения рейса,...

Описать структуру с именем AEROFLOT - C++
1. Описать структуру с именем AEROFLOT, содержащую следующие поля: a)название пункта назначения рейса; б)номер рейса; в)тип...

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

Описать структуру с именем AEROFLOT - C++
Описать структуру с именем AEROFLOT, содержащую следующие поля: • название пункта назначения рейса; • номер рейса; • тип самолета.

Описать структуру с именем AEROFLOT - C++
Приветик всем! Помогите пожалуйста! Надо переделать программу на Си. Ниже написана подобная программа, но некоторое надо изменить: записи...


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

Или воспользуйтесь поиском по форуму:
p_r_a_g_m_a
109 / 61 / 18
Регистрация: 08.03.2012
Сообщений: 211
Завершенные тесты: 1
10.04.2012, 20:39     структуру AEROFLOT #20
Как я понял что-то вроде этого?:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    #define SIZE 50
    ...
    LPAEROFLOT pl[SIZE] = {NULL};
    ...
    for (int i = 0; i < SIZE - 1; ++i)
    {
        AEROFLOT Temp;
        for (int j = (i + 1); j < SIZE; ++j)
            if (pl[i].reis < pl[j].reis)
            {
                Temp = pl[i];
                pl[i] = pl[j];
                pl[j] = Temp;        
            }
    }
Yandex
Объявления
10.04.2012, 20:39     структуру AEROFLOT
Ответ Создать тему
Опции темы

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