2 / 2 / 1
Регистрация: 20.12.2016
Сообщений: 121
1

Ошибка при запуске программы

20.12.2016, 19:38. Показов 622. Ответов 11
Метки нет (Все метки)

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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#include "stdafx.h"
#include <iostream>
using namespace std;
class List
{
    class Node
    {
    public:
        int d;
        Node* next;
        Node* prev;
        Node(int dat = 0)
        {
            d = dat;
            next = 0;
            prev = 0;
        }
    };
    Node *pbeg, *pend;
 
public:
    List()
    {
        pbeg = 0;
        pend = 0;
    }
    ~List();
    void add(int d);
    Node* find(int i);
    Node* insert(int key, int d);
    bool remove(int key);
    void print();
    void print_back();
};
void List::add(int d)
{
    Node* pv = new Node(d);
    if (pbeg == 0)
        pbeg = pend = pv;
    else
    {
        pv->prev = pend;
        pend->next = pv;
        pend = pv;
    }
}
Node* List::find(int d)
{
    Node* pv = pbeg;
    while (pv)
    {
        if (pv->d == d)
            break;
        pv = pv->next;
    }
    return pv;
}
Node* List::insert(int key, int d)
{
    if (Node* pkey = find(key))
    {
        Node* pv = new Node(d);
        pv->next = pkey->next;
        pv->prev = ркеу;
        pkey->next = pv;
        if (ркеу != pend)
            (pv->next)->prev = pv;
        else
            pend = pv;
        return pv;
    }
    return 0;
}
bool List::remove(int key)
{
    if (Node* pkey = find(key))
    {
        if (pkey == pbeg)
        {
            pbeg = pbeg->next;
            pbeg->prev *= 0;
        }
        else if (pkey == pend)
        {
            pend = pend->prev;
            pend->next - 0;
        }
        else
        {
            (pkey->prev)->next = pkey->next;
            (pkey->next)->prev = pkey->prev;
        }
        delete pkey;
        return true;
    }
    return false;
}
void List::print()
{
    Node* pv = pbeg;
    cout << endl << "1ist: ";
    while (pv)
    {
        cout << pv->d << ' ';
        pv = pv->next;
    }
    cout << endl;
}
void List::print_back()
{
    Node* pv = pend : cout << endl << " list back: ";
    while (pv)
    {
        cout << pv->d << ' ';
        pv = pv->prev;
    }
    cout << endl;
}
List::~List()
{
    if (pbeg != 0)
    {
        Node* pv = pbeg;
        while (pv)
        {
            pv = pv->next;
            delete pbeg;
            pbeg = pv;
        }
    }
}
int main()
{
    List L;
    for (int i = 2; i < 6; i++)
        L.add(i);
    L.print();
    L.print_back();
    L.insert(2. 200);
    if (!L.remove(5))
        cout << "not found";
    L.print();
    L.print_back();
    system("pause");
}
ошибки такие:
ошибки

1>Компиляция...
1>Listt.cpp
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(32) : error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(32) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(33) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(33) : error C2556: int *List::find(int): перегруженная функция отличается от 'List::Node *List::find(int)' только возвращаемым типом
1> c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(18): см. объявление 'List::find'
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(33) : error C2371: List::find: переопределение; различные базовые типы
1> c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(18): см. объявление 'List::find'
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(39) : error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(39) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(39) : error C2086: int Node: переопределение
1> c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(32): см. объявление 'Node'
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(40) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(40) : error C2556: int *List::insert(int,int): перегруженная функция отличается от 'List::Node *List::insert(int,int)' только возвращаемым типом
1> c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(19): см. объявление 'List::insert'
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(40) : error C2371: List::insert: переопределение; различные базовые типы
1> c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(19): см. объявление 'List::insert'
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(41) : error C2264: List::find: ошибка в определении или объявлении функции; функция не вызвана
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(44) : error C2065: ркеу: необъявленный идентификатор
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(46) : error C2065: ркеу: необъявленный идентификатор
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(53) : error C2264: List::find: ошибка в определении или объявлении функции; функция не вызвана
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(56) : error C2296: *=: недопустимо, левый операнд имеет тип "List::Node *"
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(59) : warning C4552: -: оператор не имеет результата; требуется оператор с побочным действием
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(75) : error C2143: синтаксическая ошибка: отсутствие ";" перед ":"
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(75) : error C2143: синтаксическая ошибка: отсутствие ";" перед ":"
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(94) : error C2143: синтаксическая ошибка: отсутствие ")" перед "константа"
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(94) : error C2660: List::insert: функция не принимает 1 аргументов
1>c:\users\админ\documents\visual studio 2008\projects\listt\listt\listt.cpp(94) : error C2059: синтаксическая ошибка: )

Добавлено через 12 минут
спс за" помощь", большего не ожидал
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2016, 19:38
Ответы с готовыми решениями:

В чем ошибка? При запуске программы открывается консоль и сразу ошибка о завершении программы
К тому же выдает warning: deprecated conversion from string constant to 'char*' . #include...

Ошибка в конструкторе с параметром. Компилятор не ругается, но при запуске программы возникает ошибка
Я знаю точно, что ошибка в конструкторе с параметром. Компилятор не ругается, но при запуске моей...

Ошибка при запуске программы
Добрый день, подскажите, пожалуйста, в чем причина того, что данная программа не запускается) Можно...

Ошибка при запуске программы
Здравствуйте. Написал следующую программку #include &lt;cstdlib&gt; #include &lt;windows.h&gt; #include...

11
1352 / 851 / 365
Регистрация: 26.02.2015
Сообщений: 3,799
20.12.2016, 19:43 2
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
#include<iostream>
using namespace std;
class Node {
public:
    int d;
    Node *next;
    Node *prev;
    Node(int dat = 0)
    {
        d = dat; next = 0; prev = 0;
    }
};
class List {
    
    Node *pbeg, *pend;
public:
    List() { pbeg = 0; pend = 0; }
    ~List();
    void add(int d);
    Node * find(int i);
    Node * insert(int key, int d);
    bool remove(int key);
    void print();
    void print_back();
};
void List::add(int d)
{
    Node *pv = new Node(d);
    if (pbeg == 0)
        pbeg = pend = pv;
    else {
        pv->prev = pend;
        pend->next = pv;
        pend = pv;
    }
}
Node * List::find(int d)
{
    Node *pv = pbeg;
    while (pv) {
        if (pv->d == d)break;
        pv = pv->next;
    }
    return pv;
}
Node * List::insert(int key, int d)
{
    if (Node *pkey = find(key)) {
        Node *pv = new Node(d);
        pv->next = pkey->next;
        pv->prev = pkey;
        pkey->next = pv;
        if (pkey != pend) (pv->next)->prev = pv;
        else pend = pv;
        return pv;
    }
    return 0;
}
bool List::remove(int key)
{
    if (Node *pkey = find(key)) {
        if (pkey == pbeg) {
            pbeg = pbeg->next;
            pbeg->prev = 0;
        }
        else if (pkey == pend) {
            pend = pend->prev;
            pend->next - 0;
        }
        else {
            (pkey->prev)->next = pkey->next;
            (pkey->next)->prev = pkey->prev;
        }
        delete pkey;
        return true;
    }
    return false;
}
void List::print()
{
    Node *pv = pbeg;
    cout << endl << "1ist: ";
    while (pv) {
        cout << pv->d << ' ';
        pv = pv->next;
    }
    cout << endl;
}
void List::print_back() {
    Node *pv = pend;
    cout << endl << " list back: ";
    while (pv) {
        cout << pv->d << ' ';
        pv = pv->prev;
    }
    cout << endl;
}
List::~List()
{
    if (pbeg != 0) {
        Node *pv = pbeg;
        while (pv) {
            pv = pv->next;
            delete pbeg;
            pbeg = pv;
        }
    }
}
int main()
{
    List L;
    for (int i = 2; i<6; i++) L.add(i);
    L.print();
    L.print_back();
    L.insert(2, 200);
    if (!L.remove(5))cout << "not found";
    L.print();
    L.print_back();
    system("pause");
}
Добавлено через 25 секунд
Витек1221, всегда пожалуйста, конечно, но вы бы хоть почитали суть ошибок. Вы этого не делали.
0
2 / 2 / 1
Регистрация: 20.12.2016
Сообщений: 121
20.12.2016, 20:57  [ТС] 3
а что там было не так я не понял то? вроде ошибок не было. сейчас кстати все работает, только при добавлении "stdafx.h"
но снова ошибка : Необработанное исключение в "0x00e01a11" в "Listt.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfeeefeee". программа запускается но вместе с тем и это окно, все это сразу виснет и не отвечает
0
1352 / 851 / 365
Регистрация: 26.02.2015
Сообщений: 3,799
20.12.2016, 21:05 4
Цитата Сообщение от Витек1221 Посмотреть сообщение
а что там было не так я не понял то?
Ну, вы описание ошибок как прочтете, так и поймете все.
1
2 / 2 / 1
Регистрация: 20.12.2016
Сообщений: 121
20.12.2016, 21:09  [ТС] 5
спасибо, конечно, а можете сказать куда теряется число 5 - последний элемент списка?, после вставки 200 в список он из 2 3 4 5 превращается в 2 200 3 4 -1789162
0
59 / 54 / 34
Регистрация: 18.04.2014
Сообщений: 122
20.12.2016, 21:11 6
Витек1221, строка 68 pend->next - 0; поменять на pend->next = 0;
0
2 / 2 / 1
Регистрация: 20.12.2016
Сообщений: 121
20.12.2016, 21:16  [ТС] 7
а как для этого списка найти максимальный элемент (при условии, что список не пуст);
0
59 / 54 / 34
Регистрация: 18.04.2014
Сообщений: 122
20.12.2016, 21:32 8
Витек1221, по анлогии с методом List::find, только условие видоизмените для поиска максимального.
0
2 / 2 / 1
Регистрация: 20.12.2016
Сообщений: 121
20.12.2016, 22:17  [ТС] 9
хотел спросить, как сделать цикл, в котором будет перебераться список и будет определяться число вхождений элемента. это надо вписать в find'e , но как
0
59 / 54 / 34
Регистрация: 18.04.2014
Сообщений: 122
20.12.2016, 22:30 10
Витек1221,
C++
1
2
3
4
5
6
7
8
9
Node * List::find(int d)
{
    Node *pv = pbeg;
    while (pv) { // пока не достигнут последний элемент
        if (pv->d == d)break; // если текущий элемент равен искомому выходим из цикла
        pv = pv->next; // берем следующий элемент списка
    }
    return pv;
}
Добавьте в класс переменную счетчик и увеличивайте её, когда искомый равен текущему.
1
Вездепух
Эксперт CЭксперт С++
11685 / 6364 / 1723
Регистрация: 18.10.2014
Сообщений: 16,037
20.12.2016, 22:38 11
Цитата Сообщение от Витек1221 Посмотреть сообщение
а что там было не так я не понял то?
"Не так" у вас в коде следующее:

1. При определении методов класса List за пределами класса List, тип возврата надо указывать не как Node, а как List::Node. При этом вытаскивать Node наружу из класса List, как это сделал Nishen, совершенно не нужно. Правильнее оставить Node внутри, как у вас и было задумано изначально.

2. У вас русские буквы используются в иднтификаторах типа ркеу. Внимательнее следите за тем, что пишете.

3. Что такое pbeg->prev *= 0; ???

4. Что такое pend->next - 0; ???

5. Что такое Node *pv = pend: ???

6. Что такое L.insert(2. 200); ???

Это ваши ошибки компиляции. А что там у вас еще с собственно реализацией творится - надо отлаживать.
1
2 / 2 / 1
Регистрация: 20.12.2016
Сообщений: 121
21.12.2016, 10:29  [ТС] 12
да вроде все отладил, мой визуал требовал "stdafx.h" нужно только было сделать функции поиска максимального элемента из списка и замену всех вхождений элемента х на у . и результат надо было вводить посредством меню , а не передачи конструктору параметров и выводить в тхт файл.

Добавлено через 23 минуты
а как сделать счетчик вхождений элемента, если он есть? я зделал как мне посоветовал парень выше, добавил в класс переменную value,увеличиваю ее, но опять появляются ошибки совсем в других методах...
0
21.12.2016, 10:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2016, 10:29
Помогаю со студенческими работами здесь

Ошибка при запуске программы
помогите исправить, программа компилируется, но выдаёт ошибку #include &lt;iostream&gt; #include...

Ошибка при запуске программы
Сделал алгоритм слияния, нужно проверить время сортировки от 10000 элементов до 100000 (10тыс.,...

Ошибка при запуске программы
Здравствуйте! Нужно исправить ошибки в программе,почему-то не запускается функция поиска ...

Ошибка при запуске программы
Всем привет, компилю программу в Visual 2010, язык C++. Компилирую как в Debug, так и в Release. На...


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

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

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