zdravim. vedel by nekdo, jak naprogramovat rozklad cisla(zada uzivatel v intervalu 0 - 10000) na soucet fibonacciho cisel?? tyto cisla (prvnich 20) uz se mi podarilo spocitat jednou metodou a nacpat do pole... ale nevim jak udelat druhou metodu, ktera vyresi ten soucet... je to projekt do skoly a specha to :( diky vsem... pripojil sem zadani... c.6
Fórum › C / C++
Fibonacciho posloupnost
najdes si ty cisla do maximalne toho zadaneho a pak postupne odecitas od nejvetsiho (pokud to tedy jde.. )
mas treba 1 1 2 3 5 8 13 21 34
kdyz zadas 30 tak odectes 21 a vypises (mas 9)
odectes 8 a vypises (mas 1)
odectes 1 a vypises (mas 0)
me se to povedlo dat do jedny funkce :D
#include <stdio.h>
#include <stdlib.h>
int fibonacci(int pred, int act, int * rozklad) {
if ( pred+act > *rozklad ) {
printf("%d = ", *rozklad );
*rozklad -= act;
printf("%d", act);
} else {
fibonacci(act, pred+act, rozklad);
if ( act <= *rozklad ) {
printf(" + %d", act);
*rozklad -= act;
}
}
}
int main(int argc, char *argv[])
{
int x = 6263;
fibonacci(0,1,&x);
printf("\n");
return 0;
}
Hosi diky ze ste se pokusili pomoct. Po nekolika hodinovem teroru se mi to nakonec podarilo dat do kopy uplne sam:-) A funguje mi to spravne... Mozna ten kod neni moc efektivni ale na uplneho zacatecnika myslim dobre :-D
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int Fibonaci(int cislo)
{
if(cislo == 0 || cislo == 1)
return cislo;
return Fibonaci(cislo - 1) + Fibonaci(cislo - 2);
}
int SoucetFibonaci(int Posloupnost[], int cislo, int N)
{
for(int i = N; i > 0; i--)
{
if(Posloupnost[i] > cislo)
return SoucetFibonaci(Posloupnost, cislo, N-1);
else
cout << Posloupnost[i] << " + ";
return SoucetFibonaci(Posloupnost, cislo - Posloupnost[i], N-1);
}
}
int main()
{
int fib = 20;
int cislo;
int Posloupnost[20];
for(int i = 0; i < fib; i++)
{
Posloupnost[i] = Fibonaci(i+1);
}
cout << "\n\nVypis prvnich 20 cisel fibonaciho posloupnosti:\n\n";
for(int i = 0; i < fib; i++)
{
if(i < 10)
cout << "0" << i << ": " << Posloupnost[i] << "\n";
else
cout << i << ": " << Posloupnost[i] << "\n";
}
cout << "\nZadejte cislo ktere chcete rozlozit na soucet Fibonacciho cisel: ";
cin >> cislo;
cout << "\n\nCislo: " << cislo << " = ";
SoucetFibonaci(Posloupnost, cislo, sizeof(Posloupnost) / 4 - 1);
cin.get();
cin.get();
return 0;
}
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Fibonacciho posloupnost — založil lenula
Fibonacciho posloupnost — založil pav
Fibonacciho čísla — založil laney10
Fibonacciho postupnosť — založil Peto
Rozklad na soucet fibonacciho cisel — založil Janča
Moderátoři diskuze