1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203
|
main.cpp
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
#include "zmogus.h" //objektai
int main() {
objZmogus Zmogus; //objektas
char c; //laikinas, ið esmës nenaudojamas
while (true) {
Zmogus.PridetiNauja(); //Pridedam informacijà
cout << "\nAr dar ivedinesite? (t/n)\n";
cin.get(c);
if (c == 'n') break; //Jei nebeávedinës, iðeinam
cin.get(c); //nuimti Enter simboliui
}
Zmogus.Rezultatai(); //Parodom rezultatus
system("PAUSE");
return 0;
}
//////////////////////////////////////////////////////////////
zmogus.cpp
#include "zmogus.h"
void objAplinka::NaujaAplinka() {
aplinka Aplinka;
char c;
cout << "Kokia tada buvo temperatura? (laipsniai C)\n"; //suþinom tos dienos aplinkà
cin >> Aplinka.Oras.temperatura;
cin.get(c); //Enter
cout << "Koks vejo stiprumas? (m/s)\n";
cin >> Aplinka.Oras.vejas;
cin.get(c); //Enter
cout << "Ar sviete saule? (t/n)\n";
cin.get(c);
Aplinka.Oras.saule = (c == 't');
cin.get(c); //Enter
cout << "Ar lijo lietus? (t/n)\n";
cin.get(c);
Aplinka.Oras.lietus = (c == 't');
cin.get(c); //Enter
cout << "Kokia buvo kolektyvo nuotaika?\n";
getline(cin, Aplinka.Kolektyvas);
VisosAplinkos.push_back(Aplinka); //á sàraðà ádedam ávestà informacijà
}
void objZmogus::PridetiNauja() {
zmogus Zm;
char c;
objAplinka::NaujaAplinka(); //pridedam naujà aplinkà
Zm.AplinkosIter = VisosAplinkos.end(); //suþinom nuorodà á paskutinæ pridëtà
Zm.AplinkosIter--; //reikia, nes .end() nurodo á jau po paskuinio esantá
cout << "Kokia zmogaus nuotaika?\n0 - bloga, 1 - prasta, 2 - vidutiniska, 3 - gera, 4 - puiki\n"
<< "Iveskite tik skaiciu.\n";
cin >> Zm.nuotaika; //nuskaitom nuotaikà
cin.get(c); //Enter
if ((Zm.nuotaika < 0) || (Zm.nuotaika > 4)) Zm.nuotaika = 2; //kad bûtø geras skaièius
Zmogus.push_back(Zm); //ádedam á sàraðà nuotaikà
}
void objZmogus::Rezultatai() {
int i, temp, vejas, saule, lietus, n;
string nuotaikos [] = {"bloga", "prasta", "vidutiniska", "gera", "puiki"};
list<zmogus>::iterator IterZm;
map<string, int> Kolektyvai;
map<string, int>::iterator IterKol;
ofstream R;
R.open("Rezultatai.txt"); //èia raðysim rezultatus
for (i = 0; i <= 4; i++) { //su kiekviena ámanoma nuotaika
temp = 0; vejas = 0; saule = 0; lietus = 0; n = 0; Kolektyvai.clear(); //kiekvienai nuotaikai skaièiuojam atskirai
for (IterZm = Zmogus.begin(); IterZm != Zmogus.end(); IterZm++) { //su visom þmogaus dienom
if ((*IterZm).nuotaika == i) { //jei buvo bûtent tos nuotaikos
temp += (*(*IterZm).AplinkosIter).Oras.temperatura; //skaièiuojam duomenis dël statistikos
vejas += (*(*IterZm).AplinkosIter).Oras.vejas;
saule += (*(*IterZm).AplinkosIter).Oras.saule ? 1 : 0; //jei saulëta, pridedam 1, kitaip pridedam 0
lietus += (*(*IterZm).AplinkosIter).Oras.lietus ? 1 : 0;
n++; //skaièiuojam kiek viso dienø
IterKol = Kolektyvai.find((*(*IterZm).AplinkosIter).Kolektyvas);
if (IterKol == Kolektyvai.end()) { //jei asociatyviniame sàraðe neradom tokios nuotaikos
Kolektyvai[(*(*IterZm).AplinkosIter).Kolektyvas] = 1; //ádedam ir pasakom, kad tokiø kol kas buvo 1
} else {
(*IterKol).second++; //jei radom, padidinam jø kieká
}
}
}
if (n > 0) {
cout << "Zmogaus nuotaika: " << nuotaikos[i] << endl; //iðvedam visà informacijà
R << "Zmogaus nuotaika: " << nuotaikos[i] << endl;
cout << "\tViso tokiu dienu: " << n << endl;
R << "\tViso tokiu dienu: " << n << endl;
cout << "\tVidutine tempratura: " << ((float) temp / n) << endl;
R << "\tVidutine tempratura: " << ((float) temp / n) << endl;
cout << "\tVidutinis vejo stiprumas: " << ((float) vejas / n) << endl;
R << "\tVidutinis vejo stiprumas: " << ((float) vejas / n) << endl;
cout << "\tSauletu dienu: " << saule << endl;
R << "\tSauletu dienu: " << saule << endl;
cout << "\tLietingu dienu: " << lietus << endl;
R << "\tLietingu dienu: " << lietus << endl;
cout << "\tKolektyvo nuotaikos: " << endl;
R << "\tKolektyvo nuotaikos: " << endl;
for (IterKol = Kolektyvai.begin(); IterKol != Kolektyvai.end(); IterKol++) { //iðvedam visas nuotaikas ir jø skaièiø
cout << "\t\t" << (*IterKol).first << ": " << (*IterKol).second << "k.\n";
R << "\t\t" << (*IterKol).first << ": " << (*IterKol).second << "k.\n";
}
cout << endl;
R << endl;
}
}
R.close();
}
////////////////////////////////////////////////////////////////////
zmogus.h
#ifndef Header_zmogus
#define Header_zmogus //Kad du kartus neáterptø to paties failo
#include <iostream>
#include <string>
#include <list>
#include <map>
#include <fstream>
using namespace std;
typedef struct { //oro struktura
int temperatura;
int vejas;
bool lietus;
bool saule;
} oras;
typedef struct { //aplinkos struktura => oras + kolektyvo nuotaika
string Kolektyvas;
oras Oras;
} aplinka;
typedef struct { //zmogaus dienos struktura - kokia buvo aplinka (nuoroda á aplinkos sàraðà) ir þmogaus nuotaika (nr.)
list<aplinka>::iterator AplinkosIter;
int nuotaika;
} zmogus;
class objAplinka { //bazinë klasë
protected:
list<aplinka> VisosAplinkos; //sàraðas ið aplinkø
public:
objAplinka() {VisosAplinkos.clear();}; //sukûrus iðvalo sàraðà
void NaujaAplinka(); //prideda naujà aplinkà á saraðà
};
class objZmogus : private objAplinka { //iðvestinë klasë
list<zmogus> Zmogus; //sàraðas þmogaus nuotaikø ir nuorodø á tos dienos aplinkà
public:
objZmogus() {Zmogus.clear();}; //sukûrus iðvalo
void PridetiNauja(); //prideda naujà dienà (aplinkà(iðkvieèia bazinës klasës funkcijà) ir þmogas nuotaikà)
void Rezultatai(); //iðveda rezultatus
};
#endif
|