标题: [数值计算] 【已解决】批处理文本间交互计算 [打印本页]
作者: JK_m 时间: 2022-5-5 21:47 标题: 【已解决】批处理文本间交互计算
本帖最后由 JK_m 于 2022-5-9 14:56 编辑
考试得分.txt
1,2,3,1,2,1
训练模拟得分.txt
2,3,2,3,2,0
目的:以考试为准检查提高成绩概率,和输出两者相关性报告,【下降得-1分】【平和上升得1分】 [有缺失判平1分]
考试 ①-?,二-1, ③-2, ①-3, ②-1 ,①-2 计做1,1,1,-1,1 ,-1 后面数 减去前数是查看学习提高效果
训练模拟注意以考试为准: 2-?, 3-①, 2-二, 3-③, 2-① ,0-② 1,1,-1,1,1 ,-1 模拟得分减去对应考试得分查看训练效果
训练提高成绩概率 5/6=0.83 ①-?/2_?=1/1=1
二-1/3-①=1/1=1
③-2/2-二=1/1=1
①-3/3-③=-1/1=-1
②-1/2-①=1/1=1
①-2/0-②=-1/-1=1
完成相关报告
1/1,1/1,1/1,-1/1,1/1,-1/-1=1,1,1,-1,1,1
训练提高成绩概率=正效果5/6组数据 5/6=0.833333
祝天天好心情 谢谢了
作者: flashercs 时间: 2022-5-6 06:08
本帖最后由 flashercs 于 2022-5-9 12:11 编辑
- @echo off
- setlocal EnableDelayedExpansion
- cd /d "%~dp0"
- set examfile="考试得分.txt"
- set trainfile="训练模拟得分.txt"
- set recordfile="成绩趋势报告.txt"
- set n=0
- for /f "usebackq delims=" %%A in (%examfile%) do (
- for %%B in (%%A) do (
- set /a n+=1
- set examscore_!n!=%%B
- )
- )
- set /a examscoreubound=n
- set n=0
- for /f "usebackq delims=" %%A in (%trainfile%) do (
- for %%B in (%%A) do (
- set /a n+=1
- set trainscore_!n!=%%B
- )
- )
- set /a trainscoreubound=n
- set prev=0
- for /l %%A in (1,1,%examscoreubound%) do (
- @REM echo examscore_%%A=!examscore_%%A!
- set /a subtract=examscore_%%A-prev
- if !subtract! geq 0 (
- set examtrend_%%A=1
- ) else (
- set examtrend_%%A=-1
- )
- set prev=!examscore_%%A!
- )
- set traintrend_1=1
- for /l %%A in (2,1,%trainscoreubound%) do (
- set /a n=%%A-1
- set /a subtract=trainscore_%%A-examscore_!n!
- if !subtract! geq 0 (
- set traintrend_%%A=1
- ) else (
- set traintrend_%%A=-1
- )
- )
- (
- for /l %%A in (1,1,%trainscoreubound%) do (
- if %%A neq %trainscoreubound% (
- <nul set /p "s=!examtrend_%%A!/!traintrend_%%A!,"
- ) else (
- <nul set /p "s=!examtrend_%%A!/!traintrend_%%A!="
- )
- >nul set /a relationresult_%%A=examtrend_%%A/traintrend_%%A
- )
- set ctr=0
- for /l %%A in (1,1,%trainscoreubound%) do (
- <nul set /p "s=!relationresult_%%A!"
- if %%A neq %trainscoreubound% <nul set /p "s=,"
- if !relationresult_%%A! geq 0 set /a ctr+=1
- )
- set /a ratio=ctr*100/trainscoreubound
- echo.
- echo 训练提高成绩概率:!ctr!/%trainscoreubound%=!ratio!%%
- )>%recordfile%
-
- endlocal
- pause
- exit /b
复制代码
作者: flashercs 时间: 2022-5-6 09:19
改了一下59行,还是用百分比较好.避免100%时出现0.100的情况.
作者: JK_m 时间: 2022-5-6 13:46
本帖最后由 JK_m 于 2022-5-7 05:51 编辑
111111111111111111111111111111111
作者: JK_m 时间: 2022-5-6 17:34
本帖最后由 JK_m 于 2022-5-7 06:06 编辑
111111111111111111
作者: JK_m 时间: 2022-5-7 05:45
本帖最后由 JK_m 于 2022-5-7 06:05 编辑
回复 3# flashercs
300,301,302,303,304,305,306,307,308,309,301,302,303
300,301,302,303,304,305,306,307,308,309,301,302,303
1/1,1/1,1/1,1/1,1/1,1/1,1/1,1/1,1/1,1/1,-1/1,1/1,1/1
=1,1,1,1,1,1,1,1,1,1,-1,1,1
训练提高成绩概率:12/13=0.92
一样的数据显然倒数第三个是错误的!!
[img]链接:https://pan.baidu.com/s/1ntMilKpmgkq6cMw_S7Xk_g?pwd=1467 提取码:1467[/img]
作者: for_flr 时间: 2022-5-7 10:05
- #@&cls&powershell -c "iex(gc '%~0'|out-string)"&pause&exit/b
- $examfile='C:\Users\lenovo\Desktop\test\考试得分.txt'
- $trainfile='C:\Users\lenovo\Desktop\test\训练模拟得分.txt'
- $reportfile='C:\Users\lenovo\Desktop\test\报告.txt'
- $exam=(gc $examfile) -split ","
- $train=(gc $trainfile) -split ","
- $examincrease=$trainincrease=$report=@()
-
- for($i=0;$i -lt $exam.count;$i++){
- if($i -eq 0){$examincrease+="1"}else{
- #依次对比上一次考试分数,大于等于上次则“+1”,(首次直接“+1”)
- if($exam[$i] -ge $exam[$i-1]){$examincrease+="1"}else{$examincrease+="-1"}
- }
- if($train[$i] -ge $exam[$i]){$trainincrease+="1"}else{$trainincrease+="-1"}
- #训练分数依次对比考试分数,大于等于考试分数则“+1”
- $report+=$examincrease[$i]+"/"+$trainincrease[$i]
- #考试对比结果依次与训练对比结果组对
- #没看懂题目“1/1,1/1,1/-1,-1/1,1/1,-1/-1=1,1,-1,-1,1,1”这里面等号后的数字咋来的,暂时忽略...
- }
- "考试提高:"
- $examincrease -join ","
- "训练提高:"
- $trainincrease -join ","
- "相关报告:"
- $report -join ", "
-
- #这里统计训练提高中的“+1”数量,算概率,不知道有没有理解错。
- $increase=($trainincrease -notmatch "-1").count
- $successrate=$increase/$trainincrease.count
- "{0}","{1}","{2:f3}" -f "训练提高成绩概率:","$increase/$($trainincrease.count)=",$successrate
- cmd /c pause
复制代码
训练提高成绩概率 3/5=0.6 ,没看懂这里算式怎么来的。
1/1,1/1,1/-1,-1/1,1/1,-1/-1=1,1,-1,-1,1,1
,没看懂这个等号后面怎么来的。
作者: a80937063 时间: 2022-5-7 12:53
本帖最后由 a80937063 于 2022-5-7 13:07 编辑
回复 7# for_flr
300,301,302,303,304,305,306,307,308,309,301,302,303
300,301,302,303,304,305,306,307,308,309,301,302,303
1/1,1/1,1/1,1/1,1/1,1/1,1/1,1/1,1/1,1/1,-1/1,1/1,1/1
=1,1,1,1,1,1,1,1,1,1,-1,1,1
训练提高成绩概率:12/13=0.92
一样的数据显然倒数第三个是错误的!!注意看图片的箭头变成减号结果放在【/】除号左边
[img]链接:链接:[url]https://pan.baidu.com/s/19oZ8f2yGWLMPDFLp1xglDQ?pwd=1467
提取码:1467[/url] 提取码:1467[/img]
作者: JK_m 时间: 2022-5-8 17:01
回复 2# flashercs
超过6个数据就出错怎么办你代码
作者: JK_m 时间: 2022-5-8 17:03
回复 7# for_flr
您的bat闪退
作者: 523066680 时间: 2022-5-8 20:22
1, 1, 1,-1, 1,-1
1, 1,-1, 1, 1,-1
1, 1,-1,-1, 1, 1
训练提高成绩概率: 4/6 = 0.6667
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,-1, 1, 1
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,-1, 1, 1
训练提高成绩概率: 12/13 = 0.9231
作者: JK_m 时间: 2022-5-9 06:44
给各位道歉了,我重新编辑帖子里。不好意思。我没有说清楚逻辑关系
作者: flashercs 时间: 2022-5-9 12:12
回复 9# JK_m
代码已修改.
作者: JK_m 时间: 2022-5-9 14:22
本帖最后由 JK_m 于 2022-5-10 14:37 编辑
回复 13# flashercs
考试的第一个数据要删除就是结果l
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |