Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2008, 00:58   #1
kermit
Пользователь
 
Аватар для kermit
 
Регистрация: 08.06.2008
Сообщений: 14
По умолчанию помогите исправить ошибки

Вот написал программу, а в ней оищбки а как исправить незнаю
Цитата:
Фирма по хранению и сбыту товаров получает грузы по различным ценам, причем товары, полученные позднее, продаются в первую очередь. Напишите программу, считывающую записи о торговых операциях двух типов: операции по закупке и операции по продаже с 20%-ной надбавкой. Результаты о каждой из операций выводить на экран. Если на складе отсутствует требуемое в заказе число товара, то продайте все имеющееся, а затем напечатайте сообщение об отсутствии остальной части изделий на складе (реализация 2).

Реализация 2. Разработайте класс, реализующий стек с помощью указателей. Методы класса: добавление элемента в стек, удаление элемента из стека, получение значения с вершины стека, проверка заполнения стека, проверка пустоты стека, очистка стека.
вот мой код

Код:
// 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;
}
Программа еще не готова, мне хотябы ошибки исправить, а довести до ума я сам как нибудь)
kermit вне форума Ответить с цитированием
Старый 21.06.2008, 10:44   #2
Игорь007
Пользователь Подтвердите свой е-майл
 
Аватар для Игорь007
 
Регистрация: 30.05.2008
Сообщений: 96
По умолчанию

Функция
Код:
Stack* pop(Stack* top)
должна возвращать Stack* а возвращает double value
т.к. в коде дальше есть
Код:
summ += (pop(top) * 1.2);
то pop должна возвращать double;


130 строка. Нужно взять в скобки top=push()
Код:
while( (top=push()) || product != count)
либо вместо = поставить == если проверяете на равенство, а не присваиваете.


159 строка - забыли ';'

Последний раз редактировалось Игорь007; 21.06.2008 в 10:50.
Игорь007 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите исправить незначительные ошибки HAMMAN Помощь студентам 1 10.06.2008 19:07
помогите исправить ошибки в программе... VDK23 Помощь студентам 1 17.04.2008 13:05
Помогите исправить ошибки в программе Gambit90 Помощь студентам 1 20.12.2007 16:24
Помогите исправить ошибки ...С++ Настенька Помощь студентам 1 25.03.2007 23:30