Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

помогите исправить ошибки(С++).

29K
21 июня 2008 года
kermit
11 / / 16.01.2008
Вот написал программу, а в ней оищбки а как исправить незнаю :(
Цитата:

Фирма по хранению и сбыту товаров получает грузы по различным ценам, причем товары, полученные позднее, продаются в первую очередь. Напишите программу, считывающую записи о торговых операциях двух типов: операции по закупке и операции по продаже с 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;
}


Программа еще не готова, мне хотябы ошибки исправить, а довести до ума я сам как нибудь)

[color=red]Выбирай правильно раздел форума. Перемещаю в "Студенты".[/color]
394
21 июня 2008 года
MegaMozg
317 / / 18.03.2006
Первая ошибка у тебя здесь:
Код:
Stack* pop(Stack* top)          //извлечение из стека последнего элемента
{
    Stack* temp;
    double value;

    temp=top;
    value = top->price;
    top=top->next;
    free(temp);
    return value;  
}

Измени на:
 
Код:
double pop(Stack* top)          //извлечение из стека последнего элемента
{
    / … /
    return value;  
}


Вторая ошибка:
top = push // `=` присваивание!!!
top == push // `==` сравнение
320
21 июня 2008 года
m_Valery
1.0K / / 08.01.2007
Автор,чтоб облегчить тебе работу над ошибками отсылаю к ФАКу раздела Студентам,там есть во вложениях класс Stack,правда на основе STL вектора,без указателей,но переделать и ошибки исправить - поможет.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог