當前位置:編程學習大全網 - 編程語言 - C語言編程求c=sqrt(a*b),d=sqrt(a*c),d2=sqrt(c*b),即新生成的數和前後數開根,依次類推n次

C語言編程求c=sqrt(a*b),d=sqrt(a*c),d2=sqrt(c*b),即新生成的數和前後數開根,依次類推n次

先把數學問題描述清楚,妳裏邊有 n 嗎? 妳求誰?

“新生成的數和前後數開根” 這什麽意思呀? 和妳前邊 算式描述的壹致嗎?

a 1

b 9

c sqrt(1*9)

d1 d2

sqrt(c*a) sqrt(c*b)

d3 d4

sqrt(d2*a) sqrt(d3*b)

d5 d6

sqrt(d4*a) sqrt(d5*b)

****

d(2n+1) d(2n+2)

sqrt(d2n * a) sqrt(d(2n+1) * b)

是不是這樣的

========

#include <math.h>

#include <iostream.h>

double A;

double B;

double fun(int n,double * arr)

{

double an;

double E;

int i=1;

while(i<=n){

E=(i%2)?A;B;

arr[i]=sqrt(arr[i-1]*E]);

i++;

}

return arr[n];

}

int man()

{

int n;

cin>>A>>B;

cin>>n;

double *D;

D=new double[n+1];

D[0]=sqrt(A*B); // C=sqrt(A*B)

fun(n,Arr);

int m=0;

do {

cout<<D[m]<<endl;m++;

}while(m<=n);

}

如果 妳用的 是 C 編譯 器 只需要把

#include <iostream.h> 改成 #include <stdio.h>

輸入輸出 cin>> cout<< 改用 scanf 和printf

============================================

妳的問題出在數學描述上,只要能把數學模型描述清楚實現起來很容易。

妳補充描述中 d3=sqrt(a*d1),d4=sqrt(d1*c),d5=sqrt(c*d2),d6=aqrt(d2*b) 還是沒有看出規律 有沒有打錯?

看是不是這樣:

a 1 = d(-2)

b 9 = d(-1)

c sqrt(1*9) = d0

d1 d2 k=0

sqrt(d0*d(-2)) sqrt(d0*d(-1))

d3 d4 k=1

sqrt(d1*d(-1)) sqrt(d1*d0)

d5 d6 k=2

sqrt(d2*d0) sqrt(d2*d1)

d7 d8 k=3

sqrt(d3*d1) sqrt(d3*d2)

***

d(2k+1) d(2k+2) k

sqrt(dk * d(k-2)) sqrt(dk * d(k-1))

是不是這樣的

========================================================

終於搞明白妳的意思了

下面的程序通過了測試

運行結果::

please input a , b & n :1 100 3

0 1

3 1.77828

2 3.16228

3 5.62341

1 10

3 17.7828

2 31.6228

3 56.2341

0 100

說明

a--0 b--0 初始端點

c--1 第壹次插值點

d--2 第二次插值點

e--3 第三次插值點

f--

...

#include <iostream.h>

#include <math.h>

class List { //用鏈表數據結構來實現

public:

float data; //節點的值

int lev; //節點的級別

List * next;

List * prev;

List(){next=NULL;prev=NULL;lev=0;};

List(float a,int m){data=a;next=NULL;prev=NULL;lev=m;}

void setdata(float a){data=a;};

void insert(List * nod); //鏈表插入節點

void add(List *nod); //添加節點

};

void List::add(List * nod)

{

List *p=this;

while((p->next)!=NULL){

p=p->next;

}

p->next=nod;

nod->prev=p;

}

void List::insert(List *nod)

{

List * p;

p=next;

next=nod;

nod->prev=this;

List * p1=nod;

while((p1->next)!=NULL){

p1=p1->next;

}

p1->next=p;

}

int main()

{

float a,b;

int m,n;

cout<<"please input a , b & n :";

cin>>a>>b>>n;

List * list,* tmp,* p,*q;

list= new List(a,0);

tmp = new List(b,0);

list->add(tmp);

m=1;

while(m<=n){ //第 m 次 插值

p=list;

while((p->next)!=NULL){ //連中每兩個節點之間插入壹個節點

//值為前後兩節點積平方根

tmp=new List(sqrt((p->data)*(p->next->data)),m);

//申請節點,計算節點值

q=p->next;;

p->insert(tmp); //插入節點

p=q;

}

m++; //下壹次

}

p=list;

while(p){

cout<<p->lev<<"\t"<<p->data<<endl;

p=p->next;

}

}

  • 上一篇:各種情況下煙花是怎麽死的?
  • 下一篇:幾種常見的PHP超時處理方法
  • copyright 2024編程學習大全網