注册 登录
编程论坛 C++教室

[求助]一个关于斐波纳契数列验证黄金分割的程序

yandongdido 发布于 2007-09-14 11:58, 737 次点击

在验证上述问题是我编写如下:
#include<iostream.h>

void main()
{
double fn1,fn2,fn3;
int i,n;

cout<<"请输入你要进行个数:";
cin>>n;

double a[n];

fn1=fn2=1;
a[0]=fn1;
a[1]=fn2;
cout<<"第1个数是:"<<fn1<<"\n";
cout<<"第2个数是:"<<fn2<<"\n";

for(i=3;i<n;i+=3)
{
fn3=fn1+fn2;a[i-1]=fn3;
fn1=fn3+fn2;a[i]=fn1;
fn2=fn1+fn3;a[i+1]=fn2;

}
cout<<"现在验证黄金分割的比率是0.618";

for(i=0;i<n;i++)
{
if(a[i+1]/a[i]==0.618)
cout<<"验证成功!";
else
cout<<"失败!";
}

return ;
}
谁能帮我看看 有是什么问题啊 就是不能执行可执行文件啊

8 回复
#2
yandongdido2007-09-16 16:33
请大家帮帮忙啊
#3
爱以走远2007-09-16 18:25

return ; 忘拉返回值
#4
suikong2007-09-16 19:51
[CODE]

#include<iostream.h>

void main()
{
double fn1,fn2,fn3;
int i,n;

cout<<"请输入你要进行个数:";
cin>>n;

double a[n]; 这里数组大小应该是个定值,不能用变量,可换成a[100]。

fn1=fn2=1;
a[0]=fn1;
a[1]=fn2;
cout<<"第1个数是:"<<fn1<<"\n";
cout<<"第2个数是:"<<fn2<<"\n";

for(i=3;i<n;i+=3)
{
fn3=fn1+fn2;a[i-1]=fn3;
fn1=fn3+fn2;a[i]=fn1;
fn2=fn1+fn3;a[i+1]=fn2;

}
cout<<"现在验证黄金分割的比率是0.618";

for(i=0;i<n;i++)
{
if(a[i+1]/a[i]==0.618)//这里应该是a[i]/a[i+1],你弄反了,另外0.618是个约数,你永远也不可能用这个式子求出来
cout<<"验证成功!";
else
cout<<"失败!";
}
return ;main()是void型的,此句多余。
}

[/CODE]
#5
yandongdido2007-09-16 22:43

哦 谢谢了
在那个a[n]中的n不也是一个输入的值吗

#6
HJin2007-09-17 00:52

you have two options to allocate the memory for the int buffer

Option 1: (static allocation)

int a[100];

or

#define N 100
int a[N];

or

const int N=100;
int a[N];

Option 2: (dynamic allocation)

int* a;
int n=100;
a = new int[n]; // C++

or

a = (int*)malloc(n*sizeof(int)); // C

#7
yandongdido2007-09-17 08:03
哦听了楼上的收益非浅啊
但我想要按用户的要求来分配存储空间
这样可以节省空间把
#8
HJin2007-09-17 10:16
read more about static allocation and dynamic allocation:

both have advantages and disadvantages.

You can search bc-cn in both C forum and this C++ forum.
#9
yandongdido2007-09-18 12:18

哦好的谢谢楼上的版主

1