• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program ciąg Fibonacciego gdzie jest problem

0 głosów
1,061 wizyt
pytanie zadane 6 września 2015 w C i C++ przez kamilos027 Początkujący (470 p.)

Witam zaczalem uczyc sie z kursu pana Miroslawa Zelenta i dlaczego program nie dziala jak w filmie?

// program wyznaczający liczby fib

#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{
	// deklaracja tablicy na liczby fib
	float fib[1000];

	// ilosc liczb fib do wyznaczenia
	int ilosc_liczb;

	// dwa pierwsze wyrazy to 1
	fib[0] = 1;
	fib[1] = 1;

	// podajemy ile wypisac liczb fib
	cout << "Podaj ile chcesz wypisac licz fib: ";
	cin >> ilosc_liczb;

	// obliczamy liczby fib
	for (int i = 0; i < ilosc_liczb;  i++)
	{
		fib[i] = fib[i - 1] + fib[i - 2];
	}

	// wypisujemy podana ilosc liczb
	for (int i = 0; i < ilosc_liczb; i++)
	{
		cout << "Liczba " << i + 1 << ": " << fib[i] << endl;
	}

	// zlota proporacja
	cout << "Zlota proporacja: " << fib[ilosc_liczb - 1] / fib[ilosc_liczb - 2] << endl;

	// najwieksza liczb fib
	cout << "Najwieksza liczba fib: " << fib[ilosc_liczb - 1];

	return 0;
}

Takie pojawia mi się w konsoli http://s30.postimg.org/mtqbhsmcx/kod.png

Uzywam programu Microsoft Visual Studio Community 2015.

2 odpowiedzi

+1 głos
odpowiedź 6 września 2015 przez Patrycjerz Mędrzec (192,320 p.)
wybrane 6 września 2015 przez kamilos027
 
Najlepsza

Nie używaj typu float. Zmień go sobie na np. unsigned long long int.

komentarz 6 września 2015 przez Patrycjerz Mędrzec (192,320 p.)

Także nadaj początkową wartość zmiennej i w pętlach na 2, a nie 0, bo pierwsze dwie liczby masz. Tak to wychodzisz poza tablicę.

0 głosów
odpowiedź 6 września 2015 przez kamilos027 Początkujący (470 p.)
przywrócone 6 września 2015 przez kamilos027

A moge zrobic long double jak w filmie? Pobralem paczke z bloga i zauwazylem juz blad. Czym rozni sie unsigned long long int od long double?

komentarz 6 września 2015 przez Patrycjerz Mędrzec (192,320 p.)

Typ double jest liczbą zmiennoprzecinkową, czyli posiadającą część ułamkową. Int (integer), jak sama nazwa wskazuje, jest liczbą całkowitą. W tej sytuacji korzystanie z liczb ułamkowych jest bezsensowne, więc używaj liczb całkowitych. Dopisanie long long umożliwia zwiększenie pojemności zmiennej. Dane wyrazy ciągu Fibonacciego nie zawierają wartości ujemnych, więc stosuj też unsigned. Spowoduje to, że zmienna będzie miała większą pojemność, jeśli chodzi o wartości dodatnie.

komentarz 6 września 2015 przez kamilos027 Początkujący (470 p.)

Jak zmienilem na unsigned long long int to wtedy nie dziala obliczanie zlotej proporacji.

komentarz 6 września 2015 przez Patrycjerz Mędrzec (192,320 p.)

Zmień na long double.

Podobne pytania

0 głosów
1 odpowiedź 1,808 wizyt
0 głosów
0 odpowiedzi 752 wizyt
pytanie zadane 3 lutego 2021 w Python przez AgentTecza Obywatel (1,810 p.)
–1 głos
5 odpowiedzi 1,354 wizyt
pytanie zadane 17 kwietnia 2015 w C i C++ przez hakiros54 Obywatel (1,160 p.)

93,743 zapytań

142,684 odpowiedzi

323,305 komentarzy

63,330 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...