请敎:如何写程序来实现这样的功能(已经解决)

sh/bash/dash/ksh/zsh等Shell脚本
autocup
帖子: 408
注册时间: 2010-01-23 20:36

请敎:如何写程序来实现这样的功能(已经解决)

#1

帖子 autocup » 2012-01-30 11:08

已经解决,感谢josephyoung
Screenshot.png
此公式是计算重复性误差的
已知:
(1) s的值是在0.00%~2.00%范围内;
(2) C是一个数组,共6个,C的值是在36~44范围内;
想达到的目标:
编写一段程序,将符合(1)(2)要求的所有C数组输出并以文本方式存到home目录下面。

要求:
数组是可以任意组合的,只要s值是在0.00%~2.00%即可。
但是数组不可重复,下面的例子就不允许出现。

代码: 全选

41 41 41 41 42 41
与
41 41 41 42 41 41
正确格式如下:

代码: 全选

.
.
.
41 41 41 41 41 41  0.00%
41 41 41 41 41 42 0.99%
41 41 41 41 42 42 1.25%
.
.
.
44 44 44 43 42 44 1.92%
.
.
.
*^_^*看了《提问的智慧》重新改了改,感谢josephyoung 的建议
*^_^*谁有空就帮帮忙,写一段程序呗,语言无所谓,
最好能方便一些(.sh执行文件最好),本人非计算机专业,对计算机语言了解甚少。
^_^在此谢谢各位了
上次由 autocup 在 2012-01-31 19:27,总共编辑 4 次。
ubuntu
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: 请敎:这样功能怎么样实现

#2

帖子 枫叶饭团 » 2012-01-30 11:11

这个公式只能让我想起一个软件:matlab
头像
cuihao
帖子: 4793
注册时间: 2008-07-24 11:33
来自: 郑州
联系:

Re: 请敎:这样功能怎么样实现

#3

帖子 cuihao » 2012-01-30 11:21

shell么 :em06
python或C倒是好写。
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
头像
月下叹逍遥
论坛版主
帖子: 33994
注册时间: 2010-10-07 14:23
系统: Archdows10
来自: 某系某星某洲某国某省某市
联系:

Re: 请敎:这样功能怎么样实现

#4

帖子 月下叹逍遥 » 2012-01-30 11:22

fortran也可以。。。
浮生七十今三十,从此凄惶未可知
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: 请敎:这样功能怎么样实现

#5

帖子 xiooli » 2012-01-30 11:24

awk 吧,可以实现
头像
ljj_jjl2008
论坛版主
帖子: 14256
注册时间: 2007-09-16 8:29

Re: 请敎:这样功能怎么样实现

#6

帖子 ljj_jjl2008 » 2012-01-30 11:25

楼上,好久不见。
过年好。
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: 请敎:这样功能怎么样实现

#7

帖子 xiooli » 2012-01-30 11:37

ljj_jjl2008 写了:楼上,好久不见。
过年好。
亮晶晶同学新年好啊,其实我一直都是半死不活的在论坛上诶,呵呵
delectate
帖子: 18311
注册时间: 2008-01-09 22:41

Re: 请敎:这样功能怎么样实现

#8

帖子 delectate » 2012-01-30 11:40

不涉及算法,很简单c就可以实现,何必舍近求远用shell。
头像
cjxgm
帖子: 1952
注册时间: 2010-04-23 20:40
系统: Arch Linux
来自: 浙江·杭州
联系:

Re: 请敎:这样功能怎么样实现

#9

帖子 cjxgm » 2012-01-30 11:59

这个应该很简单吧
弄个 wxMaxima 不久都解决了么
Clanjor Prods. | Develop for Developers. (C++, Lua) | 作曲编曲 | 实时渲染引擎
头像
josephyoung
帖子: 158
注册时间: 2011-11-05 18:53
来自: 南极圈

Re: 请敎:这样功能怎么样实现

#10

帖子 josephyoung » 2012-01-30 13:04

将C数据每组一行以空格分隔作为原始数据调用

