看帖神器
未名空间
追帖动态
头条新闻
每日新帖
最新热帖
新闻存档
热帖存档
文学城
虎扑论坛
未名空间
北美华人网
北美微论坛
看帖神器
登录
← 下载
《看帖神器》官方
iOS App
,体验轻松追帖。
求教:Frotran code
查看未名空间今日新帖
最新回复:2021年3月15日 8点29分 PT
共 (12) 楼
返回列表
订阅追帖
只看未读
更多选项
阅读全帖
只看图片
只看视频
查看原帖
f
ftmit
3 年多
楼主 (未名空间)
各位大仙,请出手相助,多谢!
1,必须使用fortran,不能使用其他语言,不要问我为啥,问大老板去 :(
2,问题:从一个很大的数组中挑选出符合条件的数值,筛选的条件也很多,为了表达
清楚,简化一下问题如下:
假设:数组A =(0, 1, 2,3,4,5,0, 1,2,3,4,5)
筛选条件1:数组B=(5,-6,-7,8,-9)
筛选条件2:数组C=(-11,12,-13)
2.1:各个筛选条件是独立的,这些条件之间没有关联,并且数组的长度是不一样的。
2.2:数组B中有三个负值,分别为B(2),B(3)和B(5)
2.3:数组C中有两个负值,分别为B(1)和B(3)
2.4:数组B和数组C的共同点就是在第三个位置上都是负数,那么请把数组A中的数值3挑选出来,即输出A(4)和A(10)
不知道我表达清楚了没有,不是搞CS的,只好上来求救,在线等,灌水paper用,先谢
谢了
B
BroPingtou
3 年多
2 楼
1. 同时遍历B,C ,里面同为负数的index放到indexset里面
2. 遍历A, 把indexset里面对应的A的元素提出来
f
ftmit
3 年多
3 楼
大侠!麻烦您给写一个fortran的例子,我对编程不灵光啊,先谢谢了!
【 在 BroPingtou (ǢŦĦȆȐ) 的大作中提到: 】
: 1. 同时遍历B,C ,里面同为负数的index放到indexset里面
: 2. 遍历A, 把indexset里面对应的A的元素提出来
f
ftmit
3 年多
4 楼
do i = 1, 12 */数组A
do j = 1, 5 */数组B
do k = 1, 3 */数组C
if (B(j).lt.0) then
if (C(k).lt.0) then
write(*,*) A(i) /这里到底怎么才能和j和k联系起来啊?
else
endif
else
endif
enddo
enddo
enddo
【 在 BroPingtou (ǢŦĦȆȐ) 的大作中提到: 】
: 1. 同时遍历B,C ,里面同为负数的index放到indexset里面
: 2. 遍历A, 把indexset里面对应的A的元素提出来
B
BroPingtou
3 年多
5 楼
恁是没看懂!
【 在 ftmit (八戒) 的大作中提到: 】
: do i = 1, 12 */数组A
: do j = 1, 5 */数组B
: do k = 1, 3 */数组C
: if (B(j).lt.0) then
: if (C(k).lt.0) then
: write(*,*) A(i) /这里到底怎么才能和j和k联系起来啊?
: else
: endif
: else
: endif
: ...................
f
ftmit
3 年多
6 楼
我这个想法可能本身就是错的。你不用考虑这个,就是根据上边说的问题,用您自己的想法,给我一个fortran的例子,可以吗?谢谢了。
【 在 BroPingtou (ǢŦĦȆȐ) 的大作中提到: 】
: 恁是没看懂!
H
Huangchong
3 年多
7 楼
为啥非要用fortran? 数学系都可以用python了吧
【 在 ftmit (八戒) 的大作中提到: 】
: 各位大仙,请出手相助,多谢!
: 1,必须使用fortran,不能使用其他语言,不要问我为啥,问大老板去 :(
: 2,问题:从一个很大的数组中挑选出符合条件的数值,筛选的条件也很多,为了表达
: 清楚,简化一下问题如下:
: 假设:数组A =(0, 1, 2,3,4,5,0, 1,2,3,4,5)
: 筛选条件1:数组B=(5,-6,-7,8,-9)
: 筛选条件2:数组C=(-11,12,-13)
: 2.1:各个筛选条件是独立的,这些条件之间没有关联,并且数组的长度是不一样的。: 2.2:数组B中有三个负值,分别为B(2),B(3)和B(5)
: 2.3:数组C中有两个负值,分别为B(1)和B(3)
: ...................
H
Huangchong
3 年多
8 楼
看不懂筛选条件 BC和A什么意思?
【 在 ftmit (八戒) 的大作中提到: 】
: 各位大仙,请出手相助,多谢!
: 1,必须使用fortran,不能使用其他语言,不要问我为啥,问大老板去 :(
: 2,问题:从一个很大的数组中挑选出符合条件的数值,筛选的条件也很多,为了表达
: 清楚,简化一下问题如下:
: 假设:数组A =(0, 1, 2,3,4,5,0, 1,2,3,4,5)
: 筛选条件1:数组B=(5,-6,-7,8,-9)
: 筛选条件2:数组C=(-11,12,-13)
: 2.1:各个筛选条件是独立的,这些条件之间没有关联,并且数组的长度是不一样的。: 2.2:数组B中有三个负值,分别为B(2),B(3)和B(5)
: 2.3:数组C中有两个负值,分别为B(1)和B(3)
: ...................
H
Huangchong
3 年多
9 楼
因为BC 第三个都是负值就把A里的3都拿出来?那不就是先比较BC找到想要的数字 然
后把A过一遍 数字对了就存序号吗?
H
Huangchong
3 年多
10 楼
fortran77很简单的 看几小时就会了 关键是要自己主动去学 不要觉得很难
【 在 ftmit (八戒) 的大作中提到: 】
: 大侠!麻烦您给写一个fortran的例子,我对编程不灵光啊,先谢谢了!
z
zeami
3 年多
11 楼
这么怀旧的老板叔喜欢。你告诉他你用awk写,他肯定同意
下面是六年前给别人举的一个例子,你改改 && 前后的条件就能用
创建文件夹 C:/Data/20150202,把所有原始测试结果放进去,
比如7800个*.out文件
在这里下载并安装Cygwin B20
https://www3.cs.stonybrook.edu/~alee/g++/g++.html
把下面两行########################里的东西存成文件"a2.awk"
放到C:/Data/20150202里面
########################
BEGIN {
{fileno=0}
{printf " #|%12s|%12s|%12s|%22s\n","Freq","Mag","Ph","File"}
}
{ if (FNR==1) {
{FileNo=FileNo+1 }
}
}
/30./,/10;/ {
if ($2<=0. && $3>-50.) {
a1=$1
a4=$4
a5=$5
{printf "%4i|",FileNo}
{printf "%12f|%12f|%12f|%22s\n",a1,a4,a5,FILENAME}
}
}
########################
把这个拷贝到桌面 C:\cygnus\cygwin-b20\cygnus.bat
双击点开,然后在$符后输入(不包括$符自己):
$mount
$cd C:/Data/20150202
$awk -f a2.awk *.out>Results_a2.txt
(这个*.out你要根据实际的文件后缀改)
Results_a2.txt就是你想要的结果
【 在 ftmit (八戒) 的大作中提到: 】
: 我这个想法可能本身就是错的。你不用考虑这个,就是根据上边说的问题,用您自己的
: 想法,给我一个fortran的例子,可以吗?谢谢了。
J
JobWanted
3 年多
12 楼
如果你会任何别的语言,这里有个办法
用那个你会的写好程序得到结果
然后用fortran包装一下:
用fortran 写着程序的code
用fortran,调用系统命令,运行你上面写的那个
done
【 在 ftmit (八戒) 的大作中提到: 】
: 各位大仙,请出手相助,多谢!
: 1,必须使用fortran,不能使用其他语言,不要问我为啥,问大老板去 :(
: 2,问题:从一个很大的数组中挑选出符合条件的数值,筛选的条件也很多,为了表达
: 清楚,简化一下问题如下:
: 假设:数组A =(0, 1, 2,3,4,5,0, 1,2,3,4,5)
: 筛选条件1:数组B=(5,-6,-7,8,-9)
: 筛选条件2:数组C=(-11,12,-13)
: 2.1:各个筛选条件是独立的,这些条件之间没有关联,并且数组的长度是不一样的。: 2.2:数组B中有三个负值,分别为B(2),B(3)和B(5)
: 2.3:数组C中有两个负值,分别为B(1)和B(3)
: ...................
请输入帖子链接
收藏帖子
各位大仙,请出手相助,多谢!
1,必须使用fortran,不能使用其他语言,不要问我为啥,问大老板去 :(
2,问题:从一个很大的数组中挑选出符合条件的数值,筛选的条件也很多,为了表达
清楚,简化一下问题如下:
假设:数组A =(0, 1, 2,3,4,5,0, 1,2,3,4,5)
筛选条件1:数组B=(5,-6,-7,8,-9)
筛选条件2:数组C=(-11,12,-13)
2.1:各个筛选条件是独立的,这些条件之间没有关联,并且数组的长度是不一样的。
2.2:数组B中有三个负值,分别为B(2),B(3)和B(5)
2.3:数组C中有两个负值,分别为B(1)和B(3)
2.4:数组B和数组C的共同点就是在第三个位置上都是负数,那么请把数组A中的数值3挑选出来,即输出A(4)和A(10)
不知道我表达清楚了没有,不是搞CS的,只好上来求救,在线等,灌水paper用,先谢
谢了
1. 同时遍历B,C ,里面同为负数的index放到indexset里面
2. 遍历A, 把indexset里面对应的A的元素提出来
大侠!麻烦您给写一个fortran的例子,我对编程不灵光啊,先谢谢了!
【 在 BroPingtou (ǢŦĦȆȐ) 的大作中提到: 】
: 1. 同时遍历B,C ,里面同为负数的index放到indexset里面
: 2. 遍历A, 把indexset里面对应的A的元素提出来
do i = 1, 12 */数组A
do j = 1, 5 */数组B
do k = 1, 3 */数组C
if (B(j).lt.0) then
if (C(k).lt.0) then
write(*,*) A(i) /这里到底怎么才能和j和k联系起来啊?
else
endif
else
endif
enddo
enddo
enddo
【 在 BroPingtou (ǢŦĦȆȐ) 的大作中提到: 】
: 1. 同时遍历B,C ,里面同为负数的index放到indexset里面
: 2. 遍历A, 把indexset里面对应的A的元素提出来
恁是没看懂!
【 在 ftmit (八戒) 的大作中提到: 】
: do i = 1, 12 */数组A
: do j = 1, 5 */数组B
: do k = 1, 3 */数组C
: if (B(j).lt.0) then
: if (C(k).lt.0) then
: write(*,*) A(i) /这里到底怎么才能和j和k联系起来啊?
: else
: endif
: else
: endif
: ...................
我这个想法可能本身就是错的。你不用考虑这个,就是根据上边说的问题,用您自己的想法,给我一个fortran的例子,可以吗?谢谢了。
【 在 BroPingtou (ǢŦĦȆȐ) 的大作中提到: 】
: 恁是没看懂!
为啥非要用fortran? 数学系都可以用python了吧
【 在 ftmit (八戒) 的大作中提到: 】
: 各位大仙,请出手相助,多谢!
: 1,必须使用fortran,不能使用其他语言,不要问我为啥,问大老板去 :(
: 2,问题:从一个很大的数组中挑选出符合条件的数值,筛选的条件也很多,为了表达
: 清楚,简化一下问题如下:
: 假设:数组A =(0, 1, 2,3,4,5,0, 1,2,3,4,5)
: 筛选条件1:数组B=(5,-6,-7,8,-9)
: 筛选条件2:数组C=(-11,12,-13)
: 2.1:各个筛选条件是独立的,这些条件之间没有关联,并且数组的长度是不一样的。: 2.2:数组B中有三个负值,分别为B(2),B(3)和B(5)
: 2.3:数组C中有两个负值,分别为B(1)和B(3)
: ...................
看不懂筛选条件 BC和A什么意思?
【 在 ftmit (八戒) 的大作中提到: 】
: 各位大仙,请出手相助,多谢!
: 1,必须使用fortran,不能使用其他语言,不要问我为啥,问大老板去 :(
: 2,问题:从一个很大的数组中挑选出符合条件的数值,筛选的条件也很多,为了表达
: 清楚,简化一下问题如下:
: 假设:数组A =(0, 1, 2,3,4,5,0, 1,2,3,4,5)
: 筛选条件1:数组B=(5,-6,-7,8,-9)
: 筛选条件2:数组C=(-11,12,-13)
: 2.1:各个筛选条件是独立的,这些条件之间没有关联,并且数组的长度是不一样的。: 2.2:数组B中有三个负值,分别为B(2),B(3)和B(5)
: 2.3:数组C中有两个负值,分别为B(1)和B(3)
: ...................
因为BC 第三个都是负值就把A里的3都拿出来?那不就是先比较BC找到想要的数字 然
后把A过一遍 数字对了就存序号吗?
fortran77很简单的 看几小时就会了 关键是要自己主动去学 不要觉得很难
【 在 ftmit (八戒) 的大作中提到: 】
: 大侠!麻烦您给写一个fortran的例子,我对编程不灵光啊,先谢谢了!
这么怀旧的老板叔喜欢。你告诉他你用awk写,他肯定同意
下面是六年前给别人举的一个例子,你改改 && 前后的条件就能用
创建文件夹 C:/Data/20150202,把所有原始测试结果放进去,
比如7800个*.out文件
在这里下载并安装Cygwin B20https://www3.cs.stonybrook.edu/~alee/g++/g++.html
把下面两行########################里的东西存成文件"a2.awk"
放到C:/Data/20150202里面
########################
BEGIN {
{fileno=0}
{printf " #|%12s|%12s|%12s|%22s\n","Freq","Mag","Ph","File"}
}
{ if (FNR==1) {
{FileNo=FileNo+1 }
}
}
/30./,/10;/ {
if ($2<=0. && $3>-50.) {
a1=$1
a4=$4
a5=$5
{printf "%4i|",FileNo}
{printf "%12f|%12f|%12f|%22s\n",a1,a4,a5,FILENAME}
}
}
########################
把这个拷贝到桌面 C:\cygnus\cygwin-b20\cygnus.bat
双击点开,然后在$符后输入(不包括$符自己):
$mount
$cd C:/Data/20150202
$awk -f a2.awk *.out>Results_a2.txt
(这个*.out你要根据实际的文件后缀改)
Results_a2.txt就是你想要的结果
【 在 ftmit (八戒) 的大作中提到: 】
: 我这个想法可能本身就是错的。你不用考虑这个,就是根据上边说的问题,用您自己的
: 想法,给我一个fortran的例子,可以吗?谢谢了。
如果你会任何别的语言,这里有个办法
用那个你会的写好程序得到结果
然后用fortran包装一下:
用fortran 写着程序的code
用fortran,调用系统命令,运行你上面写的那个
done
【 在 ftmit (八戒) 的大作中提到: 】
: 各位大仙,请出手相助,多谢!
: 1,必须使用fortran,不能使用其他语言,不要问我为啥,问大老板去 :(
: 2,问题:从一个很大的数组中挑选出符合条件的数值,筛选的条件也很多,为了表达
: 清楚,简化一下问题如下:
: 假设:数组A =(0, 1, 2,3,4,5,0, 1,2,3,4,5)
: 筛选条件1:数组B=(5,-6,-7,8,-9)
: 筛选条件2:数组C=(-11,12,-13)
: 2.1:各个筛选条件是独立的,这些条件之间没有关联,并且数组的长度是不一样的。: 2.2:数组B中有三个负值,分别为B(2),B(3)和B(5)
: 2.3:数组C中有两个负值,分别为B(1)和B(3)
: ...................