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

Проблема со стеком - C++

Восстановить пароль Регистрация
 
Sick2
14 / 14 / 1
Регистрация: 26.11.2010
Сообщений: 235
09.08.2011, 17:50     Проблема со стеком #1
В общем, в книге нашёл задание:
Напишите программу, которая добавляет и удаляет структуры в стек.
Каждый раз когда удаляется запись о заказчике, его платёж прибавляется к текущей сумме, а сама сумма выводится на экран.
Определение класса в книге:
C++
1
2
3
4
5
class customer
{
char name[35];
double payment;
}
Ну, проблема заключается в том, что программа не хочет извлекать из стека пару, т.е. name и payment,
а выдаёт следущее :
Код
 Ошибка	      3	error C2664: customer::customer(const customer &): невозможно преобразовать параметр 1 из "int" в "const customer &"	c:\users\пользователь\documents\visual studio 2010\projects\stack\stack\stack.cpp	36	1stack
Вот собственно весь код:
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
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
const int SIZE = 10;
 
 
template <class X> class stack
{
    X stck[SIZE];
    int top;
public:
    stack(){top=0;};
    void push(X st);
    X pop();
    X back();
    int size();
    void clear();
    bool isEmpty();
};
template <class X>
void stack<X>::push(X st)
{
    if(top==SIZE){
        cout<<"stack polon"<<endl;
        return;}
    else stck[top] = st;
    top++;
}
template <class X>
X stack<X>::pop()
{
    if(top==0){cout<<"ERROR"<<endl;return 0;
    }
    else top--;
    return stck[top];
};
template <class X> X stack<X>::back()
{
    if(top==0){ cout<<"ERROR"<<endl; return 0;}
    else return stck[top-1];
};
template <class X> int stack<X>::size()
{
    return top;
};
template <class X> void stack<X>::clear()
{
    for(int i=0;i<top;i++)
    {
        stck[i]=0;
        top=0;
    }
}
template <class X> bool stack<X>::isEmpty()
{
    return top==0;
}
class customer
{
    char name[30];
    double payment;
public:
    customer(const char *n,const double p) 
    {   strcpy(name,n);
        payment=p;};
    customer(){strcpy(name," ");
        payment;};
    friend ostream &operator<<(ostream &stream,customer &);
};
ostream &operator<<(ostream &stream, customer &o)
{
    stream<<o.name<<" "<<o.payment<<endl;
    return stream;
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    stack <customer> st1;
    customer a("Mike",343.5435);
    customer b("LOL",5435);
    st1.push(a);
    st1.push(b);
    while(!st1.isEmpty())
    {
    cout<<st1.pop();
    }
    system("pause");
    return 0;
}
Выводит оно только тогда, когда не задавать в конструкторе второй аргумент, т.е.
написать вот так:
C++
1
2
3
customer(const char *n) 
    {   strcpy(name,n);
        payment=0;};
Тогда выведет всё нормально.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2011, 17:50     Проблема со стеком
Посмотрите здесь:

C++ работа со стеком
C++ задание со стеком!
C++ Работа со стеком
C++ Со стеком запутался
Работа со стеком! C++
C++ Задача со стеком
C++ Работа со стеком.
C++ Работа со стеком

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silentnuke
Android Programmer
137 / 138 / 5
Регистрация: 08.12.2010
Сообщений: 421
09.08.2011, 23:04     Проблема со стеком #2
Цитата Сообщение от Sick2 Посмотреть сообщение
Код
 Ошибка	      3	error C2664: customer::customer(const customer &): невозможно преобразовать параметр 1 из "int" в "const customer &"	c:\users\пользователь\documents\visual studio 2010\projects\stack\stack\stack.cpp	36	1stack
Вот собственно весь код:
C++
1
2
3
4
5
6
7
8
template <class X>
X stack<X>::pop()
{
    if(top==0){cout<<"ERROR"<<endl;return 0;
    }
    else top--;
    return stck[top];
};
У вас ошибка из-за return 0;
о чем он и сообщает, что не может преобразовать int к customer .
Yandex
Объявления
09.08.2011, 23:04     Проблема со стеком
Ответ Создать тему
Опции темы

Текущее время: 09:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru