Program oparty na ciągu Fibonacciego

0

Witam :) Mam problem z programem, który oparty jest na ciągu Fibonacciego. Tzn. nie wyświetla mi poprawnych wartości na wyjściu tak jak w podanym przykładzie
Zamiast tego wyświetla mi te same wartości które wczytałem. Dlatego nie wiem gdzie mam błąd. Z góry dziękuje za pomoc.

Zadanie do wglądu:

Agnieszka dowiedziała się ostatnio, skąd wziął się ciąg Fibonacciego. Mianowicie, uczony rozważał teoretyczny eksperyment dotyczący szybkości rozmnażania się stada królików przy następujących założeniach:

  • na początku mamy jedną nowo narodzoną parę królików
  • każda nowa para staje się płodna po miesiącu życia
  • każda płodna para ma co miesiąc jedną parę potomstwa
  • króliki są nieśmiertelne.
    Wartość F(n) oznacza po prostu liczbę par królików po n miesiącach.
    Agnieszka zastanawia się teraz, jakie byłoby rozwiązanie analogicznego zagadnienia w przypadku gdyby każda para królików stawała się płodna dopiero po dwóch miesiącach, ale za to miała co miesiąc dwie nowe pary potomstwa.

Przykład

Wejście:

4
0
1
3
4

Wyjście:

1
1
3
5
#include <iostream>
using namespace std;

unsigned int fib(unsigned int n) {
	if (n == 0) {
		return 1;
	}
	if (n == 1 || n == 2) {
		return 1;
	}
	unsigned int a, b;
	a = 0;
	b = 1;
	for (unsigned int i = 1; i < n; i++) {
		swap(a, b);
		b += a;
	}
	return b;
}

int main() {
	int fib[5];
	int n;
	cin >> n;
	int m;
	for (int i = 0; i < n; i++) {
		cin >> m;
		fib[i] = m;
	}
	for (int i = 0; i < m; i++) {
		cout << fib[i] << "\n";
	}
	return 0;
}

P.S Jestem poczatkującym programistą więc za każde błędy z góry przepraszam.

dodanie znaczników <code class="cpp"> - @furious programming

0

Hint: W którym miejscu funkcji main odpalasz funkcję fib?

2
  1. dawaj kod w znaczniki code
  2. popatrz sobie na kod co robisz, nie wywolujesz swojej funkcji (to zapewne dlatego ze)
    2.1) zle nazywasz zmienne i Ci sie pomylilo --> popraw nazwy zmiennych
    2.2) to nie jest Twoj program i nie rozumiesz nic z programowania
  3. co Twoj kod robi to wczytuje do tablicy N elementow (mimo ze jest 5 elementowa) i ta sama tablice wyswietla. Tak, tyle robi Twoj program, pobiera dane i pozniej te same dane wyswietla
0

Jest tablica fib[] i funkcja fib(n). Nie wiem, czy kompilator na to pozwala, ale mimo wszystko nie powinno się stosować identycznej nazwy na różne elementy programu.

Zamiast int fib[5] skorzystaj z vector<int> fib, który jest tablicą z mechanizmem dynamicznej alokacji pamięci w zależności od potrzeb, który jest dostępny w C++, musisz dodać nagłówek #include <vector>. Wtedy czyscisz wektor i dodajesz kolejne liczby do niego. Innym sposobem jest deklaracja int *fib, po wczytaniu ilości liczb zrobisz fib = new int[n], który rezerwuje pamięć na n elementów, a po zakończeniu zrobisz delete[] fib, który zwalnia wcześniej zarezerwowaną pamięć.

`dodanie znaczników ``` - @furious programming

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