Program w C - wyjaśnienie

kulasz
Użytkownik
Użytkownik
Posty: 6
Rejestracja: 2 kwie 2010, o 16:19
Płeć: Mężczyzna
Lokalizacja: Warszawa

Program w C - wyjaśnienie

Post autor: kulasz »

Witam. Uczę się właśnie programowania i nie wchodzi mi to zbyt dobrze .. Mam napisać kilka programów, m.in taki:
Napisz funkcję liczącą podany wyraz ciągu Fibbonaciego.
Mam taki kod:

Kod: Zaznacz cały

#include <stdio.h>#include<stdlib.h>int main (void){int x, a=0, b=0, c=1;printf ("
Wprowadz liczbe:
");scanf("%d", &x);       if(x == 0) return 0;    for(a; a<x; a++)     {        c += b;        b = c-b;    }printf("
%d
", b);system("pause");return 0;                 } 
Proszę, żeby mi ktoś wytłumaczył skąd się to bierze, a dokładniej:
- po co jest to: a=0, b=0, c=1 przy int x- co to oznacza ??
- pętla for for(a; a<x; a++) - co ona oznacza? dla a mniejszego od x, zwiększamy a... tak? (wiem, ze powinienem poszukac o petli for, ale chciałbym wiedziec co oznacza w tym przypadku)
- co oznacza " c += b; b = c-b;" ?? po co są te wzory??

Wiem co to jest ciąg fibbonaciego, ale jak jest polecenie "oblicz podany wyraz.." to co się robi?? Jak się go liczy? Właśnie o to mi chodzi, żeby wiedzieć skąd się co bierze i jak się liczy ten wyraz..

Przepraszam jak trochę rozgarnięty jestem, ale nie potafiłem się lepiej sprecyzować .. Chcę po prostu zrozumieć zasadę działania tego programu..
wielkie dzieki za pomoc
Ostatnio zmieniony 4 kwie 2010, o 17:47 przez Althorion, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości - dodałem kolorowanie składni.
miodzio1988

Program w C - wyjaśnienie

Post autor: miodzio1988 »

- po co jest to: a=0, b=0, c=1 przy int x- co to oznacza ??
Nowe zmienne ktorym nadajemy wartosc poczatkową.
- pętla for for(a; a<x; a++) - co ona oznacza? dla a mniejszego od x, zwiększamy a... tak? (wiem, ze powinienem poszukac o petli for, ale chciałbym wiedziec co oznacza w tym przypadku)
Poszukasz (poczytasz ) i bedziesz wiedzial
- co oznacza " c += b; b = c-b;" ?? po co są te wzory??
Znajomosc skladni się kłania. Poczyta i się nauczy. Naprawde nie ma co zaczynac pisania jak się skladni nie zna.

I jakim to cudem masz program a nie wiesz o co w nim chodzi? Skad masz ten program? Ksiazka do reki i proponuje zaczac się uczyc.
laurelandilas
Użytkownik
Użytkownik
Posty: 233
Rejestracja: 6 kwie 2010, o 18:10
Płeć: Mężczyzna
Lokalizacja: woj. śląskie
Podziękował: 37 razy
Pomógł: 6 razy

Program w C - wyjaśnienie

Post autor: laurelandilas »

Jeżeli uczysz się programowania dla siebie, lub jakoś "na później" to zalecam nauki C++ i tutorialu "Od zera do gier kodera", znajdziesz na google. Uważam, że C++ > C
Awatar użytkownika
Mariusz M
Użytkownik
Użytkownik
Posty: 6908
Rejestracja: 25 wrz 2007, o 01:03
Płeć: Mężczyzna
Lokalizacja: 53°02'N 18°35'E
Podziękował: 2 razy
Pomógł: 1246 razy

Program w C - wyjaśnienie

Post autor: Mariusz M »

Kod: Zaznacz cały

int fib(int n)
{
   int i,fib0=0,fib1=1;
   for(i=1;i<=abs(n);i++)
  {
       fib0=fib0+fib1;
       fib1=fib0-fib1;
   }
   if(n<0&&n%2!=0) fib0=-fib0;
   if(n<0&&n%2==0) fib0=0;
return fib0;
}
W zmiennych fib0 i fib1 przechowujesz wartości dwóch kolejnych wyrazów ciągu Fibonacciego

Zaczynasz od wyrazu zerowego

\(\displaystyle{ F_{i+1}=F_{i-1}+F_{i}}\)

Aby obliczyć następny wyraz ciągu dodajesz dwa poprzednie
Uaktualniasz wartość poprzedniego elementu

\(\displaystyle{ F_{i}=F_{i+1}-F_{i-1}}\)

Ponieważ w zmiennej fib0 masz następną wartość ciągu
w zmiennej fib1 powinieneś mieć poprzednią wartość ciągu
więc aby uaktualnić wartość wyrazu odejmujesz od następnej
wartości wyrazu aktualną wartość wyrazu
Aby otrzymać wartość n tego wyrazu musisz instrukcję powtórzyć n razy
ODPOWIEDZ