PDA

Tam Sürümünü Görmek İçin : C ile Fibonacci


sakruh
21/10/2007, 06:09
merhaba arkadaslar,

C ile 0<=x<=46 araliginda i'nci sayiyi bulmaya calisan bi program yaziyorum. Ancak bir sorunum var ve program calismiyor. Daha dogrusu compile edebiliyorum, ama surekli Found uyarisi aliyorum ve sayiyi ekrana yazmiyor.

#include <stdio.h>
#define SIZE 46

int searchValue ( const int array [], int val, int size);

int main(void)
{

int x[SIZE];
int i;
int element;
int value;

for (i=0; i < SIZE; i++) {

x[i] = x[i-1] + x[i-2];

}

scanf ("%d", &value);
element = searchValue (x, value, SIZE);

if (value != -1) {
printf ("Found\n", element);
}
else {
printf ("Not found\n");
}

system("PAUSE");
return 0;
}

int searchValue ( const int array [], int val, int size)
{
int n;

for (n=0; n < size; ++n) {

if (array[n] == val) {
return n;
}
}
return -1;
}


Euclides
21/10/2007, 11:31
C ile 0<=x<=46 araliginda i'nci sayiyi bulmaya calisan bi program yaziyorum.
Açıkcası amacını tam anlamadım
x[i] = x[i-1] + x[i-2];
x[0] = x[-1] + x[-2] indis hatası

element = searchValue (x, value, SIZE);
if (value != -1) {
searchValue bu noktada işlevsiz.

ortug
21/10/2007, 11:39
Yapmak istediğin i. sayıyı bulmak deil kodlamana göre. Fibonacci dizisinde verdiğin sayının kaçıncı olduğunu bulmak istiyorsun:

i'yi, 2 den başlatarak döngüye sokman lazım. x[0] ve x[1] için değerleri kendin atamalısın.
for (i=0; i < SIZE; i++)
{
x[i] = x[i-1] + x[i-2];
}

value değişkeni yerine element yazmalısın. Element derken sayının değerini kastediyorsan value değişkeninde ve x[element] değişkeninde değer saklı
if (value != -1) {
printf ("Found\n", element);
}
else {
printf ("Not found\n");
}

sakruh
21/10/2007, 12:15
tesekkurler arkadaslar. hallettim...