• 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
681 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,040 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,040 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,040 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,040 p.)

Zmień na long double.

Podobne pytania

0 głosów
1 odpowiedź 155 wizyt
0 głosów
0 odpowiedzi 87 wizyt
pytanie zadane 3 lutego w Python przez AgentTecza Obywatel (1,440 p.)
–1 głos
5 odpowiedzi 597 wizyt
pytanie zadane 17 kwietnia 2015 w C i C++ przez hakiros54 Obywatel (1,160 p.)
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

85,082 zapytań

133,883 odpowiedzi

296,819 komentarzy

56,216 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...