Basically I dont even know if I named the thread properly but lets get on the story.
I've got a list of wares (in text file) with its name, date it was brought to store, date it was sold, amount and price.
Pigema
//name date it was brought sold amount price
Juodos vilnojinės kojinės 2011-10-28 2011-11-21 5 6.79
Smulkus cukrus 2011-11-19 2011-11-25 15 3.66
Pigus Batonas 2011-11-23 2011-11-24 10 0.85
Raudonieji ankštiniai pipirai 2011-11-01 2011-11-15 8 7.00
Neriebus pienas 2011-11-22 2011-11-27 5 1.69
Sausi pusryčiai 2011-11-16 2011-11-19 5 5.00
Balta duona 2011-11-21 2011-11-22 12 3.11
Šokoladiniai saldainiai "Pergalė" 2011-10-28 2011-10-29 4 12.99
Now I have to form a list of wares that took more than 5 days to sell, align that list by the date it was sold and wares name, calculate amount of money for the sold wares from that list.
class for the ware
#include <string>
using namespace std;
// Aprašoma klasė Prekė
class Preke
{
private:
string pavadinimas; // prekės pavadinimas
string atvezimoData; // atvežimo į parduotuvę data
string pardavimoData; // pardavimo data
int prekiuKiekis; // prekių kiekis
double kaina; // prekės kaina
public:
Preke(void);
Preke(string pav, string atvData, string parData, int pKiekis, double kain);
~Preke(void);
string ImtiPavadinima() {return pavadinimas;}
string ImtiAtvezimoData() {return atvezimoData;}
string ImtiPardavimoData() {return pardavimoData;}
int ImtiPrekiuKieki() {return prekiuKiekis;}
double ImtiKaina() {return kaina;}
bool operator > (const Preke & desine);
};
class for the shop
#include "Preke.h" // Čia aprašyta klasė Prekė
// Aprašoma klasė Parduotuvė
class Parduotuve
{
public:
static const int CMax = 100; // Maksimalus prekių skaičius
private:
string parduotuvesPavadinimas;
Preke preke[CMax];
int prekiuSkaicius;
public:
Parduotuve(void);
~Parduotuve(void);
void DetiPreke (Preke k, int ind) { preke[ind] = k; }
Preke ImtiPreke(int ind) { return preke[ind]; }
void DetiNaujaPreke(Preke k) { preke[prekiuSkaicius] = k;
prekiuSkaicius++; }
int ImtiPrekiuSkaiciu() { return prekiuSkaicius; }
void DetiPavadinima(string pp) { parduotuvesPavadinimas = pp; }
string ImtiPavadinima() { return parduotuvesPavadinimas;}
void Rikiuoti();
};
.cpp of the ware
#include "Preke.h"
// Konstruktorius be parametrų
Preke::Preke(void): pavadinimas(""), atvezimoData(""), pardavimoData(""),
prekiuKiekis(0), kaina(0.0)
{
}
// Konstruktorius su parametrais
Preke::Preke(string pav, string atvData, string parData, int pKiekis, double kain):
pavadinimas(pav), atvezimoData(atvData), pardavimoData(parData),
prekiuKiekis(pKiekis), kaina(kain)
{
}
// Destruktorius
Preke::~Preke(void)
{
}
// Užklotas operatorius >
bool Preke::operator >(const Preke & desinė)
{
return kaina > desinė.kaina;
}
//----------------------------------------------------------
.cpp of the shop
#include "Parduotuve.h"
// Konstruktorius be parametrų
Parduotuve::Parduotuve(void): prekiuSkaicius(0), parduotuvesPavadinimas("")
{
}
// Destruktorius
Parduotuve::~Parduotuve(void)
{
}
//----------------------------------------------------------
// Rikiuoja objektų masyvą preke(prekiuSkaicius) išrinkimo būdu
// pagal pavadinima (mažėjimo tvarka)
/*
void Parduotuve::Rikiuoti()
{
for (int i = 0; i < prekiuSkaicius-1; i++) {
int mind = i;
for (int j = i+1; j < prekiuSkaicius; j++)
if (Preke[j] > Preke[mind])
mind = j;
Preke k = Preke[mind];
Preke[mind] = Preke[i];
Preke[i] = k;
}
}
*/
MAIN.cpp
#include <iostream>
#include <fstream>
#include <iomanip>
#include "Parduotuve.h"
using namespace std;
//----------------------------------------------------------
const char CDuomenys[] = "Duomenys.txt";
const char CRezultatai[] = "Rezultatai.txt";
//----------------------------------------------------------
void SkaitytiDuomenis(const char failoVardas[], Parduotuve & prekes);
void Spausdinti(const char failoVardas[], Parduotuve & prekes, string komentarai);
void Atrinkti(Parduotuve & prekes, Parduotuve & senosPrekes);
//----------------------------------------------------------
int main()
{
ofstream fr(CRezultatai); fr.close();
Parduotuve parduotuvesPrekes,
senosPrekes;
SkaitytiDuomenis(CDuomenys, parduotuvesPrekes);
string parduotuvesPavadinimas = parduotuvesPrekes.ImtiPavadinima();
Spausdinti(CRezultatai, parduotuvesPrekes, parduotuvesPavadinimas +
" - didžiausias pigių prekių pasirinkimas Lietuvoje");
Atrinkti (parduotuvesPrekes, senosPrekes);
Spausdinti (CRezultatai, senosPrekes, "Prekes parduotos per ilgesni laiko tarpa, negu 5 dienos");
return 0;
}
//----------------------------------------------------------
void SkaitytiDuomenis(const char failoVardas[], Parduotuve & prekes)
{
// ifstream fd(failoVardas);
// string parduotuvesPav;
// fd.ignore(100, '\n'); // praleidžiama komentarų eilutė
// fd.ignore(100, '\n'); // praleidžiama komentarų eilutė
string parduotuvesPav;
char pavadinimas[36];
string atvezimoData;
string pardavimoData;
int prekiuKiekis;
double kaina;
ifstream fd(failoVardas);
if (!fd.eof()) {
getline(fd, parduotuvesPav);
prekes.DetiPavadinima(parduotuvesPav);
}
while (!fd.eof() && prekes.ImtiPrekiuSkaiciu() < prekes.CMax) {
fd.get(pavadinimas, sizeof pavadinimas);
fd >> atvezimoData >> pardavimoData >> prekiuKiekis >> kaina;
fd.ignore();
Preke preke(pavadinimas, atvezimoData, pardavimoData, prekiuKiekis, kaina);
prekes.DetiNaujaPreke(preke);
}
fd.close();
}
//----------------------------------------------------------
void Spausdinti(const char failoVardas[], Parduotuve & prekes, string komentarai)
{
ofstream fr(failoVardas, ios::app);
fr << komentarai << endl;
fr << "-----------------------------------------------------------------------------------" << endl;
fr << "Prekės pavadinimas Atvežimo data Pardavimo data Kiekis Kaina" << endl;
fr << "-----------------------------------------------------------------------------------" << endl;
for (int i = 0; i < prekes.ImtiPrekiuSkaiciu(); i++) {
Preke preke = prekes.ImtiPreke(i);
fr << left << setw(39) << preke.ImtiPavadinima() << " "
<< right << setw(12) << preke.ImtiAtvezimoData() << " "
<< preke.ImtiPardavimoData() << " "
<< setw(4) << preke.ImtiPrekiuKieki() << " "
<< setw(7) << setprecision(2) << fixed << preke.ImtiKaina() << endl;
}
fr << "-----------------------------------------------------------------------------------" << endl << endl;
fr.close();
}
//----------------------------------------------------------
void Atrinkti(Parduotuve & prekes, Parduotuve & senosPrekes)
{
for (int i = 0; i < prekes.ImtiPrekiuSkaiciu(); i++) {
Preke preke = prekes.ImtiPreke(i);
if ((preke.ImtiPardavimoData() > preke.ImtiAtvezimoData()))
senosPrekes.DetiNaujaPreke(preke);
}
}
Now my problem so far is that I don't really know if and HOW I can make a list of wares that took more than 5 days to sell when dates are in string format, or should I use another version of program i made so far where I described dates as integers (each arrive year month day and sell year month day as ints)?