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.