Fibonacciho posloupnost – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Fibonacciho posloupnost – C / C++ – Fórum – Programujte.comFibonacciho posloupnost – C / C++ – Fórum – Programujte.com

 

lma220
Duch
5. 12. 2009   #1
-
0
-

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

Nahlásit jako SPAM
IP: 88.102.231.–
KIIV
~ Moderátor
+43
God of flame
5. 12. 2009   #2
-
0
-

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)

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
lma220
Duch
5. 12. 2009   #3
-
0
-

no presne takto to ja chapu... ale porad se mi nedari napsat tu metodu (musi to byt resene rekurzivne)...

Nahlásit jako SPAM
IP: 88.102.231.–
Bald3rr0
Super člen
5. 12. 2009   #4
-
0
-

To lma22 :

void FibbRozklad(int nNum) {

int nMax = NajdiNejvetsiCisloKtereLzeOdecist(nNum);
if(nNum - nMax > 0) {
VypisNaVystup(nNum - nMax, " + ");
FibbRozklad(nNum - nMax);
}
}
Takle by to mělo jít ;)

Nahlásit jako SPAM
IP: 82.100.0.–
KIIV
~ Moderátor
+43
God of flame
5. 12. 2009   #5
-
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;
}

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
lma220
Duch
5. 12. 2009   #6
-
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;
}

Nahlásit jako SPAM
IP: 88.102.231.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 47 hostů

Podobná vlákna

Fibonacciho posloupnost — založil lenula

Fibonacciho posloupnost — založil pav

Fibonacciho čísla — založil laney10

Fibonacciho postupnosť — založil Peto

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý