Regression opgave
hejJeg er i igang med at lave en program i c++ der kan udregne simple lineær funktioner vha numerisk regression. Det gøres ved nogen punkter man selv vælger (også antallet af dem). Dog har jeg problemer med at finde middelværdierne (gennemsnittet) af x- og y-værdierne. Altså hvor du plusser enten alle x eller y punkterne og dividere med antallet af punkter. Efter min overbevisning burde dette virke, men middelværdiner bliver forkerte.
#include <cstdlib>
#include <iostream>
#include <sstream>
using namespace std;
int kontrol(string);
int main(int argc, char *argv[])
{
int antalPunkter = kontrol("Indtast antallet af punkter");
float punkter[antalPunkter*2];
for(int i = 0; i < antalPunkter*2; i++)
{
char type;
if(i % 2 == 0)
{
type = 'x';
}
else
{
type = 'y';
}
cout << "Indtast " << i/2+1 << ". koordinats " << type << "-vaerdi";
punkter[i] = kontrol("");
}
system("PAUSE");
float middelvaerdix = 0;
float middelvaerdiy = 0;
for(int i = 0; i < antalPunkter*2; i++)
{
if(i % 2 == 0)
{
middelvaerdix += punkter[i];
}
if(i % 2 != 0)
{
middelværdiy += punkter[i];
}
}
cout << "middelværdi for x'erne = " << middelvaerdix/(antalPunkter/2+1) << endl;
cout << "middelværdi for y'erne = " << middelvaerdiy/(antalPunkter/2+1) << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
int kontrol(string opgave) {
bool fejl;
int tal = 0;
string input;
do {
fejl = false;
cout << opgave << endl;
cin >> input;
stringstream ss(input);
if((ss >> tal).fail()) // Hvis strengen ikke er et gyldigt tal.
{
cout << endl << "Det indtastede er ikke gyldigt. Proev venligst igen." << endl;
fejl = true;
}
if(tal < 2) // Hvis tallet er for lille.
{
cout << endl << "Det indtastede tal er for hoejt. Proev venligst igen." << endl;
fejl = true;
}
} while(fejl);
return tal;
}