// 3_2.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
using namespace std;
class Stack
{
public:
Stack *next;
// int push(void);
// double pop(Stack* top);
// void printStack(Stack* top);
// int isEmpty(Stack* top);
// void ClearStack(Stack* top);
// void addHead(Stack* top);
double price;
int product;
};
Stack* head=0;
//typedef Stack *
Stack* push(void) //добавление в стек
{
Stack* top = new Stack;
/* cin<<"\n Input number of product: ";
cin>>top->product;
if(top->product == 0)
{
delete top;
return 0;
} */
cout<<"\n Input price: ";
cin>>top->price;
if(top->price == 0)
{
delete top;
return 0;
}
cout<<endl;
top->next=0;
return top; //в этой строке выдает ошибку: error C2440: 'return' : cannot convert from 'double' to 'Stack *'
}
void addHead(Stack* top) //добавление в начало
{
if(top!=NULL)
{
top->next=head; //насчет этого неуверен
head=top;
}
else cout<<"\n not inserted. No memory available"<<endl;
}
Stack* pop(Stack* top) //извлечение из стека последнего элемента
{
Stack* temp;
double value;
temp=top;
value = top->price;
top=top->next;
free(temp);
return value;
}
int isEmpty(Stack* top)
{
return top==NULL;
}
void ClearStack(Stack* top) //очистка стека
{
Stack* temp;
while(top!=head) //Возможно использовать NULL
{
temp=top;
top=top->next;
free(temp);
}
}
void printStack(Stack *top)
{
if(top==NULL)
{
cout<<"\n --> The warehouse is empty!"<<endl; // стек пуст(Склад пуст!)
}
else
{
cout<<"\n Elements: "<<endl;
while (top!=NULL)
{
// cout<<"\n Product: "<< top->product<<endl;
cout<<"\n Price: "<< top->price<<endl;
cout<<"-----------------------------"<<endl;
}
}
}
void Menu(void)
{
cout<<"\n 1 -- AddProduct"<<endl;
cout<<"\n 2 -- Sale"<<endl;
cout<<"\n 3 -- View all the available"<<endl;
cout<<"\n 4 -- Remove all product"<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
Stack* top;
int count, key, product, sale;
double summ;
Menu();
cout<<"\n ----> ";
key=getch();
cout<<endl;
do
{
count = 0;
if(key == 49)
{
cout<<"\n Inpet number of product: ";
cin>>product;
while( top=push() || product != count) //здесь вторая ошибка: error C2440: '=' : cannot convert from 'bool' to 'Stack *'
{
addHead(top);
system("CLS");
count++;
}
}
if(key == 50)
{
cout<<"Amount of goods for sale: ";
cin>>sale;
while(top!=NULL || count == (sale-1))
{
summ += (pop(top) * 1.2);
}
cout<<"\n\n Price sold: "<<summ<<endl;
system("PAUSE");
system("CLS");
}
if(key == 51)
{
printStack(top);
system("PAUSE");
}
if(key == 52)
{
clearStack(top);
system("PAUSE");
}
}while(key == 27)
return 0;
}
помогите исправить ошибки(С++).
Цитата:
Фирма по хранению и сбыту товаров получает грузы по различным ценам, причем товары, полученные позднее, продаются в первую очередь. Напишите программу, считывающую записи о торговых операциях двух типов: операции по закупке и операции по продаже с 20%-ной надбавкой. Результаты о каждой из операций выводить на экран. Если на складе отсутствует требуемое в заказе число товара, то продайте все имеющееся, а затем напечатайте сообщение об отсутствии остальной части изделий на складе (реализация 2).
Реализация 2. Разработайте класс, реализующий стек с помощью указателей. Методы класса: добавление элемента в стек, удаление элемента из стека, получение значения с вершины стека, проверка заполнения стека, проверка пустоты стека, очистка стека.
вот мой код
Код:
Программа еще не готова, мне хотябы ошибки исправить, а довести до ума я сам как нибудь)
[color=red]Выбирай правильно раздел форума. Перемещаю в "Студенты".[/color]
Код:
Stack* pop(Stack* top) //извлечение из стека последнего элемента
{
Stack* temp;
double value;
temp=top;
value = top->price;
top=top->next;
free(temp);
return value;
}
{
Stack* temp;
double value;
temp=top;
value = top->price;
top=top->next;
free(temp);
return value;
}
Измени на:
Код:
double pop(Stack* top) //извлечение из стека последнего элемента
{
/ … /
return value;
}
{
/ … /
return value;
}
Вторая ошибка:
top = push // `=` присваивание!!!
top == push // `==` сравнение
Автор,чтоб облегчить тебе работу над ошибками отсылаю к ФАКу раздела Студентам,там есть во вложениях класс Stack,правда на основе STL вектора,без указателей,но переделать и ошибки исправить - поможет.