Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Funkcja licząca maksymalną wartość

Ostatnio zmodyfikowano 2014-04-11 12:11
Autor Wiadomość
ViviOne
Temat założony przez niniejszego użytkownika
Funkcja licząca maksymalną wartość
» 2014-04-11 08:52:38
Witam!

Mam pewien problem piszę program na zajęcia z programowania i natknąłem się na pewien problem nie umiem zrobić 2 podpunktów i nie mam nawet pojęcia jak zacząć. Brzmią one następująco

Wyświetlenie:
  1) listy produktów (identyfikatory), które nie były kupowane w ciągu poprzedniego miesiąca.
  2) Kodu pocztowego klientów, którzy dokonali zakupów o największej wartości w ciągu poprzedniego miesiąca.

Wiec czy był by może ktoś w stanie pomóc rozwiązać mi ten problem albo przynajmniej nakierować mnie na dobry trop? :D

Poniżej wstawiam kod do tego co zrobiłem do tej pory.

C/C++
#include "stdafx.h"
#include <iostream>
#include <fstream>

using namespace std;

class Klient {
private:
    int identyfikator_Klienta;
    int kod;
   
public:
    void wpisz_Klient( int id_klient, int kod_pocztowy )
    {
        identyfikator_Klienta = id_klient;
        kod = kod_pocztowy;
    }
   
    void wypisz_Klient()
    {
        cout << "ID_klient :  " << identyfikator_Klienta << ",  kod_pocztowy :  " << kod << endl;
    }
   
    int daj_id_klient() { return identyfikator_Klienta; }
    int daj_kod_pocztowy() { return kod; }
   
};


class Zakup {
private:
    int identyfikator_klienta;
    int identyfikator_produktu;
    int ilosc;
    int miesiac;
   
public:
   
    void wpisz_Zakup( int id_klienta, int id_produktu, int ilosc_sztuk, int miesiac_zakupu )
    {
        identyfikator_klienta = id_klienta;
        identyfikator_produktu = id_produktu;
        ilosc = ilosc_sztuk;
        miesiac = miesiac_zakupu;
    }
   
   
    void wypisz_Zakup()
    {
        cout << "ID_klienta :  " << identyfikator_klienta << ", ID_produktu :  " << identyfikator_produktu << ", ilosc :  " << ilosc << ", miesiac : " << miesiac << endl;
    }
   
    int daj_id_klienta() { return identyfikator_klienta; }
    int daj_id_produktu() { return identyfikator_produktu; }
    int daj_ilosc_sztuk() { return ilosc; }
    int daj_data_zakupu() { return miesiac; }
   
   
};

class Produkt {
private:
    int identyfikator_produktu;
    int cena;
   
public:
   
    void wpisz_Produkt( int id_produktu, int cena_produktu )
    {
        identyfikator_produktu = id_produktu;
        cena = cena_produktu;
    }
   
    void wypisz_Produkt()
    {
        cout << "ID_produktu :  " << identyfikator_produktu << ",  cena_produktu :  " << cena << endl;
    }
    int daj_id_produktu() { return identyfikator_produktu; }
    int daj_cena_produktu() { return cena; }
   
};

