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

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

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

Стек (Связное представление). Программа работает, но выдает ошибку - C++

18.02.2013, 17:59. Просмотров 450. Ответов 5
Метки нет (Все метки)

Всем добра,
нужна Ваша помощь. Написал программку со стеком в связном представлении, выполняет инициализацию, добавление и вывод всего стека на экран. Программа работает, но выдает ошибку, ошибку указывает на вот эту строку
C++
1
while (MyStack2 -> Value != NULL)
Весь код:
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
#include "stdafx.h"
 
struct STACK
{
    float Value;
    STACK *Link;
};
 
 struct Using_Stack
 {
    STACK *New_Var;
    void (*Init)(Using_Stack*);
    void (*Push)(Using_Stack*, float );
    void (*SHOW)(Using_Stack*);
 };
 
/* INITIALIZATION  */
void MyInit( Using_Stack* MyStack )
{
    MyStack->New_Var = NULL;
}
 
/* PUSH  */
void MyPush( Using_Stack* MyStack, float Value )
{
    STACK *New_El;
 
    New_El = new STACK;
    New_El -> Value = Value;
    New_El -> Link = MyStack -> New_Var;
    MyStack -> New_Var = New_El;
}
 
/* SHOW  */
void MySHOW( Using_Stack* MyStack )
{
    STACK* MyStack2;
    MyStack2 = MyStack -> New_Var;
 
    float Showing;
    while (MyStack2 -> Value != NULL)   
    {           
            Showing = MyStack2 -> Value;
            MyStack2 = MyStack2 -> Link;
            printf("%g\n", Showing);
    }
}
 
void main()
{
    Using_Stack *MyStack;
    MyStack = new Using_Stack;
 
    MyStack -> Init = MyInit;
    MyStack -> Push = MyPush;
    MyStack -> SHOW = MySHOW;
 
    MyStack -> Init(MyStack);   
    MyStack -> Push(MyStack, 10.5);     
    MyStack -> Push(MyStack, 20.5);
 
    MyStack -> SHOW(MyStack);
 
}
В чем ошибка?
Буду благодарен за помощь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2013, 17:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Стек (Связное представление). Программа работает, но выдает ошибку (C++):

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

Программа работает, но при выводе определенной комбинации выдает ошибку - C++
Помогите начинающему программисту :) Программа работает, но если ввести все непростые числа, то выдает ошибку "поврежденная куча". Во всех...

Почему программа выдает ошибку при первом запуске, а дальше работает нормально? Код C - C++
Подскажите почему программа выдает ошибку при первом запуске, а дальше работает нормально? #include <iostream> #include <cstdlib> ...

При запуске из среды программа работает, при запуске выполняемого файла выдает ошибку - C++
Добавлено через 1 минуту 35 секунд как исправить ошибки в названии темы? там должно было быть исполняемого файла

Программа выдает ошибку - C++
Доброго времени суток, после компиляции программа дает сбой и выдает: Необработанное исключение в "0x00051bd0" в "9.8.exe": 0xC0000005:...

Программа выдает одну и ту же ошибку - C++
Программа выдает одну и ту же ошибку Parameter argc/argv never used Как ее исправить? Программный код на С++ написанный в Borland...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
vodilawofer
29 / 27 / 2
Регистрация: 27.09.2012
Сообщений: 123
18.02.2013, 18:15 #2
Цитата Сообщение от victor72 Посмотреть сообщение
void MyPush( Using_Stack* MyStack, float Value )
{
* * STACK *New_El;
New_El = new STACK;
* * New_El -> Value = Value;
* * New_El -> Link = MyStack -> New_Var;
* * MyStack -> New_Var = New_El;
}
New_El -> Link = MyStack;
MyStack= New_El;


Цитата Сообщение от victor72 Посмотреть сообщение
/* SHOW **/
void MySHOW( Using_Stack* MyStack )
{
* * STACK* MyStack2;
* * MyStack2 = MyStack -> New_Var;
float Showing;
* * while (MyStack2 -> Value != NULL) *
* * { * * * * *
* * * * * * Showing = MyStack2 -> Value;
* * * * * * MyStack2 = MyStack2 -> Link;
* * * * * * printf("%g\n", Showing);
* * }
}
MyStack2 = MyStack;
while (MyStack2 != NULL)

мб вот так получится
victor72
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 10
18.02.2013, 18:49  [ТС] #3
Цитата Сообщение от vodilawofer Посмотреть сообщение
New_El -> Link = MyStack;
MyStack= New_El;



MyStack2 = MyStack;
while (MyStack2 != NULL)

мб вот так получится
Не получается, в ошибке выдает -
error C2440: =: невозможно преобразовать "Using_Stack *" в "STACK *"
Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
vodilawofer
29 / 27 / 2
Регистрация: 27.09.2012
Сообщений: 123
18.02.2013, 20:06 #4
измени только в функции show
while (MyStack2 != NULL)
victor72
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 10
18.02.2013, 20:50  [ТС] #5
Цитата Сообщение от vodilawofer Посмотреть сообщение
измени только в функции show
while (MyStack2 != NULL)

Та же ошибка:
error C2440: =: невозможно преобразовать "Using_Stack *" в "STACK *"
Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
vodilawofer
29 / 27 / 2
Регистрация: 27.09.2012
Сообщений: 123
18.02.2013, 21:37 #6
у меня работает. оставь программу такую же только исправь строку в show

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
struct STACK
{
    float Value;
    STACK *Link;
};
 
 struct Using_Stack
 {
    STACK *New_Var;
    void (*Init)(Using_Stack*);
    void (*Push)(Using_Stack*, float );
    void (*SHOW)(Using_Stack*);
 };
 
/* INITIALIZATION  */
void MyInit( Using_Stack* MyStack )
{
    MyStack->New_Var = NULL;
}
 
/* PUSH  */
void MyPush( Using_Stack* MyStack, float Value )
{
    STACK *New_El;
 
    New_El = new STACK;
    New_El -> Value = Value;
    New_El -> Link = MyStack -> New_Var;
    MyStack -> New_Var = New_El;
}
 
/* SHOW  */
void MySHOW( Using_Stack* MyStack )
{
    STACK* MyStack2;
    MyStack2 = MyStack -> New_Var;
 
    float Showing;
    while (MyStack2  != NULL)   
    {           
            Showing = MyStack2 -> Value;
            MyStack2 = MyStack2 -> Link;
            printf("%g\n", Showing);
    }
}
 
void main()
{
    Using_Stack *MyStack;
    MyStack = new Using_Stack;
 
    MyStack -> Init = MyInit;
    MyStack -> Push = MyPush;
    MyStack -> SHOW = MySHOW;
 
    MyStack -> Init(MyStack);   
    MyStack -> Push(MyStack, 10.5);     
    MyStack -> Push(MyStack, 20.5);
 
 
 
    MyStack -> SHOW(MyStack);
 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2013, 21:37
Привет! Вот еще темы с ответами:

Не запускается программа, выдает ошибку - C++
К теме прикрепил скрин ошибки. В начале Visual Studio советовал использовать strcpy_s вместо strcpy и выдавал предупреждение. ...

программа выдает ошибку, как ее поправить - C++
Добрый вечер! программа выдает ошибку: функция "int main(void)" уже имеет текст реализации есть ли способ ее исправить??

Ошибку выдает программа во время работы - C++
Программа должна открывать файл и искать заданное пользователем слово Вот код: #include <iostream> #include <string> #include...

подскажите, почему программа выдает ошибку? - C++
задание примерное такое: на заданном интервале посчитать значение ряда Тейлора с заданным шагом и точностью. Исправьте, если сможете....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.02.2013, 21:37
Ответ Создать тему
Опции темы

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