Problem z przybliżeniem wyniku tablicy

0

Witam, opis mojego problemu jest zawarty w tytule - "Problem z przybliżeniem wyniku tablicy", no więc ujmując to dokładniej mam taką funkcje(wklejam tutaj jedynie jej fragment):

void zlicz()
{
	int liczba1;
	int liczba2;
	int losowanie;
	int ins;
	int punktacja = 0;
	while (true) {
		srand(time(NULL));

		liczba1 = rand() % 100 + 1;
		liczba2 = rand() % 100 + 1;
		losowanie = rand() % 4 + 0;

		if (losowanie == 3 && liczba1 < liczba2)
		{
			int temp;
			temp = liczba1;
			liczba1 = liczba2;
			liczba2 = temp;
			cout << "Zamienilem licznik z mianownikiem" <<endl;

		}
		cout << "Zmienna losowanie wynosi: " << losowanie <<endl;
		double tab[] = { liczba1 + liczba2,liczba1 - liczba2,liczba1 * liczba2,liczba1 / liczba2 };
		string wstawznak[] = { "+","-","*","/" };
		tab[losowanie];
		cout << liczba1;
		cout << wstawznak[losowanie];
		cout << liczba2;
		cout << "=" << endl;
		cout << "zmienna losowanie " << losowanie << endl;
		cout << "wynik: " << tab[losowanie] << endl;
		cin >> ins;
		if(losowanie==3) 
		{
			cout << "przed" << tab[losowanie] << endl;
			tab[losowanie]=ceil(tab[losowanie]);
			cout << "wynik"<<tab[losowanie];
			getchar();
			getchar();
		}
}

Problem leży w tym, że dla tablicy zawierającej "liczba1/liczba2"-tab[3] chce, aby poprawnym wynikiem byla liczba przyblizona o zasade ceil. - Funkcja ceil
Funkcja ceil zaokrągla liczby zawsze w górę. Tak więc, liczba np. 3.0001 zostanie zaokrąglona do 4.
.

2

Co Chcesz zaokrąglać, wszędzie w tej tablicy Masz liczby całkowite: najpierw Wykonujesz działania na liczbach całkowitych, a potem je Rzutujesz na double, co już jest za późno; liczba1/liczba2, np., zawsze będzie całkowite. Zadeklaruj je [liczba1 i liczba2], jako zmiennoprzecinkowe.

1

wg mnie wystarczy:

double tab[] = { liczba1 + liczba2,liczba1 - liczba2,liczba1 * liczba2,ceil((double)liczba1 / liczba2)};
0
while (true) {
        srand(time(NULL));

złe użycie srand. srand(time(NULL)); powinno się wywołać raz na początku.

0
lion137 napisał(a):

Co Chcesz zaokrąglać, wszędzie w tej tablicy Masz liczby całkowite: najpierw Wykonujesz działania na liczbach całkowitych, a potem je Rzutujesz na double, co już jest za późno; liczba1/liczba2, np., zawsze będzie całkowite. Zadeklaruj je [liczba1 i liczba2], jako zmiennoprzecinkowe.

Miałeś racje, myślałem, że jeżeli liczby są jako int, a ich wynik jest zapisany w double to wynik zostanie wypisany jako double. Jednakże wszystko jest już jasne, dziękuje za pomoc.

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