int main() {
    int s, wybor_opcji, lista_produktow, liczba_klient, liczba_zakup, liczba_produkt;
    int k, z, p; // k - klient, z - zakup, p - produkt
    int id_klienta;
    int id_produktu;
    int kod;
    int ilosc_sztuk;
    int miesiac_zakupu;
    int cena_produktu;
    char koniec;
    char nazwa_produktu[ 30 ];
    char najwieksza_liczba[ 20 ];
   
    Klient * kli;
    Zakup * zak;
    Produkt * prod;
   
    koniec = 'b';
   
   
    kli = new Klient[ 100 ];
    zak = new Zakup[ 100 ];
    prod = new Produkt[ 100 ];
   
    //\\ czytanie plikow //\\
   
    ifstream zplikklient( "klient.dat", ios_base::binary );
    if( zplikklient.is_open() )
    {
        liczba_klient = 0;
        while( zplikklient.read(( char * ) & kli[ liczba_klient ], sizeof( kli[ liczba_klient ] ) ) ) {
            liczba_klient++;
        }
    }
    zplikklient.close();
   
   
   
   
   
   
    ifstream zplikzakup( "zakup.dat", ios_base::binary );
    if( zplikzakup.is_open() )
    {
        liczba_zakup = 0;
        while( zplikzakup.read(( char * ) & zak[ liczba_zakup ], sizeof( zak[ liczba_zakup ] ) ) ) {
            liczba_zakup++;
        }
    }
    zplikzakup.close();
   
   
    ifstream zplikprodukt( "produkt.dat", ios_base::binary );
    if( zplikprodukt.is_open() )
    {
        liczba_produkt = 0;
        while( zplikprodukt.read(( char * ) & prod[ liczba_produkt ], sizeof( prod[ liczba_produkt ] ) ) ) {
            liczba_produkt++;
        }
    }
    zplikprodukt.close();
   
   
    ////////////////////////////////
    do
    {
        cout << "*******************************************************************************" << endl;
        cout << "1) Dodaj nowego klienta                                                                              " << endl;
        cout << "2) Dodaj nowy zakup do bazy                                                                          " << endl;
        cout << "3) Wybrales opcje dodawania produktu do bazy                                                         " << endl;
        cout << "*******************************************************************************" << endl;
        cout << "4) Wypisz baze klientow                                                                         " << endl;
        cout << "5) Wypisz baze zakupow                                                                          " << endl;
        cout << "6) Wypisz baze produktow                                                                             " << endl;
        cout << "*******************************************************************************" << endl;
        cout << "7) Wyszukaj liste produktow ktore nie byly kupowane w ciagu poprzedniego tygodnia                    " << endl;
        cout << "8) Wyszukaj kod pocztowy klientow ktorzy dokonali zakupow o najwiekszej wartosci w  ostatnim miesiacu" << endl;
        cout << "*******************************************************************************" << endl;
        cout << "9) Wyjscie                                                                                           " << endl;
        cout << "*******************************************************************************" << endl;
       
       
       
        cin >> wybor_opcji;
        switch( wybor_opcji ) // Wybieranie opcji dodaj nowy sprzet, dodaj nowa osobe itp ...
        {
        case 1:
            {
               
                cout << "     Wybrales opcje dodawania klientow do bazy \n" << endl;
                cout << "         Ile klientow chcesz dodac tym razem ?" << endl;
                cin >> k;
               
               
               
                for( int i = 0; i < k; i++ )
                {
                    cout << "Podaj ID klienta : " << endl;
                    cin >> id_klienta;
                    cout << "Podaj kod pocztowy klienta : " << endl;
                    cin >> kod;
                   
                    kli[ i ].wpisz_Klient( id_klienta, kod );
                   
                }
               
               
                for( int i = 0; i < k; i++ )
                {
                    kli[ i ].wypisz_Klient(); // Wypisywanie osoby
                }
                getchar();
                getchar();
               
               
               
                ofstream doplikklient( "klient.dat", ios_base::app | ios_base::binary );
                for( int i = 0; i < k; i++ )
                {
                    doplikklient.write(( char * ) & kli[ i ], sizeof kli[ i ] );
                }
                doplikklient.close();
               
                ifstream zplikklient( "klient.dat", ios_base::binary );
                if( zplikklient.is_open() )
                {
                    liczba_klient = 0;
                    while( zplikklient.read(( char * ) & kli[ liczba_klient ], sizeof( kli[ liczba_klient ] ) ) ) {
                        liczba_klient++;
                    }
                }
                zplikklient.close();
               
                break;
            }
           
           
           
        case 2:
            {
               
                cout << "     Wybrales opcje dodawania zakupow do bazy \n" << endl;
                cout << "         Ile zakupow chcesz dodac ?" << endl;
                cin >> z;
               
               
               
                for( int i = 0; i < z; i++ )
                {
                    cout << "Podaj ID klienta : " << endl;
                    cin >> id_klienta;
                    cout << "Podaj ID produktu : " << endl;
                    cin >> id_produktu;
                    cout << "Podaj ilosc sztuk : " << endl;
                    cin >> ilosc_sztuk;
                    cout << "Podaj miesiac zakupu : " << endl;
                    cin >> miesiac_zakupu;
                   
                    zak[ i ].wpisz_Zakup( id_klienta, id_produktu, ilosc_sztuk, miesiac_zakupu );
                   
                }
               
                for( int i = 0; i < z; i++ )
               
                {
                    zak[ i ].wypisz_Zakup(); // Wypisywanie zakupow
                }
                getchar();
                getchar();
               
               
               
                ofstream doplikZakup( "zakup.dat", ios_base::app | ios_base::binary );
                for( int i = 0; i < z; i++ )
                {
                    doplikZakup.write(( char * ) & zak[ i ], sizeof zak[ i ] );
                }
                doplikZakup.close();
               
                ifstream zplikZakup( "zakup.dat", ios_base::binary );
                if( zplikZakup.is_open() )
                {
                    liczba_zakup = 0;
                    while( zplikZakup.read(( char * ) & zak[ liczba_zakup ], sizeof( zak[ liczba_zakup ] ) ) ) {
                        liczba_zakup++;
                    }
                }
                zplikZakup.close();
               
               
                break;
            }
           
        case 3:
            {
               
                cout << "     Wybrales opcje dodawania produktow do bazy \n" << endl;
                cout << "Ile produktow chcesz dodac ?" << endl;
                cin >> p;
               
               
               
                for( int i = 0; i < p; i++ )
                {
                    cout << "Podaj ID produktu : " << endl;
                    cin >> id_produktu;
                    cout << "Podaj cene produktu : " << endl;
                    cin >> cena_produktu;
                   
                    prod[ i ].wpisz_Produkt( id_produktu, cena_produktu );
                   
                }
               
                for( int i = 0; i < p; i++ )
                {
                    prod[ i ].wypisz_Produkt(); // Wypisywanie produktow
                }
                getchar();
                getchar();
               
               
               
                ofstream doplikProdukt( "produkt.dat", ios_base::app | ios_base::binary );
                for( int i = 0; i < p; i++ )
                {
                    doplikProdukt.write(( char * ) & prod[ i ], sizeof prod[ i ] );
                }
                doplikProdukt.close();
               
                ifstream zplikProdukt( "produkt.dat", ios_base::binary );
                if( zplikProdukt.is_open() )
                {
                    liczba_produkt = 0;
                    while( zplikProdukt.read(( char * ) & prod[ liczba_produkt ], sizeof( prod[ liczba_produkt ] ) ) ) {
                        liczba_produkt++;
                    }
                }
                zplikProdukt.close();
               
               
                break;
            }
           
        case 4:
            {
                for( int i = 0; i < liczba_klient; i++ )
                {
                    printf( "\n" );
                    kli[ i ].wypisz_Klient();
                }
                getchar();
                getchar();
                break;
            }
           
        case 5:
            {
                for( int i = 0; i < liczba_zakup; i++ )
                {
                    printf( "\n" );
                    zak[ i ].wypisz_Zakup();
                }
                getchar();
                getchar();
                break;
            }
           
        case 6:
            {
                for( int i = 0; i < liczba_produkt; i++ )
                {
                    printf( "\n" );
                    prod[ i ].wypisz_Produkt();
                }
                getchar();
                getchar();
                break;
            }
           
        case 7:
           
           
           
           
           
           
           
        case 8:
           
           
           
           
           
           
           
        case 9:
            {
                koniec = 't';
                break;
            }
           
            default:
            {
                cout << " Wybrales zla opcje !" << endl;
                cout << "   Sproboj ponownie" << endl;
                getchar();
                getchar();
            }
           
        }
        system( "cls" );
    }
    while( koniec != 't' );
   
    cout << "Do zobaczenia pozniej !" << endl;
   
    return 0;
}
P-108036
alixir
» 2014-04-11 11:21:34
Tak mógłby wyglądać case 7:

