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

Найти ошибку в программе

10.06.2014, 09:59. Показов 982. Ответов 1
Метки нет (Все метки)

Программа должна используя Дерево выводить список игроков сначала всех играющих в основном составе ниже играющих в резерве.... она же выводит всех в перемешку.... Почему?

C++ (Qt)
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#include"stdafx.h"
#include"iostream"
#include"conio.h"
#include <string.h>
 
using namespace std;
 
struct Data         
    {
        unsigned day;       
        unsigned month;     
        unsigned year;
    };
 
struct T_sport
    {
        char fio[40];
        Data d_birth;
        unsigned v_CSKA ;
        char MestoVkomande[20] ;
        char Sostav [20];
        
}; 
 
struct TreeNode
{
    //char MestoVkomande [20];
    string Sostav ;
    T_sport sport;
    TreeNode *next;
    TreeNode*child;
};
 
class osnovnoi
{
private:
    TreeNode *head;
public:
    osnovnoi()
    
    {
        head = new TreeNode;
        TreeNode *node1 = new TreeNode;
    //  node1->MestoVkomande="Forward";
        node1->Sostav="Main";
        node1->child = NULL;
        node1->next = NULL;
        head->child = node1;
        TreeNode *node2 = new TreeNode;
        //node2->MestoVkomande="Forward";   
        node2->Sostav="Reserve";
        node2->child = NULL;
        node2->next = NULL;
        node1->next = node2;
        //TreeNode *node3 = new TreeNode;
        //node3->MestoVkomande="Defender";  
        T_sport a = {"Ivanov I. I.",3,1,1984,2000,"Defender","Main"};
        TreeNode *nodeA = new TreeNode;
        nodeA->sport = a;
        nodeA->child = NULL;
        nodeA->next = NULL;
        node1->child = nodeA;
        TreeNode *nodeB = new TreeNode;
        T_sport b ={"Petrov A.A.",8,12,1987,2002, "Forward","Reserved"};
        nodeB->sport = b;
        nodeB->child = NULL;
        nodeB->next = NULL;
        node2->child = nodeB;
}
 
    void add_node()
    {
        T_sport a; 
    char c;
    cout<<endl<<"Enter data person\n";
    cout<<" fio ";
    cin.getline(a.fio,40);
    cout<<endl<<"Enter date of birthday: \n";
    cout<<" day (1-31) ";
    cin>>a.d_birth.day;
    cin.get(c);
    cout<<" month (1-12)";
    cin>>a.d_birth.month;
    cin.get(c);
    cout<<" year ";
    cin>>a.d_birth.year;
    cin.get(c);
    cout<<" v_CSKA ";
    cin>>a.v_CSKA;
    cin.get(c);
    cout<<" MestoVkomande ";
    cin.getline(a.MestoVkomande,20);
    cout<<" Sostav ";
    cin.getline(a.Sostav,20);
 
    TreeNode*node= head->child;
    
    while(true)
        {
        if (strcmp(node->Sostav.c_str(),a.Sostav)==0)
                {
                    TreeNode*newNode= new TreeNode;
                    newNode->sport=a;
                    newNode->child=NULL;
                    if(node->child == NULL)
                    node->child = newNode;
                else    
                {
 
                TreeNode *elem = node->child;
                    while(elem->next != NULL)
                        elem = elem->next;
                    elem->next = newNode;
                }
                return;
            }
            if(node->next == NULL)
                break;
            node = node->next;
        }
    TreeNode *newNode = new TreeNode;
        //newNode->MestoVkomande = a.MestoVkomande;
        newNode->Sostav= a.Sostav;
        newNode->child = NULL;
        newNode->next = NULL;
        node->next = newNode;
        TreeNode *nodeA = new TreeNode;
        nodeA->sport = a;
        nodeA->child = NULL;
        nodeA->next = NULL;
        newNode->child = nodeA;
 
    }
 
    void print_tree()
    {
        printf("[\n ");
        TreeNode *node = head->child;
        while(node != NULL)
        {
            cout<<" --> "<< node->Sostav.c_str()<<endl;
            if(node->child != NULL)
            {
                TreeNode *child = node->child;
                while(child != NULL)
                {
                 printf("%20s ! %2d.%2d.%4d ! %4d ! %15s ! %15s\n",child->sport.fio,child->sport.d_birth.day,child->sport.d_birth.month,child->sport.d_birth.year,child->sport.v_CSKA,child->sport.MestoVkomande,child->sport.Sostav);
 
         child= child->next;
                
                }
                
            }
            node=node->next;    
 
         }
        printf("]\n");
    }
 
    void napad_osnov()
    {
    cout<<"Osnovnoi sostav "<<endl; 
    TreeNode *node = head->child;
    TreeNode *first = node->child;
    while(node != NULL)
        {
    if ((node->sport.Sostav=="Main") && (node->sport.MestoVkomande=="Forward"))
       printf("%20s!%2d.%2d.%4d \n",node->sport.fio,node->sport.d_birth.day,node->sport.d_birth.month,node->sport.d_birth.year);
       first=node->child;
    node = node->next;
 
    
   
        }
        
      printf("Основной состав", first->sport.fio);    
        
    }
};
 
int main()
{
    
    
    osnovnoi f;
    for(int i = 2; i < 5; i++)
    {   
        f.add_node();
    };
    
    f.print_tree();
    f.napad_osnov();
    _getch();
 
    return 0;
}
Добавлено через 2 минуты
И как правильно сравнивать
C++ (Qt)
1
string Sostav и char Sostav[20]
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct T_sport
    {
        char fio[40];
        Data d_birth;
        unsigned v_CSKA ;
        char MestoVkomande[20] ;
        char Sostav [20];
        
}; 
 
struct TreeNode
{
    //char MestoVkomande [20];
    string Sostav ;
    T_sport sport;
    TreeNode *next;
    TreeNode*child;
};
C++ (Qt)
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
while(true)
        {
        if (strcmp(node->Sostav.c_str(),a.Sostav)==0)
                {
                    TreeNode*newNode= new TreeNode;
                    newNode->sport=a;
                    newNode->child=NULL;
                    if(node->child == NULL)
                    node->child = newNode;
                else    
                {
 
                TreeNode *elem = node->child;
                    while(elem->next != NULL)
                        elem = elem->next;
                    elem->next = newNode;
                }
                return;
            }
            if(node->next == NULL)
                break;
            node = node->next;
        }
    TreeNode *newNode = new TreeNode;
        //newNode->MestoVkomande = a.MestoVkomande;
        newNode->Sostav= a.Sostav;
        newNode->child = NULL;
        newNode->next = NULL;
        node->next = newNode;
        TreeNode *nodeA = new TreeNode;
        nodeA->sport = a;
        nodeA->child = NULL;
        nodeA->next = NULL;
        newNode->child = nodeA;
 
    }
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
1
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2014, 09:59
Ответы с готовыми решениями:

Найти ошибку в программе: в visual studio выдает ошибку
#include &lt;math.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; int main() ...

Найти ошибку в программе
Помогите найти ошибку. #include &lt;iostream&gt; using namespace std; int main() { int...

Найти ошибку в программе
Найти ошибку в программе(связано с неправильным использованием указателя). Как можно исправить...

найти ошибку в программе
Сортировка вещественных чисел из файла методом пузырька #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt;...

1
nemorus63
12.06.2014, 07:39 2
Лучший ответ Сообщение было отмечено Valera1984 как решение

Решение

Доброго времени суток, уважаемые форумчане. Не поможете ли Вы мне победить сию оказию?

Задача: Описать структуру с именем NOTE,содержащую следующие поля:
1.фамилия,имя;
2.номер телефона;
3.дата рождения(массив из 3 чисел)
Написать программу,выполняющую следующие действия:
1.ввод с клавиатуры данных в массив,состоящий из 6 элементов типа NOTE;
2.вывод на экран информации о людях,чьи дни рождения приходятся на сезон( осень,лето,зима,весна),,значение которого введено с клавиатуры;
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#pragma hdrstop
#pragma argsused
#include <cstring.h>
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <locale>
#include <cstdlib>
#include <time.h>
 
using namespace std;
struct NOTE
{
char FAMILIY[30];
char IMY[30];
char TELEFON[30];
int Day;
int Mounth;
int Year;
}
NOTE[5];
int main (void)
{
 
char ch, str[80];
for (; ;){
do
{
cout <<"Dannaja programma vypolnjaet vvod s klaviatury dannyh o Lydyx o ix DATE ROGDENIY i vyvodit na displej svedenija o dannom cheloveke s ukasaniem data.\n";
cout <<"1. Vvod dannyh o cheloveke.\n";
cout <<"2. Pechat' .\n";
cout <<"3.Konec.\n ";
cin >> str;
ch = toupper (*str) ;
}
while (ch != '1' && ch != '2' && ch != '3');
switch(ch)
{
case '1' :
 
for(int i=0;i<5;i++){
cout <<" VVedite FAMILIY :\n ";
cin >>NOTE[i].FAMILIY;
cout <<" VVedite IMY - ";
cin >> NOTE[i].IMY ;
cout <<"VVedite TELEFON - ";
cin >> NOTE[i].TELEFON ;
cout<<"VVedite  DATA ROGDENIY-:\n";
cout<<"dan': ";
cin>>NOTE[i].Day;
cout<<"messyc: ";
cin>>NOTE[i].Mounth;
cout<<"god: ";
cin>>NOTE[i].Year;
}
cout<<"dannie vvedini";
getch();
break ;
 
case '2' :
{
char v[20];
cout<<"vvedite vremi goda:";
cin>>v;
if(v=="zima")
{
    for(int i=0;i<5;i++)
        {
             int d=0;
            if(NOTE[i].Mounth==12||NOTE[i].Mounth==1||NOTE[i].Mounth==2)
            {
                cout<<"Familiy: "<<NOTE[i].FAMILIY<<endl;
                cout<<"Imy: "<<NOTE[i].IMY<<endl;
                cout<<"nomer telefona: "<<NOTE[i].TELEFON<<endl;
                cout<<"data rogdeniy: "<<NOTE[i].Day<<"."<<NOTE[i].Mounth<<"."<<NOTE[i].Year<<endl;
           d++;
            }
            if(d==0)
            {
                cout<<"ludei rodigiesy zimoi net!;(";
                getch();
            }
            }
            getch();
        }
if(v=="vesna")
{
    for(int i=0;i<5;i++)
        {
             int d=0;
            if(NOTE[i].Mounth==3||NOTE[i].Mounth==4||NOTE[i].Mounth==5)
            {
                cout<<"Familiy: "<<NOTE[i].FAMILIY<<endl;
                cout<<"Imy: "<<NOTE[i].IMY<<endl;
                cout<<"nomer telefona: "<<NOTE[i].TELEFON<<endl;
                cout<<"data rogdeniy: "<<NOTE[i].Day<<"."<<NOTE[i].Mounth<<"."<<NOTE[i].Year<<endl;
           d++;
           }
            if(d==0)
            {
                cout<<"ludei rodigiesy vesna net!;(";
                getch();
            }
            }
            getch();
        }
if(v=="leto")
{
    for(int i=0;i<5;i++)
        {
             int d=0;
            if(NOTE[i].Mounth==6||NOTE[i].Mounth==7||NOTE[i].Mounth==8)
            {
                cout<<"Familiy: "<<NOTE[i].FAMILIY<<endl;
                cout<<"Imy: "<<NOTE[i].IMY<<endl;
                cout<<"nomer telefona: "<<NOTE[i].TELEFON<<endl;
                cout<<"data rogdeniy: "<<NOTE[i].Day<<"."<<NOTE[i].Mounth<<"."<<NOTE[i].Year<<endl;
            d++;
            }
            if(d==0)
            {
                cout<<"ludei rodigiesy letom net!";
                getch();
            }
            }
            getch();
        }
if(v=="osen'")
{
    for(int i=0;i<5;i++)
        {
            int d=0;
            if(NOTE[i].Mounth==9||NOTE[i].Mounth==10||NOTE[i].Mounth==11)
            {
                 cout<<"Familiy: "<<NOTE[i].FAMILIY<<endl;
                cout<<"Imy: "<<NOTE[i].IMY<<endl;
                cout<<"nomer telefona: "<<NOTE[i].TELEFON<<endl;
                cout<<"data rogdeniy: "<<NOTE[i].Day<<"."<<NOTE[i].Mounth<<"."<<NOTE[i].Year<<endl;
                d++;
            }
            if(d==0)
            {
                cout<<"ludei rodigiesy osen'u net!";
                getch();
            }
            }
            }
            getch();
        break;
        }
 
 
case '3' :
exit(0) ;
}
}
return 0;
}
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.06.2014, 07:39
Помогаю со студенческими работами здесь

Найти ошибку в программе
Найти к-е число Фибоначчи,такое,что x(k-1)&lt;a&lt;x(k). Числа Фибоначчи:x(1)=x(2)=1;x(k)=x(k-2)+x(k-1) ...

найти ошибку в программе
Программа должна обеспечивать ввод с клавиатуры числа от 0 до 255 (типа unsight char), переводить...

Найти ошибку в программе
Решаю задачу: Вот мой код: #include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std;...

Найти ошибку в программе
#include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;vector&gt; using namespace std; int main(){...

Найти ошибку в программе
#include &lt;stdafx.h&gt; #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;fstream&gt; #include &lt;ctime&gt;...

найти ошибку в программе
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace...


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

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

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