Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Ошибки при реализации стека с помощью указателей - C++

10.11.2015, 05:46. Просмотров 181. Ответов 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
#define N 2
#include <iostream>
#include <cstdlib>
using namespace std;
 
void push(float** stack, size_t &size, size_t &capacity,  float &element)
{if (capacity > size)
{
size++;
int
stack[int(size/sizeof(float))]=element;
}
else 
{
    realloc(stack,N * sizeof(float));
    
    capacity = capacity +  N; 
size++;
stack[int(size/sizeof(float))]=element;
 
}
 
}
 
 
float top(int **stack, size_t &size)
{
return(stack[size]);
 
}
 
void pop(int **stack, size_t &size)
{
size=size -1;
 
}
 
void destruct(int **stack)
{
    free(stack);
 
}
 
 
int main()
{
 
 
 
 
 
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2015, 05:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибки при реализации стека с помощью указателей (C++):

Ошибка при реализации стека - C++
Здравствуйте, помогите пожалуйста разобраться в ошибке.Пишу класс, в нём есть динамический символьный массив, вызываю функцию void без...

Преимущества и недостатки при реализации стека, очереди и дека через дин. массива - C++
Доброго времени суток! 1) Назовите преимущества и недостатки реализации очереди с помощью динамического массива. 2) Назовите...

Ошибки при реализации - C++
4) Объявить массив из 3 указателей на вещественные переменные, переменные разместить в: a) статической памяти, b) динамической памяти....

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

Ошибки в коде при компиляции с помощью GCC - C++
Переписал код из книжки по C++. Переписал один в один, но компилятор выдает ошибки. Сам код // FunctionDemo - демонстрация...

Создание стека в виде массива указателей на разные классы - C++
Добрый день форумчане! Очень надеюсь на вашу помощь! Сел самостоятельно изучать плюсы по Лафоре,в одном из задании необходимо было сделать...

2
zss
Модератор
Эксперт С++
6634 / 6196 / 2051
Регистрация: 18.12.2011
Сообщений: 16,155
Завершенные тесты: 1
10.11.2015, 09:30 #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
#define N 2
#include <iostream>
//#include <cstdlib>
using namespace std;
 
void push(double* stack, int &size, int &capacity, double element)
{
    if (capacity <= size)
    {
        realloc(stack,N * sizeof(double));
        capacity +=  N; 
    }
    size++;
    *(stack+size)=element;
}
 
 
double top(double *stack, int size)
{
    if(size>=0)
        return *(stack+size);
    return 0;
 
}
 
double pop(double *stack, int &size)
{
    if(size>=0)
    {
        double t=*(stack+size);
        if(size>0)
            size--;
        return t;
    }
    return 0;
}
 
void destruct(double *stack)
{
    free(stack);
}
double* create( int capacity)
{
    double *stack=(double*)malloc(capacity*sizeof(double));
    return stack;
}
int main()
{
    int size=-1,capacity=N;
    double* a=create(capacity);
    push(a,size,capacity,1.5);
    push(a,size,capacity,2.5);
    push(a,size,capacity,3.5);
    cout<<pop(a,size)<<endl;
    cout<<pop(a,size)<<endl;
    cout<<pop(a,size)<<endl;
    cout<<pop(a,size)<<endl;
    destruct(a);
    system("Pause");
    return 0;
}
0
Renji
2063 / 1420 / 321
Регистрация: 05.06.2014
Сообщений: 4,080
10.11.2015, 09:37 #3
Все не так, начиная с решения на Си с некоторыми вкраплениями плюсов.
Девятая строчка подразумевает что size хранит количество чисел в стеке.
Одиннадцатая строчка (size/sizeof(float)) подразумевает что size хранит число байт в стеке, а также то что stack указывает на массив байт.
Ну а десятая строчка превращает одиннадцатую из обращения к массиву, в объявление массива.
Короче, читать учебник с самого начала.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2015, 09:37
Привет! Вот еще темы с ответами:

Ошибки "Expression syntax" и "Unreachable code" при реализации класса матриц - C++
Подскажите по коду. #include &lt;iostream.h&gt; #include &lt;math.h&gt; #include &lt;string.h&gt; #include &lt;stdio.h&gt; #include &lt;windows.h&gt; ...

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

Вызовы функций с помощью указателей - C++
Составить программу которая использует вызовы функций с помощью указателей ------------------------ первая функция double...

Индексация массивов с помощью указателей - C++
Не смог понять логику вот этой программы, связанной с объявлением массивов через указатель: #include &lt;iostream&gt; ...


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

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

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