代码: 全选

#!/usr/bin/awk -f
BEGIN{
    T=6;
    C_min=36;
    C_max=44;
    outfile=ENVIRON["HOME"]"/result.txt";
}
NF==T{
    C_sum=0;
    C_ave=0;
    C_tmp=0;
    for(i=1;i<=T;i++){
	if($i < C_min || $i > C_max)next;
	C_sum+=$i;
    }
    C_ave=C_sum/T;
    for(i=1;i<=T;i++)
	C_tmp+=($i-C_ave)**2;
    s=sqrt(C_tmp/(T-1))/C_ave*100;
    if(s<=2){
	printf("%s  %.2f%%\n",$0,s) >> outfile;
    }
}
上次由 josephyoung 在 2012-01-31 9:51,总共编辑 1 次。
头像
cjxgm
帖子: 1952
注册时间: 2010-04-23 20:40
系统: Arch Linux
来自: 浙江·杭州
联系:

Re: 请敎:这样功能怎么样实现

#11

帖子 cjxgm » 2012-01-30 13:32

好吧,我也动手。
C语言版
[c]/** s.c
* compile: gcc -o s s.c -lm
* usage: ./s > ~/output
* then, type the 6 datas in
*
* by eXerigumo Clanjor
*/

#include <stdio.h>
#include <math.h>

static float c[6];

int main()
{
int i;
for (i=0; i<6; i++)
scanf("%g", &c);

float ave = (c[0] + c[1] + c[2] + c[3] + c[4] + c[5]) / 6.0;
float sum = 0;
for (i=0; i<6; i++)
sum += (c-ave) * (c-ave);
sum = sqrt(sum / 5.0) / ave * 100.0;

printf("%g %g %g %g %g %g %2.2f%%\n", c[0], c[1], c[2], c[3], c[4], c[5], sum);

return 0;
}
[/c]
Clanjor Prods. | Develop for Developers. (C++, Lua) | 作曲编曲 | 实时渲染引擎
头像
月下叹逍遥
论坛版主
帖子: 33994
注册时间: 2010-10-07 14:23
系统: Archdows10
来自: 某系某星某洲某国某省某市
联系:

Re: 请敎:这样功能怎么样实现

#12

帖子 月下叹逍遥 » 2012-01-30 13:53

[fortran]
open(unit=10,file="data.txt")
real c[6],s,avg,sum
sum=0
read(*,*) c
do i=1,6
sum=sum+c
enddo
avg=sum/6
do i=1,6
sum=(c-avg)**2
enddo
s=1/avg*sqrt(sum/5)
print(10,*) (c,i,1,6), s
[/fortran]
浮生七十今三十,从此凄惶未可知
头像
cjxgm
帖子: 1952
注册时间: 2010-04-23 20:40
系统: Arch Linux
来自: 浙江·杭州
联系:

Re: 请敎:这样功能怎么样实现

#13

帖子 cjxgm » 2012-01-30 13:55

使用 wxMaxima

代码: 全选

C: [41, 41, 41, 41, 41, 41];
ave: lsum(j, j, C)/6;
sqrt(lsum((i-ave)^2, i, C)/5)/ave*100;
snap.png
就这么简单 :em09
上次由 cjxgm 在 2012-01-30 13:59,总共编辑 1 次。
Clanjor Prods. | Develop for Developers. (C++, Lua) | 作曲编曲 | 实时渲染引擎
头像
ljj_jjl2008
论坛版主
帖子: 14256
注册时间: 2007-09-16 8:29

Re: 请敎:这样功能怎么样实现

#14

帖子 ljj_jjl2008 » 2012-01-30 13:59

:em06 :em06
学习了!
autocup
帖子: 408
注册时间: 2010-01-23 20:36

Re: 请敎:这样功能怎么样实现

#15

帖子 autocup » 2012-01-30 17:07

cjxgm 写了:这个应该很简单吧
弄个 wxMaxima 不久都解决了么
:em06 全英文的软件好吃力哦,可以把方档发给我吗
ubuntu
回复