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

Ошибка в односвязном списке - C++

Восстановить пароль Регистрация
 
artov94
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 9
31.03.2013, 22:59     Ошибка в односвязном списке #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
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
#include<iostream>
#include<clocale>
using namespace std;
#define DEBUG 
 
 
 
class Monom{
protected:
    int Step,Kof;
public:
    Monom() {}
    ~Monom() {}
    void put_Step(int S) { Step=S; }
    void put_Kof(int K) { Kof=K; }
    int get_Step() { return Step; }
    int get_Kof() { return Kof; }
};
 
 
class Node{
    Monom *info;
public:
    Node() {}
    ~Node() {}
    Node *next;
    int count;
 
};
typedef Node *PNode;
PNode Head = NULL;
class Polinom{
    int rezult;
    int parametr;
public:
    Polinom() {}
    ~Polinom() {}
    void put_rezult() { cin>>rezult; }
    void put_parametr() { cin>>parametr; }
    int get_parametr() { return parametr; }
    int get_rezult() { return rezult; }
};
///////////////////////////////////////////////////////////////
PNode Crererewtr ();
void analizator();
void make_node(Node*);
void AddFirst (PNode, PNode) ;
void AddLast(PNode, PNode);
void AddAfter (PNode, PNode);
Monom First;
////////////////////////////////////////////////////////////////
int main()
{  
 
    setlocale(LC_ALL,"Russian");
    cout<<"Start >";
    cout.width(25);
    cout<<123<<"< End\n";
    //analizator();
    return 0;
}
 
void analizator()
{
 
    char ar[256]={0},*ptr=ar;
    int i=0,n=0;
    cin.getline(ar,256);
    while (*ptr!=0)
        if (*ptr++=='x')
            n++;
    ptr=ar;
 
    while (*ptr!=0){
        cout<<*ptr;
        ptr++;
    }
    ptr=ar;
    First.put_Kof(atoi(ptr));
 
    do ptr++;
    while (*ptr!='^');
    ptr++;
    First.put_Step(atoi(ptr));
    cout<<endl<<First.get_Kof();
    cout<<endl<<First.get_Step();
    cout<<endl<<n<<endl;
    return;
}
 
//void make_node(Node *ptr=NULL)
//{
//    Monom *m;
//  Node *p;
//  m=new Monom;
//  p=new Node;
//  *ptr->next = p;
//
//  return;
//}
PNode Crererewtr (  ) 
{ 
    PNode NewNode = new Node; 
    NewNode->count = 1; 
    NewNode->next = NULL; 
    return NewNode; 
}
 
void AddLast(PNode &Head, PNode NewNode) 
{ 
    PNode q = Head; 
    if (Head == NULL) { 
        AddFirst(Head, NewNode); 
        return; 
    } 
    while (q->next) q = q->next; 
    AddAfter(q, NewNode); 
}
 
 
void AddFirst (PNode &Head, PNode NewNode) 
{ 
    NewNode->next = Head; 
    Head = NewNode; 
}
 
void AddAfter (PNode p, PNode NewNode) 
{ 
    NewNode->next = p->next; 
    p->next = NewNode; 
}
Собственно что говорит компилятор.


3 IntelliSense: существует более одного экземпляра перегруженная функция "AddFirst", соответствующего списку аргументов:
функция "AddFirst(PNode, PNode)"
функция "AddFirst(PNode &Head, PNode NewNode)"
типы аргументов: (PNode, PNode) c:\Users\artem\Documents\Visual Studio 2012\Projects\ConsoleAp\ConsoleAp\dfdg.cpp 113

не совсем понимаю что нужно сделать,
если void AddFirst (PNode, PNode) ; меняю на
void AddFirst (PNode*, PNode) ;
то жалуется на вызов функции(
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hellrider_
 Аватар для Hellrider_
42 / 42 / 1
Регистрация: 12.03.2013
Сообщений: 112
31.03.2013, 23:07     Ошибка в односвязном списке #2
В обьявлении функции тип принимает одно
C++
1
void AddFirst (PNode, PNode) ;
в определении уже другое
C++
1
void AddFirst (PNode &Head, PNode NewNode)
Обявлять нужно так было
C++
1
void AddFirst (PNode&, PNode);
artov94
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 9
31.03.2013, 23:14  [ТС]     Ошибка в односвязном списке #3
премного благодарен, а если возникнут проблемы по это же программе то лучше создать новую тему? или же тут продолжать корректнее?
Hellrider_
 Аватар для Hellrider_
42 / 42 / 1
Регистрация: 12.03.2013
Сообщений: 112
31.03.2013, 23:18     Ошибка в односвязном списке #4
Думаю тут можно
artov94
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 9
02.04.2013, 01:17  [ТС]     Ошибка в односвязном списке #5
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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#include<iostream>
#include<clocale>
using namespace std;
#define DEBUG 
 
 
 
class Monom{
protected:
    int Step,Kof;
public:
    Monom() {}
    ~Monom() {}
    void put_Step(int S) { Step=S; }
    void put_Kof(int K) { Kof=K; }
    int get_Step() { return Step; }
    int get_Kof() { return Kof; }
};
 
 
class Node{
    Monom *info;
public:
    Node() {}
    ~Node() {}
    Node *next;
    int count;
 
};
typedef Node *PNode;
PNode Head = NULL,p, where;
class Polinom{
    int rezult;
    int parametr;
public:
    Polinom() {}
    ~Polinom() {}
    void put_rezult() { cin>>rezult; }
    void put_parametr() { cin>>parametr; }
    int get_parametr() { return parametr; }
    int get_rezult() { return rezult; }
};
///////////////////////////////////////////////////////////////
PNode CreateNode (int);
void analizator();
void make_node(Node*);
void AddFirst (PNode&, PNode) ;
void AddLast(PNode&, PNode);
void AddAfter (PNode, PNode);
void AddBefore(PNode&, PNode, PNode);
Monom First;
////////////////////////////////////////////////////////////////
int main()
{  
 
    setlocale(LC_ALL,"Russian");
    //p = CreateNode ();
    //AddLast ( Head, p );
    //cout<<CreateNode()->count<<endl;
    analizator();
    return 0;
}
    
void analizator()
{
    char ar[256]={0},*ptr=ar;
    int i=0,n=0;
    cin.getline(ar,256);
    while (*ptr!='>')
        if(*ptr=='+'){
            *ptr++;
            p=CreateNode (atoi(ptr));
            AddLast ( Head, p );
        }
        p = Head;
while ( p ) { // проход по списку и вывод результатов
cout<<p->count<<endl;
p = p->next;
}
    /*char ar[256]={0},*ptr=ar;
    int i=0,n=0;
    cin.getline(ar,256);
    while (*ptr!=0)
        if (*ptr++=='x')
            n++;
    ptr=ar;
 
    while (*ptr!=0){
        cout<<*ptr;
        ptr++;
    }
    ptr=ar;
    First.put_Kof(atoi(ptr));
 
    do ptr++;
    while (*ptr!='^');
    ptr++;
    First.put_Step(atoi(ptr));
    cout<<endl<<First.get_Kof();
    cout<<endl<<First.get_Step();
    cout<<endl<<n<<endl;*/
    return;
}
 
//void make_node(Node *ptr=NULL)
//{
//    Monom *m;
//  Node *p;
//  m=new Monom;
//  p=new Node;
//  *ptr->next = p;
//
//  return;
//}
PNode CreateNode (int n) 
{ 
    PNode NewNode = new Node; 
    NewNode->count = n; 
    cout<<NewNode->count<<endl;
    NewNode->next = NULL;
    return NewNode; 
}
 
void AddLast(PNode &Head, PNode NewNode) 
{ 
    PNode q = Head; 
    if (Head == NULL) { 
        AddFirst(Head, NewNode);
        return; 
    } 
    while (q->next) q = q->next; 
    AddAfter(q, NewNode); 
}
 
 
void AddFirst (PNode &Head, PNode NewNode) 
{ 
    NewNode->next = Head; 
    Head = NewNode; 
}
 
void AddAfter (PNode p, PNode NewNode) 
{ 
    NewNode->next = p->next; 
    p->next = NewNode; 
}
 
void AddBefore(PNode &Head, PNode p, PNode NewNode)
{
PNode q = Head;
if (Head == p) {
AddFirst(Head, NewNode); 
return;
}
while (q && q->next!=p) 
q = q->next;
if ( q ) 
AddAfter(q, NewNode); 
}
void AddAfter (PNode p, PNode NewNode) 
{ 
    NewNode->next = p->next; 
    p->next = NewNode; 
}
 
void AddBefore(PNode &Head, PNode p, PNode NewNode)
{
PNode q = Head;
if (Head == p) {
AddFirst(Head, NewNode); // вставка перед первым узлом
return;
}
while (q && q->next!=p) // ищем узел, за которым следует p
q = q->next;
if ( q ) // если нашли такой узел,
AddAfter(q, NewNode); // добавить новый после него
}
не хочет проходить 133 строку, пример входной строки +237+32+233332+238 (всё упрощено=) )

