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

Структура - C++

Восстановить пароль Регистрация
 
ErinI
 Аватар для ErinI
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 11
29.04.2013, 04:50     Структура #1
Структура. Помогите найти ошибку


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
#include <iostream>
#include <algorithm>
#include <string.h>
 
using namespace std;
 
const int size = 3;
    AEROFLOT aer[size];
    unsigned int i, j;  
    int count = 0;
    char t[30];
 
struct AEROFLOT 
{ 
    char destination[30]; 
    unsigned int type; 
    unsigned int number;
}; 
 
void vvod()
{
    FILE *fo=fopen("5.out","a");
    const int size = 3;
    AEROFLOT; aer[size];
    unsigned int i, j;  
    int count = 0;
 
    char t[30];
 
    for ( i = 0; i < size; i++) 
    { 
        cout<<"Punkt_naznachenia: "<<endl; 
        cin>>aer[i].destination; 
        cout<<"Vvedite tip samoleta "<<endl; 
        cin>>aer[i].type; 
        cout<<"Vvedite nomer "<<endl; 
        cin>>aer[i].number; 
    }  
        
}
 
void korr()
{
     for ( i = 0; i < size - 1; i++) 
     for ( j = 0; j < size - 1; j++) 
        if(strcmp(aer[j].destination, aer[j+1].destination) > 0) 
        swap(aer[j], aer[j+1]); 
        cout<<endl; 
 
    for ( i = 0; i < size; i++)  
        cout << aer[i].destination << " "<< aer[i].number << " "<< aer[i].type <<endl;
        cout <<endl; 
}
 
void obr()
{
    FILE *fo=fopen("5.out","r+");
          cout<<"Vvedite tip samoleta"<<endl; 
          cin>>t; 
 
    for ( i = 0; i < size; i++) 
    { 
        if(strcmp(t, aer[i].type) == 0) 
            cout << aer[i].destination << " "<< aer[i].number <<endl;  
        else 
            count++; 
    } 
 
    if(count == size) 
        cout << "Error!" <<endl; 
    } 
 
;}
 