C/C++
case 7:
{
    // na potrzeby zliczania produktow tworzymy strukture
    struct lista_zakupionych_produktow {
        int id;
        int ilosc;
        lista_zakupionych_produktow()
            : id( 0 )
            , ilosc( 0 )
        { };
    };
   
    // tworzymy tablice struktur
    lista_zakupionych_produktow * zakupione_produkty = new lista_zakupionych_produktow[ liczba_produkt ];
   
    // Wczytujemy aktualna date
    time_t rawtime;
    struct tm timeinfo;
    time( & rawtime );
    localtime_s( & timeinfo, & rawtime );
   
    // wypelniamy tablice identyfikatorami produktow
    for( int i = 0; i < liczba_produkt; i++ )
        ( zakupione_produkty + i )->id = prod[ i ].daj_id_produktu();
   
    // zliczamy produkty z poprzedniego miesiaca
    for( int i = 0; i < liczba_zakup; i++ )
    if( zak[ i ].daj_data_zakupu() ==(( 12 + timeinfo.tm_mon - 1 ) % 12 ) + 1 )
    for( int n = 0; n < liczba_produkt; n++ )
    if( zak[ i ].daj_id_produktu() ==( zakupione_produkty + n )->id )
        (( zakupione_produkty + n )->ilosc ) ++;
   
    // wypisujemy liste produktow ktore maja licznik rowny 0
    std::cout << "Produkty, ktore nie zostaly zakupione w miesiacu " <<(( 12 + timeinfo.tm_mon - 1 ) % 12 ) + 1 << ":" << std::endl;
    for( int i = 0; i < liczba_produkt; i++ )
    if(( zakupione_produkty + i )->ilosc == 0 )
         std::cout << "ID_produktu : " <<( zakupione_produkty + i )->id << std::endl;
   
    // usuwamy dynamiczna tablice
    delete[] zakupione_produkty;
    getchar();
    getchar();
    break;
}

Pamiętaj o
#include <ctime>
P-108038
ViviOne
Temat założony przez niniejszego użytkownika
» 2014-04-11 12:11:03
Dziekuje! :D
P-108039
« 1 »
  Strona 1 z 1