-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathkraje_COVID.js
172 lines (139 loc) · 5.52 KB
/
kraje_COVID.js
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
//ile jest różnych krajów, ilu mają mieszkańców itp, zabawy z danymi
var wyrazy = require("./cov-cases-1.json"); //wczytujemy dane dotyczące COV, ale zawierające listę krajów
var tab = []; //W tej tablicy zapisujemy wszystkie wyniki
let iPozycja = 0;
for (let iIter1 = 0; iIter1 < wyrazy.length - 1; iIter1++) {
//sprawdzanie czy w tablicy krajów występuje już dany kraj
let bFound = false;
for (let iIter2 = 0; iIter2 < tab.length;iIter2++)
{
if (tab[iIter2].nazwa==wyrazy[iIter1].countriesAndTerritories) bFound = true; // już jest taki
}
if (bFound==false) { //jeśli nie występował w tablicy tab[]
var kraj = new Object(); //tworzymy nowy obiekt - kraj
kraj.nazwa = wyrazy[iIter1].countriesAndTerritories; //uzupełniamy nazwę
kraj.populacja = wyrazy[iIter1].popData2019; // ilość mieszkańców
kraj.geoid = wyrazy[iIter1].geoId; // skrót nazwy
kraj.kontynent = wyrazy[iIter1].continentExp; // na jakim kontynencie
//tab.push(kraj); //dodajemy do tablicy
if (kraj.kontynent == "Europe") tab.push(kraj); //dodajemy do tablicy - ale tylko jeśli jest z wybranego przez nas kontynentu -> przypisanie jest z PLIKU (niekoniecznie prawdziwe)
}
}
// append_file.js
const fs = require('fs');
//let writeStream = fs.createWriteStream('./kraje.txt');
// write some data with a base64 encoding
//writeStream.write('aef35ghhjdk74hja83ksnfjk888sfsf');
// the finish event is emitted when all data has been flushed from the stream
//writeStream.on('finish', () => {
// console.log('wrote all data to file');
//});
// close the stream
//writeStream.end();
// add a line to a lyric file, using appendFile
//let sLinia = `dupa`;
// fs.appendFile('./kraje.txt', sLinia, (err) => {
// if (err) throw err;
//console.log('The lyrics were updated!');
//});
fs.writeFile('kraje_lista.txt', "Lista krajów:", (err) => {
if (err) throw err;
});
for (let iIter2 = 0; iIter2 < tab.length;iIter2++) //prezentujemy listę krajów z danymi
{
console.log(`kraj= ${tab[iIter2].nazwa}, mieszkańcy:${tab[iIter2].populacja}, geoid:${tab[iIter2].geoid}, kontynent:${tab[iIter2].kontynent}`);
let sLinia = `\nkraj= ${tab[iIter2].nazwa}, mieszkańcy:${tab[iIter2].populacja}, geoid:${tab[iIter2].geoid}, kontynent:${tab[iIter2].kontynent}`;
fs.appendFile('kraje_lista.txt', sLinia, (err) => {
if (err) throw err;
});
}
//fs.close();
console.log(tab.length);
function RysujHistogram(tab, bOpis, iNormalizuj, iOptionalMaxValue = 100) {
if (iOptionalMaxValue==0) iOptionalMaxValue = 100;
let tablica = [];
let iLargest = 0;
if (iNormalizuj == 1){
// teraz normalizujemy wyniki względem największej ilości występowania
// szukamy największej liczby w tablicy
iLargest = tab[0].populacja;
for (let iIter1 = 0; iIter1 < tab.length; iIter1++)
{
if (tab[iIter1].populacja>iLargest) iLargest=tab[iIter1].populacja;
}
}
else if (iNormalizuj == 2)
{
// sumujemy wszystkie wartości i wyliczymy z nich sumę
iLargest = tab[0].populacja;
for (let iIter1 = 0; iIter1 < tab.length; iIter1++)
{
iLargest+=tab[iIter1].populacja;
}
}
if (iNormalizuj == 0){
iLargest = 100
}
//console.log (`największa ilość / suma to: ${iLargest}`);
// dla iNormalizuj = 1
// dzielimy wszystkie wartości względem największej odnalezionej
// oznacza to, że największa liczba będzie teraz 100%
// dla iNormalizuj = 2
// dzielimy wszystkie przez sumę - so oznacza prawdziwy udział "w torcie"
for (let iIter1=0; iIter1<tab.length; iIter1++)
{
tablica.push(Math.round(tab[iIter1].populacja/iLargest*100));
}
//tak wygląda tablica po normalizacji
//console.log(tablica);
for (let iIter3 = iOptionalMaxValue - 1; iIter3 >= 0; iIter3=iIter3-iOptionalMaxValue/10)
{
//console.log(`przebieg ${iIter3}`)
let slinia = spacePad(iIter3, 4)+" "; // " 5" ;
for(let iIter2 = 0; iIter2 < tablica.length; iIter2++) {
if (tablica[iIter2] >= iIter3) slinia=slinia+String.fromCharCode(73)+" ";
else slinia=slinia+" ";
}
Loguj(slinia);
}
slinia = "----";
for(let iIter2 = 0; iIter2 < tablica.length; iIter2++)
{
slinia = slinia + "---";
}
Loguj(slinia);
slinia = " ";
for (let iIter1=0;iIter1<tablica.length;iIter1++)
{
if (bOpis) slinia = slinia + tab[iIter1].geoid+" ";
else slinia = slinia + spacePadEnd(iIter1,2)+" ";
}
Loguj(slinia);
}
// funkcja dodaje spacje na początku liczby
function spacePad(num, places) {
var zero = places - num.toString().length + 1;
return Array(+(zero > 0 && zero)).join(" ") + num;
}
// funkcja dodaje spacje na końcu liczby
function spacePadEnd(num, places) {
var zero = places - num.toString().length + 1;
return num + Array(+(zero > 0 && zero)).join(" ");
}
//wyświeltamy - parametry funkcji:
// tabelka -> tablica z wynikami
// false -> opis pod histogramem z CYFEREK, true -> opis z LITEREK
// włączamy funkcję ryzującą harmonogram
//var api2 = require('./histogram');
Loguj(`\n\nRozkład ilości mieszkańców w Europie - względem największego kraju (Rosji w całości)\n`);
RysujHistogram(tab, true, 2, 20)
//console.log(`rozkład długości wyrazów - rozkład względem największej liczby`);
//api2.RysujHistogram(tab, false, 1)
//console.log(`rozkład długości wyrazów - rozkład względem sumy wszystkich do 100%`);
//api2.RysujHistogram(tab, false, 2, 20)
function Loguj(sLinia){
console.log(sLinia);
fs.appendFile('kraje_wykres.txt', "\n"+sLinia, (err) => {
if (err) throw err;
});
}