kilka dni temu pytałem na forum jak przerobić do postaci obiektowej program do obliczania regresji lioniowej zgodnie z wzorem ze strony: http://www.chem.univ.gda.pl/kchfiz/assets/Uploads/ztchf/files/II-CH-MiK_lab/regresja-liniowa.pdf
napisałem coś takiego:
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
using namespace std;
class operacje
{
public:
int zlicz( string filename)
{
int n=0;
vector<string> v;
ifstream file(filename.c_str());
char line [256];
while(file.getline(line,256))
v.push_back(line);
for(int i=0;i<v.size();i++)
n++;
return n;
}
double sumax(string filename)
{
double suma1=0;
double suma2=0;
ifstream liczby(filename.c_str());
double liczba1;
double liczba2;
while (!liczby.eof())
{
liczby >> liczba1 >> liczba2;
suma1=suma1 + liczba1;
liczba1=0;
liczba2=0;
}
liczby.close();
return suma1;
}
double sumay(string filename)
{
double suma2=0;
ifstream liczby(filename.c_str());
double liczba1;
double liczba2;
while (!liczby.eof())
{
liczby >> liczba1 >> liczba2;
suma2=suma2 + liczba2;
liczba1=0;
liczba2=0;
}
liczby.close();
return suma2;
}
double sumailoczynu(string filename)
{
ifstream liczby(filename.c_str());
double liczba1;
double liczba2;
double sumail=0;
while (!liczby.eof())
{
liczby >> liczba1 >> liczba2;
sumail= sumail + liczba1*liczba2;
}
liczby.close();
return sumail;
}
};
class liczby : operacje
{ public:
double A;
double oblicza(string filename)
{ double a;
a=(zlicz(filename)*sumailoczynu(filename)-sumax(filename)*sumay(filename))/(zlicz(filename)*sumax(filename)*sumax(filename)-sumax(filename)*sumax(filename));
a=A;
return a;
}
double obliczb (string filename)
{ double b;
b=(sumay(filename)-A*sumax(filename))/(zlicz((filename)));
return b;
}
};
int main()
{
string filename;
cout << "Welcome in Barcik Plot Laboratory" << endl;
cout << "input your sourcefile"<< endl;
cin >> filename;
liczby wczytane;
cout << wczytane.oblicza(filename) << endl;
cout << wczytane.obliczb(filename) << endl;
return 0;
}
tylko wyświetla jakieś dziwne wyniki, co o tym myślicie???