Funkcja licząca maksymalną wartość
Ostatnio zmodyfikowano 2014-04-11 12:11
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. #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; 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 ]; 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 ) { 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(); } 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(); } 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(); } 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; } |
|
alixir |
» 2014-04-11 11:21:34 Tak mógłby wyglądać case 7: case 7: { struct lista_zakupionych_produktow { int id; int ilosc; lista_zakupionych_produktow() : id( 0 ) , ilosc( 0 ) { }; }; lista_zakupionych_produktow * zakupione_produkty = new lista_zakupionych_produktow[ liczba_produkt ]; time_t rawtime; struct tm timeinfo; time( & rawtime ); localtime_s( & timeinfo, & rawtime ); for( int i = 0; i < liczba_produkt; i++ ) ( zakupione_produkty + i )->id = prod[ i ].daj_id_produktu(); 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 ) ++; 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; delete[] zakupione_produkty; getchar(); getchar(); break; } Pamiętaj o #include <ctime> |
|
ViviOne Temat założony przez niniejszego użytkownika |
» 2014-04-11 12:11:03 Dziekuje! :D |
|
« 1 » |