Добавлено через 2 часа 17 минут
блин...вот полдня не работало, написал сюда и заработало..извиняюсь

Добавлено через 4 часа 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
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
#include<iostream>
#include<clocale>
#include<cctype>
using namespace std;
#define DEBUG 
 
 
 
class Monom{
protected:
    int Step,Kof;
public:
    Monom() {}
    ~Monom() {}
    void put_Step(int S) { Step=S; }
    void put_Kof(int K) { Kof=K; }
    int get_Step() { return Step; }
    int get_Kof() { return Kof; }
};
 
 
class Node:public Monom{
    Monom *info;
public:
    Node() {}
    ~Node() {}
    Node *next;
    int count;
 
};
typedef Node *PNode;
PNode Head = NULL,p, where;
class Polinom{
    int rezult;
    int parametr;
public:
    Polinom() {}
    ~Polinom() {}
    void put_rezult() { cin>>rezult; }
    void put_parametr() { cin>>parametr; }
    int get_parametr() { return parametr; }
    int get_rezult() { return rezult; }
};
///////////////////////////////////////////////////////////////
PNode CreateNode (int);
void analizator();
void make_node(Node*);
void AddFirst (PNode&, PNode) ;
void AddLast(PNode&, PNode);
void AddAfter (PNode, PNode);
void AddBefore(PNode&, PNode, PNode);
Monom First;
////////////////////////////////////////////////////////////////
int main()
{  
 
    setlocale(LC_ALL,"Russian");
    //p = CreateNode ();
    //AddLast ( Head, p );
    //cout<<CreateNode()->count<<endl;
    analizator();
    return 0;
}
    
void analizator()
{
    char ar[256]={0},*ptr=ar;
    int i=0,n=0;
    cin.getline(ar,256);
    while (*ptr!=0){
        if(*ptr=='*'||*ptr=='>'){
            do{
                ptr--;
            }while(isdigit(*ptr));
            ptr++;
            p=CreateNode (atoi(ptr));
            AddLast ( Head, p );
            while(*ptr!='^'){
            ptr++;
            }
            ptr++;
            p->put_Step(atoi(ptr));
        }
        ptr++;
    }
        p = Head;
while ( p ) { 
cout<<'<'<<p->get_Kof()<<" -кофициэнты"<<endl;
cout<<'<'<<p->get_Step()<<" -степени"<<endl;
p = p->next;
}
    return;
}
 
PNode CreateNode (int n) 
{ 
    PNode NewNode = new Node; 
    NewNode->put_Kof(n);
    NewNode->next = NULL;
    return NewNode; 
}
 
void AddLast(PNode &Head, PNode NewNode) 
{ 
    PNode q = Head; 
    if (Head == NULL) { 
        AddFirst(Head, NewNode);
        return; 
    } 
    while (q->next) q = q->next; 
    AddAfter(q, NewNode); 
}
 
 
void AddFirst (PNode &Head, PNode NewNode) 
{ 
    NewNode->next = Head; 
    Head = NewNode; 
}
 
void AddAfter (PNode p, PNode NewNode) 
{ 
    NewNode->next = p->next; 
    p->next = NewNode; 
}
 
void AddBefore(PNode &Head, PNode p, PNode NewNode)
{
PNode q = Head;
if (Head == p) {
AddFirst(Head, NewNode); 
return;
}
while (q && q->next!=p) 
q = q->next;
if ( q ) 
AddAfter(q, NewNode); 
}
сейчас обрабатывает строку типа 543*x^34+22*x^423 нужна обработка <5*x^-2-42*x^4+456-5*x> подскажите алгоритм обработки( знаки ^ и * обязательны, если не задана степень, она равно 1.. и прочие похожие условности
Yandex
Объявления
02.04.2013, 01:17     Ошибка в односвязном списке
Ответ Создать тему
Опции темы

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