int main();
{
    
        vvod();
        obr(); 
        korr(); 
        exit(0);
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2013, 04:50     Структура
Посмотрите здесь:

Структура C++
C++ Структура
C++ структура :(
Структура. C++
C++ Структура
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
29.04.2013, 11:19     Структура #2
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
#include <iostream>
#include <algorithm>
#include <string.h>
 
using namespace std;
 
const int size = 3;
    struct AEROFLOT;    
    unsigned int i, j;  
    int count = 0;
    char t[30];
 
struct AEROFLOT 
{ 
    char destination[30]; 
    unsigned int type; 
    unsigned int number;
}; 
 
void vvod(AEROFLOT *aer)
{
    FILE *fo=fopen("5.out","a");
    unsigned int i, j;  
  //  int count = 0;
 
    char t[30];
 
    for ( i = 0; i < size; i++) 
    { 
        cout<<"Punkt_naznachenia: "<<endl; 
        cin>>aer[i].destination; 
        cout<<"Vvedite tip samoleta "<<endl; 
        cin>>aer[i].type; 
        cout<<"Vvedite nomer "<<endl; 
        cin>>aer[i].number; 
    }  
        
}
 
void korr(AEROFLOT *aer)
{
     for ( i = 0; i < size - 1; i++) 
     for ( j = 0; j < size - 1; j++) 
        if(strcmp(aer[j].destination, aer[j+1].destination) > 0) 
        swap(aer[j], aer[j+1]); 
        cout<<endl; 
 
    for ( i = 0; i < size; i++)  
        cout << aer[i].destination << " "<< aer[i].number << " "<< aer[i].type <<endl;
        cout <<endl; 
}
 
void obr(AEROFLOT *aer)
{
    FILE *fo=fopen("5.out","r+");
          cout<<"Vvedite tip samoleta"<<endl; 
          cin>>t; 
 
    for ( i = 0; i < size; i++) 
    { 
        if(strcmp(t, aer[i].destination) == 0) 
            cout << aer[i].destination << " "<< aer[i].number <<endl;  
        else 
            ::count++; 
    } 
 
    if(::count == size) 
        cout << "Error!" <<endl; 
}
 
int main()
{
        AEROFLOT aer[size];
        vvod(aer);
        obr(aer); 
        korr(aer); 
        exit(0);
        return 0;
}
ошибок море, но, как известно, без задания не всегда ясно, что нужно получить в итоге. Вы, видимо, только начинаете знакомство с функциями.
ErinI
 Аватар для ErinI
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 11
01.05.2013, 16:36  [ТС]     Структура #3
Сформировать файл, имеющий следующую структуру с именем AEROFLOT, с полями:
 название пункта назначения рейса;
 номер рейса;
 тип самолета;
Написать программу (создать меню), выполняющую следующие действия:
 ввод с клавиатуры данных в массив, состоящий из семи элементов типа AEROFLOT; записи должны быть размещены в алфавитном порядке по названиям пунктов назначения;
 вывод на дисплей номеров и типов самолетов, обслуживаемых самолетом, тип которого введен с клавиатуры;
 если таких рейсов нет, вывести соответствующее сообщение.
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 681
01.05.2013, 16:54     Структура #4
Думаю с структурой сами разберетесь.
Вот некоторые ваши функции.
Цитата Сообщение от ErinI Посмотреть сообщение
вывод на дисплей номеров и типов самолетов, обслуживаемых самолетом, тип которого введен с клавиатуры
C++
1
2
3
4
5
6
7
8
cin >> tip;
for(int i = 0;i > size;i++)
{
if(massiv[i].tip_samoleta == tip)
{
cout << massiv[i].number << " " << massiv[i].peic<< " " << massiv[i].tip_samoleta; 
}
}

Цитата Сообщение от ErinI Посмотреть сообщение
если таких рейсов нет, вывести соответствующее сообщение.
C++
1
2
3
4
5
cin >> peic; //ввод рейса
for(int i = 0; i < size; i++)
{
if(massiv[i].peic == peic) cout << massiv[i].number << " " << massiv[i].peic<< " " << massiv[i].tip_samoleta; 
}
Думаю дальше сами разберетесь.
ErinI
 Аватар для ErinI
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 11
01.05.2013, 18:47  [ТС]     Структура #5
BumerangSP,


Вот, я доработала. Но все равно чего-то не хватает. Не могу понять, помогите ПОЖАЛУЙСТА!

Добавлено через 19 минут
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
110
111
112
113
#include "stdio.h"
#include "iostream"
using namespace std;
 
 
struct{
    char destination[30]; 
    char type[30]; 
     int number;
}n,aer[20],n1,q;
 
void vvod(){
    FILE *f=fopen("1.out","ab");
    cout << "Punkt_naznachenia: " <<endl; 
    cin >> n.destination; 
    cout << "Inter a type " <<endl;
    cin >> n.type; 
    cout << "Inter a number " <<endl; 
    cin >> n.number; 
    fwrite (&n,sizeof(n),1,f);
    fclose(f);
}
void vivod(){
    FILE *f1=fopen("1.out","rb");
    fread(&n1,sizeof(n1),1,f1);
    while(!feof(f1))
    { 
        cout.width(10);cout<<n1.destination<<" "; 
        cout.width(5);cout<<n1.type<<"  "; 
        cout.width(5);cout<<n1.number<<endl;
        fread(&n1,sizeof(n1),1,f1);
    }
    fclose(f1);
}
void sortirovka()
{
    int i=0,k=1,j;
    FILE *f2=fopen("1.out","rb");
    while(!feof(f2))
    {
        fread(&aer[i++],sizeof(n),1,f2);
    }
    while(k!=0)
    {
    k=0;
    for(j=0;j<i-2;j++)
    if(aer[j].number > aer[j+1].number ) 
    {
            q=aer[j];
            aer[j]=aer[j+1];
            aer[j+1]=q;
                k++; 
    }
    
    }
    FILE *f3=fopen("1.out","wb");
    for(j=0;j<i-1;j++)
        fwrite(&aer[j],sizeof(n),1,f3);
    cout<<"O'k"<<endl;
    fclose(f3);
    fclose(f2);
}
void search()
{
    int i=0,k=0,j,x;
    cout<<"Vvedite tip"<<endl;
    cin>>x;
    FILE *f4=fopen("1.out","rb");
    while(!feof(f4))
    {
        fread(&aer[i++],sizeof(n),1,f4);
    }
    for(j=0;j<i;j++)
    { 
        if(aer[j].type[1] == x) 
        {
        cout.width(10);cout<<aer[j].destination<<" "; 
        cout.width(5);cout<<aer[j].type[1]<<"  "; 
        cout.width(5);cout<<aer[j].number<<endl;   
            k++; 
        }
    } 
 
    if(k == 0) 
        cout << "Error!"<<endl; 
    fclose(f4);
}
void menu()
{
    int n;
    cout<<"1. Vvod dannix\n";
    cout<<"2. Vvivod dannix\n";
    cout<<"3. Zapros po tipu samoleta\n";
    cout<<"4. Sortirovka\n";
    cout<<"5. Vixod\n";
    cin>>n;
    switch(n){
        case 1: vvod(); break;
        case 2: vivod(); break;
        case 3: search(); break;
        case 4: sortirovka(); break;
        case 5: exit(0);
        
    }
}
 
int  main()
{
    while(1)
    {
        menu();cout<<"\n";}
    return 0;
}
Добавлено через 1 час 32 минуты
Фугкция search() не выполяет свою роль...
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
01.05.2013, 19:40     Структура #6
У Вас type типа char, а сравниваете Вы его с x типа int, причем второй его символ (индексация с нуля).
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
void search()
{
    int i=0,k=0,j;
    char x[30];
    cout<<"Vvedite tip"<<endl;
    cin>>x;
    FILE *f4=fopen("1.out","rb");
    while(!feof(f4))
    {
        fread(&aer[i++],sizeof(n),1,f4);
    }
    for(j=0;j<i;j++)
    { 
        if(!strcmp(aer[j].type, x)) 
        {
        cout.width(10);cout<<aer[j].destination<<" "; 
        cout.width(5);cout<<aer[j].type<<"  "; 
        cout.width(5);cout<<aer[j].number<<endl;   
            k++; 
        }
    } 
 
    if(k == 0) 
        cout << "Error!"<<endl; 
    fclose(f4);
}
Если будет выдавать ошибки, подключите библиотеку cstring.
Yandex
Объявления
01.05.2013, 19:40     Структура
Ответ Создать тему
Опции темы

Текущее время: 21:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru