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

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

Восстановить пароль Регистрация
 
Valera1984
1 / 1 / 0
Регистрация: 02.02.2014
Сообщений: 104
10.06.2014, 09:59     Найти ошибку в программе #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;
 
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2014, 09:59     Найти ошибку в программе
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nemorus63
Сообщений: n/a
12.06.2014, 07:39     Найти ошибку в программе #2
Доброго времени суток, уважаемые форумчане. Не поможете ли Вы мне победить сию оказию?

Задача: Описать структуру с именем 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;
}
Yandex
Объявления
12.06.2014, 07:39     Найти ошибку в программе
Ответ Создать тему
Опции темы

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