Czy?żby komputer nie umiał liczyć??

0

w programie:

	ofstream out("plik.txt");
	float wynik;
	for(int x = 0; x <= tablicawynik.GetUpperBound(); x++)
	{
		if(tablicawynik[x] == "Wygrana") wynik = wynik + (float)1;
		if(tablicawynik[x] == "Remis") wynik = wynik + (float)0.5;
	}
	out << "wynik: " << wynik;

w tablicy było: 1 wygrana i 1 remis
i ... w plik.txt jest -> wynik: -1.07374e+008

Dziwne?? Nie sądzicie??

jak to w ogóle możliwe??

i pomóżcie to jakoś rozwiązać bo nie chcę żeby program źle liczył punkty

Pozdro

1

Nie, z kompem jest all ok, tyo ty masz blad w programie jesli dobrze widze...
a) nie inicjijesz floata

float wynik;

jesli to jest zmienna automatyczna (to wewnatrz funkcji) to ona nie jest czyszczona, tzn nie ma wartosci 0 na poczatku, czyli moze miec jakas kosmiczna wartosc, jak ta co ci wychodzi

b)

if(tablicawynik[x] == "Wygrana") wynik = wynik + (float)1;

hmm hmm moze tablicawynik ma przeciazenia or sth, ale jesli nie to masz blad,
w C napisy porownuje sie inaczej
np if( strcmp( tablicawynik[x], "Wygrana" ) == 0 ) bedzie juz ok
no chyba ze faktycznie sa tam przeciazenia ;>

poza tym (float)1 === 1.0f ;>>

0

zgadzam sie z Gynvael Coldwind... jesli nie zainicjujesz wynik=0 to tam cos juz bedzie (smieci) a porownywanie tekstow wykonuje sie prze strcmp...

pozdrawiam..

1 użytkowników online, w tym zalogowanych: 0, gości: 1