array geeft foute waarden terug

Status
Niet open voor verdere reacties.

garfieke

Gebruiker
Lid geworden
25 apr 2007
Berichten
9
Wanneer ik onderstaand programma laat lopen krijgen ik volgende resultaat:
-6.27744e+066 -6.27744e+066 -6.27744e+066
-6.27744e+066 -6.27744e+066 -6.27744e+066
-6.27744e+066 -6.27744e+066 -6.27744e+066

Weet iemand hoe ik dit kan oplossen?

methode om i en j te zetten even weggelaten...

Test.h
Code:
#pragma once

class Test
{
private:
	double arr[3];
	int i, j;
public:
	Test(const double *elementen);
	Test();
	int rows() const;
	int cols() const;
	void print() const;
};

Test.cpp
Code:
Test::Test(const double *elementen){
	for(int s=0;s<sizeof(elementen);s++){
		arr[s]=elementen[s];
	}
}

Test::Test(){
	arr = {0,0,0};
}

int Test::rows() const{
	return i;
}

int Test::cols() const{
	return j;
}

void Test::print() const{
	for(int s=0;s<rows();s++){
		for(int t=0;t<cols();t++){
			cout << arr[s*cols()+t] << "\t";
		}
		cout << "\n";
	}
}

int main() {
	Test test1;
	Test();
	double z[3]={-1,2,-3};
	Test(z);
	test1.print();

	Test test2;
	Test();
	double y[3]={0,5,2};
	Test(y);
	test2.print();

	return 0;
}
 
Laatst bewerkt:
De functie Test::Test() is een constructor, die kun je niet zomaar aanroepen door "Test()" in je code te zetten. Hij wordt vanzelf al aangeroepen wanneer je "Test test1;" wegzet.
Je gebruikt in de print() functie wel rows() en cols() maar je hebt voor test1 nooit i en j een waarde gegeven.
Ook heeft de array die jij meegeeft aan print() maar 1 rij (of 1 kolom) want ze zijn 1-dimensionaal, een dubbele for-loop is dus niet nodig.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan