Naloga:
Napišite program, ki prebere podatke o višinah v datoteki (visine.txt) in izračuna povprečno vrednost in standarden odmik ter rezultat zapišite z absolutno in relativno napako. Program naj poišče še največjo in najmanjšo meritev in potem vse meritve razdelite na razrede in podatke o razredih shranite v datoteko z imenom hist.txt ter z gnuplotom narišite histogram.
Program je narejen, brez da mu povemo koliko podatkov ima v datoteki.
#include <iostream>
#include <cmath>
#include <fstream>
#include <iomanip>
using namespace std;
int main ()
{
float x,y,vx=0,vx2=0,vmax,vmin,s,d;
int i1=0,i2=0,i3=0,i4=0,i5=0,i6=0,i7=0,i8=0,i=0;
string line;
ofstream mf;
mf.open ("hist1.txt");
ifstream visine;
visine.open ("visine.txt");
getline(visine,line);
while (!visine.eof()){
visine >> y >> x;
if (!visine.eof()) {
i=i+1;
if (i==1) {
vmin=x;
vmax=x;
}
else {
if (x<vmax) vmax=x;
if (x>vmin) vmin=x;
}
vx=vx+x;
vx2=vx2+pow(x,2);
if (x<145) {
i1=i1+1;
}
else if (x<155) {
i2=i2+1;
}
else if (x<165) {
i3=i3+1;
}
else if (x<175) {
i4=i4+1;
}
else if (x<185) {
i5=i5+1;
}
else if (x<195) {
i6=i6+1;
}
else if (x<205) {
i7=i7+1;
}
else {
i8=i8+1;
}
}
}
vx=vx/i;
vx2=vx2/i;
s=sqrt(vx2-pow(vx,2));
d=s/vx;
cout << "Imamo " << i << " meritev." << endl;
cout << "Povprecje je " << vx << endl;
cout << "Absolutna napaka je " << s << endl;
cout << "Relativna napaka je " << d << endl;
cout << "Najvecja visina je " << vmax << endl;
cout << "Najmanjsa visina je " << vmin << endl;
cout << "Z absolutno napako: " << vx << char(241) << s << endl;
cout << "Z relativno napako: " << vx << "(1" << char(241) << d << ")" << endl;
cout << "Histogram izracunan.";
mf << 135 <<" "<<145<<" "<<i1<<endl;
mf << 145 <<" "<<155<<" "<<i2<<endl;
mf << 155 <<" "<<165<<" "<<i3<<endl;
mf << 165 <<" "<<175<<" "<<i4<<endl;
mf << 175 <<" "<<185<<" "<<i5<<endl;
mf << 185 <<" "<<195<<" "<<i6<<endl;
mf << 195 <<" "<<205<<" "<<i7<<endl;
mf << 205 <<" "<<215<<" "<<i8<<endl;
mf.close();
visine.close();
return 0;
}
Tekst sedaj shranimo kot datoteko s1.cpp in prevedemo.
Tu je sedaj še print screen postopka prevajanja, postopka risanja z gnuplotom in narisana grafa v pdf datoteki. V kolikor vam kakšna podrobnost ni jasna, mi sporočite. Histogram je narisan v naslednji JPG datoteki.
Ter podatki za histogram v hist1.txt
Nazaj na osnovno stran za predmet Uporaba numeričnih metod v kemiji.