Robiłem program w trzech plikach, które zamieściłem poniżej i niestety nie działa. Liczby pseudolosowe wychodza poza zakres, a niektóre są takie same niezależnie ile razy odpale program. Co mogłem zrobić źle? Program pisalem w CodeBlocks o ile ma to jakieś znaczenie.
plik main.cpp
#include <iostream>
#include <cstdlib>
#include "dzien.h"
#include <time.h>
using namespace std;
int suma_opadow = 0, suma_uv = 0, max_temp = 0, min_temp = 0, suma_temp = 0;
int main()
{
srand(time(NULL));
Dzien d[7];
for(int i=0; i<7; i++)
{
d[i].numer_dnia = i + 1;
d[i].pogoda();
if(d[i].pogoda_dnia == 0 || d[i].pogoda_dnia == 1)
{
d[i].opady();
suma_opadow++;
}
else
{
d[i].swiatlo();
suma_uv += d[i].wartosc_UV;
}
d[i].temp();
suma_temp += d[i].temperatura;
if(d[i].temperatura > d[i-1].temperatura)
max_temp = d[i].temperatura;
if(d[i].temperatura < d[i-1].temperatura)
min_temp = d[i].temperatura;
}
for(int i=0; i<7; i++)
{
cout << "------------" << endl;
cout << d[i].wartosc_UV << endl;
cout << d[i].ilosc_opadow << endl;
cout << d[i].temperatura << endl;
cout << "------------" << endl;
}
cout << "Maksymalna odnotowana temperatura to " << max_temp << endl;
cout << "Minimalna odnotowana temperatura to " << min_temp << endl;
cout << "Ilosc opadow w tygodniu wynosi " << suma_opadow << endl;
cout << "Srednia temperatura w tygodniu wynosi " << suma_temp / 7 << endl;
cout << "Srednia wartosc UV w tygodniu wynosi " << suma_uv / 7 << endl;
return 0;
}
plik dzien.cpp
#include <iostream>
#include "dzien.h"
#include <cstdlib>
using namespace std;
void Dzien::pogoda()
{
int pogoda_dnia = rand()%3;
}
void Dzien::opady()
{
int ilosc_opadow = rand()%81;
}
void Dzien::swiatlo()
{
int wartosc_UV = rand()%101;
}
void Dzien::temp()
{
int temperatura = rand()%51-10;
}
plik dzien.h
#include <iostream>
using namespace std;
class Dzien
{
public:
int numer_dnia; // 1 - poniedzialek, 2 - wtorek, ..., 7 - niedziela
int pogoda_dnia; // deszcz, grad, slonce(liczba 0 - deszcz, liczba 1 - grad, liczba 2 - slonce)
int ilosc_opadow; // wartosc od 0-80
int wartosc_UV; // wartosc 0-100
int temperatura; // wartosc od -10 do +40
void pogoda(); // losuje pogode
void opady(); // losuje wartosc opadow w mm
void swiatlo(); // losuje wartosc UV
void temp(); // losuje wartosc temperatury w celsjuszach
};