[C++] Znajdź najbliższą wartość w tablicy

Nostroo
Użytkownik
Użytkownik
Posty: 15
Rejestracja: 30 paź 2016, o 19:21
Płeć: Mężczyzna
Lokalizacja: Poznań

[C++] Znajdź najbliższą wartość w tablicy

Post autor: Nostroo »

Witam. Jestem Mateusz i dopiero uczę się programować. Zacząłem od C++ i mi to jakoś idzie. Niestety, aktualnie dotarłem do punktu, w którym nie wiem co zrobić. Mam zadanie, i jest ono dla mnie nie od ruszenia.
"Stwórz funkcję, która zwróci najbardziej zbliżoną liczbę do podanej z tablicy wypełnionej elementami wylosowanymi z przedziału od 0 do 100."
Byłbym bardzo wdzięczny za kod z objaśnieniami
Z góry dziękuję za wszelką pomoc i pozdrawiam

P.S.
Jeżeli jest możliwe to prosiłbym bez użycia "string". Aktualnie nie wolno nam jej używać
Ostatnio zmieniony 27 lis 2016, o 15:54 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C++] Znajdź najbliższą wartość w tablicy

Post autor: kalwi »

A po co tu string niby?

Kod: Zaznacz cały

#include <iostream>
#include <climits>
#include <cstdlib>
#include <ctime>
#include <cmath>

using namespace std;

int main(void)
{
	srand(time(NULL));
	double x;
	size_t index;
	double diff;
	cout << "Podaj liczbe: " << endl;
	cin >> x;

	const size_t SIZE = 100;
	const unsigned int MAX = 100;
	double tab[SIZE];
	tab[0] = static_cast<double> (rand() / (float)RAND_MAX) * MAX;
	diff = abs(x - tab[0]);
	index = 0;

	for(size_t i = 1; i < SIZE; ++i)
	{
		tab[i] = static_cast<double> (rand() / (double)RAND_MAX) * MAX;
		if(abs(x - tab[i]) < diff)
		{
			diff = abs(x - tab[i]);
			index = i;
		}
	}	

	cout << "Twoja liczba: " << x << endl << "Najblizsza liczba w tablicy: " 
	<< tab[index] << endl << "Indeks: " << index << endl << "Roznica: " << diff << endl;
	return 0;
}
Ostatnio zmieniony 27 lis 2016, o 02:37 przez kalwi, łącznie zmieniany 2 razy.
Nostroo
Użytkownik
Użytkownik
Posty: 15
Rejestracja: 30 paź 2016, o 19:21
Płeć: Mężczyzna
Lokalizacja: Poznań

[C++] Znajdź najbliższą wartość w tablicy

Post autor: Nostroo »

Dzięki, ale mam prośbę. Mógłbyś wytłumaczyć, za co odpowiadają zmienna diff, komenda abs oraz static_cast?
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C++] Znajdź najbliższą wartość w tablicy

Post autor: kalwi »

diff łatwo się domyślić, chociażby nazwa po angielsku już coś mówi (a jak nadal nie widzisz - to spójrz na couta na końcu)

abs - absolute value

static_cast - rzutowanie na inny typ zmiennych (aczkolwiek powinno tam być double, nie float, mój błąd)
Nostroo
Użytkownik
Użytkownik
Posty: 15
Rejestracja: 30 paź 2016, o 19:21
Płeć: Mężczyzna
Lokalizacja: Poznań

[C++] Znajdź najbliższą wartość w tablicy

Post autor: Nostroo »

Wielkie dzięki
ODPOWIEDZ