Tablica wskaźników do wektorów liczb

0

Witam serdecznie, próbuje rozwiązać zadanie, którego treść brzmi: " Wygeneruj n kolejnych liczb Fibonacciego. Zapisz je do tablicy o pojemności 10, zawierającej
w poszczególnych pozycjach wskaźniki do wektorów tych (wygenerowanych) liczb Fibonacciego, które kończą się cyfrą odpowiadającą indeksowi w tablicy wskaźników. Użyj odpowiednich funkcji niestandardowych.".
Funkcje generacji liczb ciągu Fibonacciego napisałem, lecz nie potrafię przypisać w/w liczb do tablicy, zgodnie z poleceniem. Będę wdzięczny za porady / fragmenty kodu.

0

Jeśli twoja funkcja wygląda np. tak:

int[] fibonacci(int n)

to tworzysz:

EDIT:

F = fibonacci(n);
fib = //nowa tablica o pojemności 10, zawierająca wskaźniki do 10 wektorów.
for(int i = 0; i < n; ++i) {
	// Liczba F[i] kończy się na jakąś cyfrę c, więc dodajesz ją do wektora fib na miejsce c.
}

Tak bym to zrobił... chyba. Pewnie jakoś lepiej da się to napisać. Mankament tego rozwiązania: mogą zostać puste wektory.

0

Dzięki za odpowiedź, chociaż nie za bardzo rozumiem kod, np : "F = fibonacci(n)". Poza tym, moja funkcja licząca ciąg Fibonacciego, jest typu void :)

0

Skoro jest void, to jak chcesz przekazać światu (czytaj: programowi), jakie liczby/liczbę obliczyłeś? :) Hm. Może być też przez referencję/wskaźnik, może tak masz?

F = fibonacci(n) oznacza, że przypisujesz do wektora F wynik wykonania funkcji fibonacci z argumentem n.

0

Moja funkcja wygląda dokładnie tak:

void fibonacci(int n)
{
	long long a = 0, b = 1;

	for (int i = 0; i<n; i++)
	{
		cout << b << " ";
		b += a;
		a = b - a;
		cout << endl;
	}
} 

I wszystko ładnie zostaje przekazane ^^

0

Aa... już rozumiem... ach, to programowanie strukturalne, rzuca mi się na mózg. :D

Tak na poważnie, myślę, że powinieneś napisać przed long long ... deklarację wektora, a potem dodawać do tego wektora, zamiast wypisywać na wyjście cout. Na końcu zwrócić wektor. Wiesz, jak się wektory deklaruje/definiuje?

EDIT: std::vector znasz?

0

No widzisz, tak średnio bym powiedział :c Oznaczyłem wektor, napisałem kawałek kodu, który zapisuje do tablicy i później wypisuje na ekranie, ale nie to co trzeba :( Nie za bardzo wiem, jak zapisać tę ostatnią cyfrę z danej liczby.

0

Znaczy, jak jakiś kod napisałeś nowy, to go od razu wklej tutaj.

Ostatnią cyfrę możesz uzyskać poprzez operację liczba mod 10, tj. operator liczba % 10 w C++. Mam nadzieję, że operator % jest zdefiniowany dla typu long long, jeśli będą jakieś błędy, to pisz.

Zresztą, tak na marginesie, operacja modulo przydaje się do bardzo wielu rzeczy, w szczególności z matematyki dyskretnej (dotyczącej przeliczalnych zbiorów). :)

0

... hmn... ciekawe, ale jeśli chcesz zapisywać te dane to twoja funkcja MUSI zwracać w jakiś sposób te liczby, jak już dojdziesz to tego jak chcesz je zwracać to robisz tak jak napisał @Michał Bodziony

0

Zmieniłem funkcję ciągu na :

 int fibonacci(int n)
{
	if (n == 0) return 0;
	if (n == 1) return 1;
	return fibonacci(n-2) + fibonacci(n-1);
	
}

oraz dodałem drugą funkcję :

int ostatnia(int n)
{
	return n % 10;
}
 

Teraz się tylko zastanawiam, jak zapisać te wyniki pierwszej funkcji, żeby użyć drugą i na koniec wypisać je w tabeli.

0

Moja rada: nie używaj tutaj tej funkcji z rekurencją, ponieważ przy wyznaczaniu np. 10 liczb fibonacciego, będziesz musiał najpierw obliczyć dla 3. liczby, potem dla 4., potem dla 5... a za każdym razem idziesz od tej liczby do 0 lub 1.

Pomyśl, jak napisać funkcję Fibonacciego, która będzie używać for - jak już raz wyżej napisałeś, tylko że tamta działa źle (wyświetla 1 i same 0). Podpowiem: potrzebna jest trzecia zmienna (np. c).

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