1 / 1 / 0
Регистрация: 05.11.2012
Сообщений: 9
1

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

31.03.2013, 22:59. Показов 898. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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) ;
то жалуется на вызов функции(
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.03.2013, 22:59
Ответы с готовыми решениями:

Ошибка в односвязном списке
Помогите решить эти 2 проблемы C4101: NextNode: неиспользованная локальная переменная (в 118...

Ошибка в односвязном списке
#include &quot;exception.cpp&quot; template &lt;class item&gt; class List { struct Element { item inf;...

Ошибка с удалением элемента в односвязном списке
Здравствуйте! Вроде написал функцию удаления элемента в указанной позиции, но почему то не...

Конструктор в односвязном списке
В общем, я только начинаю разбираться в программировании, и у меня возник такой вопрос: как...

4
50 / 50 / 4
Регистрация: 12.03.2013
Сообщений: 171
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);
1
1 / 1 / 0
Регистрация: 05.11.2012
Сообщений: 9
31.03.2013, 23:14  [ТС] 3
премного благодарен, а если возникнут проблемы по это же программе то лучше создать новую тему? или же тут продолжать корректнее?
0
50 / 50 / 4
Регистрация: 12.03.2013
Сообщений: 171
31.03.2013, 23:18 4
Думаю тут можно
0
1 / 1 / 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.. и прочие похожие условности
0
02.04.2013, 01:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2013, 01:17
Помогаю со студенческими работами здесь

Поиск в односвязном списке
Добрый всем день. Знаю что тема неоднократно поднималась. Помогите реализовать поиск по...

Remove_at() в односвязном списке
Привет. Не пойму как в данном(рабочем) коде, при удалении элемента посреди списка, предыдущему...

Поиск и удаление в односвязном списке
Помогите с удаление элемента по ключу(номеру этажа). При удалении 2-го элемента в списке, удаляется...

Реализация сортировки в односвязном списке
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; /* *...


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

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

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