⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1003.cpp

📁 数值分析的c语言几种算法实现
💻 CPP
字号:
 #include <stdio.h>
#define Max_size 10000 /* max number of dishes */
void Price( int n, double p[] );
int main()
{
    int n, i;
    double p[Max_size];
    while (scanf("%d", &n)!=EOF) {
       for (i=0; i<n; i++)

           scanf("%lf", &p[i]);
       Price(n, p);

       for (i=0; i<n; i++)

           printf("%.2f ", p[i]);

       printf("\n");
    }    return 0;
}
//助教,这是书上的一个模块
#include <iostream>
#include <cmath>
using namespace std;
void Price( int n, double p[] )
{
/*if(n==3)
{
    double w=(p[0]+p[1]+p[2])/3;
    p[0]=(p[0]*2-w)/3;
    p[1]=(p[1]*2-w)/3;
    p[2]=(p[2]*2-w)/3;
}
else {
*/
double  q[10001];
double  u[10001];
double  t[10001];
double  h[10001];
double  g[10001];
double a[10001];
double b[10001];
double c[10001];
double d[10001];
double x[10001];

int i;

for(i=0;i<n;i++){
    a[i]=0.5;
    b[i]=2;
    c[i]=0.5;
    d[i]=p[i];
}
double pp = b[0];

q[0]= - c[0]/pp ;
t[0]= - a[0]/pp;
u[0]= d[0]/pp;

for(i= 1;i<n-1;i++ )
{
  pp = a[i]* q[i- 1]+ b [i];
  u[i]= (d[i]- a[i]* u [i- 1])/pp;
  q[i]= - c[i]/pp ;
  t[i]= - a[i]* t[i- 1]/pp;
}
  h [n - 1]= (d [n - 1]- a[n - 1]* u [n - 2])/(a[n - 1]* (q[n - 2]+ t[n - 2])+ b[n - 1]);
  g[n - 1]= - 1* c[n - 1]/(a[n - 1]* (q[n - 2]+ t[n - 2])+ b[n - 1]);
  h[n - 2]= u[n - 2]+ (q[n - 2]+t[n - 2])* h [n - 1];
  g[n - 2]= (q[n - 2]+ t[n - 2])* g[n - 1];
for(i= n - 3;i> 0;i-- )
{
   h [i]= u[i]+ q[i]* h [i+ 1]+ t[i]* h [n - 1];
   g[i]= q[i]* g[i+ 1]+ t[i]* g[n - 1];
}

  x[0]= (d [0]- c[0]* h [1] - a[0] * h [n -1])/(b [0]+ c[0]* g[1]+ a[0]* g[n - 1]);
for( i= 1;i< n ;i++ )
  x[i]= h[i]+ g[i]* x[0];
for( i=0;i<n;i++)
  p[i]=x[i];

 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -