Imam problem - treba da napravim klasu koja ce uzeti neke podatke [tacnije stepen trazenog polinoma i dva niza, koja su rezulata nekog ispitivanja] i da na te podatke primenim, u klasi, metod najmanjih kvadrata - polinomalna varijanta. E sada, kod nije kompletan - odradjen je do tacke kada se formiraju matrice MatS [matrica stepena], MatX i MatY [odnosno red rezultata]. Do sada sredjen program odradi posao, ali samo u slucaju da je stepen trazenog polinoma veci ili jednak 3, inace, ako se stavi 1 ili 2 prijavljuje gresku. Gde gresim?
BTW, tek sam poceo da se "igram" sa C++, tako da...sve grdnje, korekcije, savete velikodusno ocekujem

Code:
// MNK.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream.h>
#include <math.h>
#include <stdio.h>
#include <cstdlib>
//using namespace std;
class MetNK
{
private:
int n; //stepen trazenog polinoma
int X, Y; //ulazni podaci
int **elMatS; //pokazivac na int za smestanje elemenata matrice stepena
int redMatS, kolMatS;
int **elMatX;//pokazivac na int za smestanje elemenata matrice MatX
int redMatX, kolMatX;
int *elMatY;//pokazivac na int za smestanje elemenata matrice MatY, koja je red!
int redMatY;
int *elNizX;
int *elNizY;
int ulNizX, ulNizY;
int *uNizX;
int *uNizY;
int *nizX, *nizY;
int brojIsp;
public:
MetNK(int n,/* int X, int Y,*/ int brIsp);//konstruktor sa: n
~MetNK(); //destruktor
// int &elemMatS(int redMatS, int kolMatS);//vraca referencu na trazeni element matrice stepena
void UzmiUlPod(int brIsp, int *nizX, int *nizY); //uzima podatke ulazne podatke
void FormMatS();
void VratiPodatak();
};
MetNK::MetNK(int n,/* int X, int Y*/ int brIsp)
{
// dinamicki niz pokazivaca u koji se smeste adrese dinamickih nizova
// od kojih svaki predstavlja po jedan red elemenata matrice
redMatS = redMatX = n;
kolMatS = kolMatX = n;
redMatY = brojIsp = brIsp;
elMatS = new int*[redMatS];
elMatX = new int*[redMatX];
elMatY = new int[redMatY];
elNizX = new int[brojIsp];
uNizX = new int[brojIsp];
// nizX = new int[brojIsp];
uNizY = new int[brojIsp];
// nizY = new int[brojIsp];
for (int i(0); i < n; i++)
{
elMatS[i] = new int[redMatS];
elMatX[i] = new int[redMatX];
}
this->redMatS = redMatS;
this->kolMatS = kolMatS;
this->redMatX = redMatX;
this->kolMatX = kolMatX;
this->brojIsp = brojIsp;
this->redMatY = redMatY;
}
MetNK::~MetNK()
{
for (int i(0); i < redMatS; i++)
delete[] elMatS[i];
delete[] elMatX[i]; // brisanje svih nizova za redove elemenata
delete[] elMatS; // brisanje niza koji je cuvao adrese tih redova
elMatS = 0; // postavljanje na NULL pokazivac
elMatX = 0;
redMatS = kolMatS = 0;
redMatX = kolMatX = 0;
}
void MetNK::UzmiUlPod(int brIsp, int *nizX, int *nizY)
{
// brojIsp = brIsp;
int index (0);
for (int i(0); i < brojIsp; i++)
{
uNizX[i]=nizX[i];
uNizY[i]=nizY[i];
}
}
void MetNK::VratiPodatak()
{
cout << elMatX[3][3]+1;
}
void MetNK::FormMatS()
{
// formiranje matrice stepena:
for (int red(0); red < redMatS; red++)
{
int suma = red;
int rezsuma = suma;
for (int kol(0); kol < kolMatS; kol++)
{
suma = suma + kol;
elMatS[red][kol] = suma;
suma = rezsuma;
cout << elMatS[red][kol] << "\n"; //visak
}
}
// formiranje matrice MatX:
for (int red1(0); red1 < redMatX; red1++)
{
for (int kol1(0); kol1 < kolMatS; kol1++)
{
int suma = 0;
int stepen = elMatS[red1][kol1];
for (int redx(0); redx < brojIsp; redx++)
{
suma = suma + pow(uNizX[redx],stepen);
}
elMatX[red1][kol1] = suma;
cout << elMatX[red1][kol1] << "\n"; //visak
}
}
//formiranje matrice MatY:
for (int red2(0); red2 < redMatY; red2++)
{
int sumY = 0;
for (int kol2(0); kol2 < brojIsp; kol2++)
{
sumY = sumY + uNizY[kol2]*pow(uNizX[kol2],red2);
}
elMatY[red2] = sumY;
cout << elMatY[red2] << "\n"; //visak
}
}
int main()//int argc, char* argv[])
{
int step;
int DNizX, DNizY;
int UlazX[]={1,2,3,4,5,6};
int UlazY[]={2,6,8,15,28,50};
DNizX = sizeof(UlazX)/sizeof(UlazX[0]);
DNizY = sizeof(UlazY)/sizeof(UlazY[0]);
if (DNizX != DNizY) //kontrola broja ispitivanja
{
cout << "Nije isti broj ispitivanja i rezulata! \n";
return 0;
};
cout << "Unesi stepen aproksimacionog polinoma: ";
cin >> step;
step = step + 1;
MetNK *M = new MetNK(step, DNizX);
M->UzmiUlPod(DNizX, UlazX, UlazY);
M->FormMatS();
M->VratiPodatak();
return 0;
}
// MNK.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream.h>
#include <math.h>
#include <stdio.h>
#include <cstdlib>
//using namespace std;
class MetNK
{
private:
int n; //stepen trazenog polinoma
int X, Y; //ulazni podaci
int **elMatS; //pokazivac na int za smestanje elemenata matrice stepena
int redMatS, kolMatS;
int **elMatX;//pokazivac na int za smestanje elemenata matrice MatX
int redMatX, kolMatX;
int *elMatY;//pokazivac na int za smestanje elemenata matrice MatY, koja je red!
int redMatY;
int *elNizX;
int *elNizY;
int ulNizX, ulNizY;
int *uNizX;
int *uNizY;
int *nizX, *nizY;
int brojIsp;
public:
MetNK(int n,/* int X, int Y,*/ int brIsp);//konstruktor sa: n
~MetNK(); //destruktor
// int &elemMatS(int redMatS, int kolMatS);//vraca referencu na trazeni element matrice stepena
void UzmiUlPod(int brIsp, int *nizX, int *nizY); //uzima podatke ulazne podatke
void FormMatS();
void VratiPodatak();
};
MetNK::MetNK(int n,/* int X, int Y*/ int brIsp)
{
// dinamicki niz pokazivaca u koji se smeste adrese dinamickih nizova
// od kojih svaki predstavlja po jedan red elemenata matrice
redMatS = redMatX = n;
kolMatS = kolMatX = n;
redMatY = brojIsp = brIsp;
elMatS = new int*[redMatS];
elMatX = new int*[redMatX];
elMatY = new int[redMatY];
elNizX = new int[brojIsp];
uNizX = new int[brojIsp];
// nizX = new int[brojIsp];
uNizY = new int[brojIsp];
// nizY = new int[brojIsp];
for (int i(0); i < n; i++)
{
elMatS[i] = new int[redMatS];
elMatX[i] = new int[redMatX];
}
this->redMatS = redMatS;
this->kolMatS = kolMatS;
this->redMatX = redMatX;
this->kolMatX = kolMatX;
this->brojIsp = brojIsp;
this->redMatY = redMatY;
}
MetNK::~MetNK()
{
for (int i(0); i < redMatS; i++)
delete[] elMatS[i];
delete[] elMatX[i]; // brisanje svih nizova za redove elemenata
delete[] elMatS; // brisanje niza koji je cuvao adrese tih redova
elMatS = 0; // postavljanje na NULL pokazivac
elMatX = 0;
redMatS = kolMatS = 0;
redMatX = kolMatX = 0;
}
void MetNK::UzmiUlPod(int brIsp, int *nizX, int *nizY)
{
// brojIsp = brIsp;
int index (0);
for (int i(0); i < brojIsp; i++)
{
uNizX[i]=nizX[i];
uNizY[i]=nizY[i];
}
}
void MetNK::VratiPodatak()
{
cout << elMatX[3][3]+1;
}
void MetNK::FormMatS()
{
// formiranje matrice stepena:
for (int red(0); red < redMatS; red++)
{
int suma = red;
int rezsuma = suma;
for (int kol(0); kol < kolMatS; kol++)
{
suma = suma + kol;
elMatS[red][kol] = suma;
suma = rezsuma;
cout << elMatS[red][kol] << "\n"; //visak
}
}
// formiranje matrice MatX:
for (int red1(0); red1 < redMatX; red1++)
{
for (int kol1(0); kol1 < kolMatS; kol1++)
{
int suma = 0;
int stepen = elMatS[red1][kol1];
for (int redx(0); redx < brojIsp; redx++)
{
suma = suma + pow(uNizX[redx],stepen);
}
elMatX[red1][kol1] = suma;
cout << elMatX[red1][kol1] << "\n"; //visak
}
}
//formiranje matrice MatY:
for (int red2(0); red2 < redMatY; red2++)
{
int sumY = 0;
for (int kol2(0); kol2 < brojIsp; kol2++)
{
sumY = sumY + uNizY[kol2]*pow(uNizX[kol2],red2);
}
elMatY[red2] = sumY;
cout << elMatY[red2] << "\n"; //visak
}
}
int main()//int argc, char* argv[])
{
int step;
int DNizX, DNizY;
int UlazX[]={1,2,3,4,5,6};
int UlazY[]={2,6,8,15,28,50};
DNizX = sizeof(UlazX)/sizeof(UlazX[0]);
DNizY = sizeof(UlazY)/sizeof(UlazY[0]);
if (DNizX != DNizY) //kontrola broja ispitivanja
{
cout << "Nije isti broj ispitivanja i rezulata! \n";
return 0;
};
cout << "Unesi stepen aproksimacionog polinoma: ";
cin >> step;
step = step + 1;
MetNK *M = new MetNK(step, DNizX);
M->UzmiUlPod(DNizX, UlazX, UlazY);
M->FormMatS();
M->VratiPodatak();
return 0;
}
If you hate a person, you hate something in him that is part of yourself. What isn't part of ourselves doesn't disturb us.