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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
artov94
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 9
#1

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

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

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) ;
то жалуется на вызов функции(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2013, 22:59     Ошибка в односвязном списке
Посмотрите здесь:

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

Ошибка с удалением элемента в односвязном списке - C++
Здравствуйте! Вроде написал функцию удаления элемента в указанной позиции, но почему то не срабатывает. Где ошибка?Или если есть вариант...

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

Удаление узлов в односвязном списке - C++
Помогите пожалуйста, не могу понять что не так. Нужно удалить узлы содержащие простые числа.Программа не удаляет! #include&lt;iostream&gt; ...

Сортировка вставками в односвязном списке - C++
Собственно нужно реализовать такую сортировку, но что-то не могу я придумать как её реализовать именно в односвязном списке, у нас ведь...

Использование деструктора в односвязном списке с++ - C++
Здравствуйте. Нужна срочная помощь!!! Есть реализация односвязного списка в котором узел - класс, а не структура. Вначале программы...

Удаление по ключу в односвязном списке - C++
Написал алгоритм удаления по ключу в линейном, односвязном списке, но он не удаляет, а коверкает записи. Помогите разобраться.. ...

Удаление повторяющихся элементов в односвязном списке - C++
Добрый день! Задание такое: построить линейный список из нескольких динамических переменных, содержащих вводимые целые числа....

В односвязном списке поменять местами крайние элементы - C++
что есть у меня: #include &lt;iostream&gt; #define N 6 using namespace std; struct Node { int d; Node*next; }; Node *...

Найти в односвязном списке отрицательные элементы и удалить их - C++
Нужно в списке, типа очередь находить отрицательные элементы и удалять их. Написал код, но почему то не работает функция удаления...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hellrider_
49 / 49 / 2
Регистрация: 12.03.2013
Сообщений: 161
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_
49 / 49 / 2
Регистрация: 12.03.2013
Сообщений: 161
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     Ошибка в односвязном списке
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru