Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

front, inventar. Problem kod zadatka

[es] :: C/C++ programiranje :: C/C++ za početnike :: front, inventar. Problem kod zadatka

[ Pregleda: 1406 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ivanzj

Član broj: 150597
Poruke: 76
*.ynet.sk.



+2 Profil

icon front, inventar. Problem kod zadatka11.05.2009. u 00:10 - pre 182 meseci
Ovaj program moze mozda nekome i da pomogne, imam jedino problem kod pop funkcije. Kada u inventaru inventaru imam 10 jedinica jedne vrste robe i 20 jedinica te iste robe a hocu da prodam 25 jedinica, program bi trebao da proda onih 20 jedinica(novijih) i 5, koje su tu od ranije. To ne znam da namestim.
Inace program radi savrseno(bar jedo sada radio), tako da moze nekome da bude od pomoci
Code:

//#define front_h
#include <iostream>
#include <fstream>
class front
{
public:
    front();
    bool isPNode(); //done
    void push(char tp, char trs, int cnt, int prc); //done
    void pop(); 
    void inventar(); //done
    void write();
    void stats(); //done
    int pocetU;
    ~front();
    struct popis
    {
        char typ;
        char transakcia;
        int pocet;
        float cena;
        popis * next;
    } * p_inv;


private:
    float suma;
};

///////*************///////////////


//#include "front.h"
using namespace std;
front::front()
{
    pocetU=0, p_inv=0,suma=0;
}

bool front::isPNode()
{
    popis * priv1;
    for(priv1=p_inv;priv1!=NULL;priv1=priv1->next)
    {
        if(priv1->transakcia=='P')
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    }



void front::push(char tp, char pct, int trs, int cna)
{
    popis * priv1, * priv2;

    if(p_inv == 0)
    {
        p_inv=new popis;
        p_inv->typ=tp;
        p_inv->pocet=pct;
        p_inv->transakcia=trs;
        p_inv->cena=cna;
        p_inv->next=0;
    }
    else
        {
        priv1=p_inv;
        while(priv1->next != 0)
            {
            priv1=priv1->next;
            }
        priv2=new popis;
        priv2->typ=tp;
        priv2->pocet=pct;
        priv2->transakcia=trs;
        priv2->cena=cna;
        priv2->next=0;
        priv1->next=priv2;
        }
    pocetU++;
}
void front::inventar()
{
    popis * priv1;
    for(priv1=p_inv;priv1!=NULL;priv1=priv1->next)
    {
        cout << "tip robe:\t\t\t" << priv1->typ << endl;
        cout << "broj jedinica:\t" << priv1->pocet << endl;
        cout << "transakcia:\t\t\t" << priv1->transakcia << endl;
        cout << "cena jedne jedinice:\t" << priv1->cena << endl;
    }
}
void front::write()
{
    ofstream fw;
    fw.open("inventory.txt", ios::app);
    popis * priv1;
    for(priv1=p_inv;priv1!=NULL;priv1=priv1->next)
    {
        fw << priv1->typ;
        fw << priv1->transakcia<<" ";
        fw << priv1->pocet<<" ";
        fw << priv1->cena<<endl;
    }
    fw.close();
}

void front::stats()
{
    int cislo;
    suma=0;
    popis * priv1;
    for(priv1=p_inv;priv1!=NULL;priv1=priv1->next)
    {
        cout << "tip robe:\t\t\t" << priv1->typ << endl;
        cout << "broj jedinica:\t\t" << priv1->pocet << endl;
        cout << "transakcia:\t\t\t" << priv1->transakcia << endl;
        cout << "cena jedne jedinice:\t" << priv1->cena << endl;
        cislo=priv1->pocet * priv1->cena;
        suma += cislo; //cislo+cislo
        cout << "zajedno:\t\t\t"<<suma<<"evra"<<endl;
        cout << "***********kras ispisa iz statistike*******"<<endl;
    }
}

void front::pop()
{
    int cyklus= 0;                                   // premenna i urcuje kolkaty cyklus sa spracuvava
    float pocet, result;
    cout << " koliko jedinica prodajes : ";
    cin >> pocet;
    system("cls");
    popis * priv1 = p_inv;
    popis *    priv2;
    priv2 = p_inv;
    
    if(priv1 == NULL)
        cout << "nista";
    else
    {
        while(priv1->next != NULL)
            priv1 = priv1->next;
        result = priv1->pocet - pocet;
        if(result < 0)
        {
            system("cls");
            cout << "\n broj jedinica, koje prodajes je veci od broja jedinica u magacinu.\n";
                
        }
        else if(result == 0)
        {
            priv1 =p_inv;
            priv1 = priv2->next;
            while(priv1->next != NULL)
            {
                priv2 = priv1;
                priv1 = priv1->next;

            }
            priv2->next = NULL;
            delete priv1;
        }
        else
        {
            priv1 = p_inv;
            while(priv1->next != NULL)
                priv1 = priv1->next;
            priv1->pocet = result;

        }


    }

}


//#include "front.h"
//using namespace std;

char menu()
{

    char volba;

    cout << "\n";
    cout << " izaberi operaciju.\n";
    cout << "\n";
    cout << " <i>nventar\t.........ispis \n";
    cout << " <k>upi\t\t.........\n"; //urobene
    cout << " <p>rodaj\t......... \n";
    cout << " <r>ead\t\t......... nacitaj iz fajla\n";
    cout << " <s>tatistics\t......... statistika\n";
    cout << " <w>rite\t......... zapisi u fajl\n";
    cout << " <c>lear screen\t......... "<<endl;
    cout << " <e>xit\t\t......... \n";//urobene
    cout << "\n vas izbor: ";
   
    cin >>  volba;
    

    return volba;
}


int main()
{
    char volba, cena[20], a[20], komad[20];
    char akt,i_polozka;
    int p_fajl, n;
    ifstream fr;
    ofstream fw;
    front * polozka1 = new front();
    front * polozka2 = new front();
    front * polozka3 = new front();
    front * polozkap = new front(); 
do{
        volba = menu();
        switch (volba)
        {
        case'i':
            {
            if((polozka1->pocetU + polozka2->pocetU + polozka3->pocetU)==0)
            {
                cout <<"everything is empty";
            }
            else
            {
                cout <<"nastavljamo..."<<endl;
                cout <<"robu, pod kojim rednim brojem, hoces na ispis?<1,2,3>";
                cin  >>i_polozka;
                switch(i_polozka)
                {
                case '1':polozka1->inventar();break;
                case '2':polozka2->inventar();break;
                case '3':polozka3->inventar();break;
                default:cout <<"greska";
                }
            }
            }
            break;
        case'k':
            {
                cout <<"koju robu kupujes?<1,2,3>"<<endl;
                cout <<"polozka: ";
                cin >> a[0];
                a[1] = 'K';
                cout <<"cena:";
                cin  >> cena;
                cout <<"komada: ";
                cin  >> komad;
                akt = a[0];
                switch(akt)
                {
                case '1': polozka1->push(a[0],atoi(komad),  a[1], atof(cena));break;
                case '2': polozka2->push(a[0],atoi(komad),  a[1], atof(cena));break;
                case '3': polozka3->push(a[0],atoi(komad),  a[1], atof(cena));break;
                default: cout <<"greska";
                    break;
                }
                break;

            }
            break;
        case'p':
            {
                if((polozka1->pocetU + polozka2->pocetU + polozka3->pocetU)==0)
                {
                    cout <<"everything is empty";
                }
                cout <<"koju robu prodajes?<1,2,3>";
                cin  >> akt;
                switch(akt)
                {
                case'1':
                    {
                        if(polozka1->isPNode()==false)
                            {
                                polozka1->pop();
                            }
                    }
                    break;
                case'2':
                    {
                        if(polozka2->isPNode()==false)
                            {
                                polozka2->pop();
                            }
                    }
                    break;
                case'3':
                    {
                        if(polozka3->isPNode()==false)
                            {
                                polozka3->pop();
                            }
                    }
                    break;
                default: cout <<"out of range"<<endl;
                    break;
                }
            }
            
        break;
        case'r':
            {
                /*if((polozka1->pocetU + polozka2->pocetU + polozka3->pocetU)==0)
                    {
                    cout <<"everything is empty";
                    break;
                    }*/
                fr.open("inventory.txt");
                if (!fr)
                {
                    cout << "nisam otvorio fajl";
                        fr.close();
                    break;
                }
                fr >> p_fajl;
                for (n=0; n<p_fajl;n++)
                {
                    fr >>a;
                    fr >>komad;
                    fr >>cena;
                    akt=a[0];
                    switch(akt)
                        {
                        case '1': polozka1->push(a[0],atoi(komad),  a[1], atof(cena));break;
                        case '2': polozka2->push(a[0],atoi(komad),  a[1], atof(cena));break;
                        case '3': polozka3->push(a[0],atoi(komad),  a[1], atof(cena));break;
                        default: cout <<"greska";
                            break;
                        }
                    cout<<uspesno ucitani podatci"<<endl;
                } break;
            
            }break;

            
            break;
        case's':
            {
                if((polozka1->pocetU + polozka2->pocetU + polozka3->pocetU)==0)
                    {
                    cout <<"everything is empty";
                    break;
                    }
                polozka1->stats();
                polozka2->stats();
                polozka3->stats();

            }
            break;
            
        case'w':
            {
                fw.open("inventory.txt");
                if (!fw)
                {
                    cout << "greska prilikom otvaranja fajla";
                        fw.close();
                    break;
                }
                if((polozka1->pocetU + polozka2->pocetU + polozka3->pocetU)==0)
                {
                    cout << "fajl je prazan";
                }
                fw <<polozka1->pocetU + polozka2->pocetU + polozka3->pocetU<<endl;
                polozka1->write();
                polozka2->write();
                polozka3->write();
                cout<<"zapisano u fajl inventory.txt";
                fw.close();
            }
            break;
        case'c':
            system("cls");
        default:cout<<"greska"<<endl;
            break;

            
        }
    } while(volba!='e');
        return 0;
}
 
Odgovor na temu

ivanzj

Član broj: 150597
Poruke: 76
*.ynet.sk.



+2 Profil

icon Re: front, inventar. Problem kod zadatka11.05.2009. u 23:50 - pre 182 meseci
program je gotov i radi sve sta treba.
u attachmentu je konacna verzija
Prikačeni fajlovi
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: front, inventar. Problem kod zadatka

[ Pregleda: 1406 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.