有一列數,均為1或者0,我要統計不同連續次數的開始、截止位置
比如連續1次的,可寫為If ys_jl(i - 1) = 0 And ys_jl(i) = 1 And ys_jl(i + 1) = 0 Then第一,第三日為0,第二日為1,即為持續一天
If ys_jl(i - 1) = 0 And ys_jl(i) = 1 And ys_jl(i + 1) = 1 And ys_jl(i + 2) = 1 And ys_jl(i + 3) = 1 And ys_jl(i + 4) = 1 And ys_jl(i + 5) = 0 Then,這種第一日為0,第六日為0,中間均為1,即為持續5天的
那么持續10天以上的,肯定不能這么寫,想有沒有簡潔的方法,用回圈或者什么直接得到將10,11,12……以上的寫到一起
uj5u.com熱心網友回復:
參考《編譯原理》中的詞法分析和有限狀態自動機。//有字串
//1_22_333,,4444__55555,_666666
//需要決議為
//1
//22
//333
//_
//4444
//55555
//666666
#include <stdio.h>
char s[]="1_22_333,,4444__55555,_666666";
char c,*p,*p1;
int st;
void main() {
st=0;
p=s;
while (1) {
c=*p;
if (0==c) {
switch (st) {
case 1:printf("_\n"); break;
case 2:printf("%s\n",p1);break;
}
break;//
}
switch (st) {
case 0:
if ('_'==c) { st=0;}
else if (','==c) { st=1;}
else {p1=p; st=2;}
break;
case 1:
if ('_'==c) { st=1;}
else if (','==c) {printf("_\n"); st=1;}
else {p1=p; st=2;}
break;
case 2:
if ('_'==c) {*p=0;printf("%s\n",p1);*p=c;st=0;}
else if (','==c) {*p=0;printf("%s\n",p1);*p=c;st=1;}
else { st=2;}
break;
}
p++;
}
}
//1
//22
//333
//_
//4444
//55555
//666666
uj5u.com熱心網友回復:
不知道這個的原理是什么!!If ys_jl(i - 1) = 0 And ys_jl(i) = 1 And ys_jl(i + 1) = 1 And ys_jl(i + 2) = 1 And ys_jl(i + 3) = 1 And ys_jl(i + 4) = 1 And ys_jl(i + 5) = 0 Then
我想得到的是上條陳述句中ys_jl(i+j) = 1其中,j=10 to 100的陳述句,如何寫到if then 里面,或者用其他方式實作
uj5u.com熱心網友回復:
請高手指點迷津
uj5u.com熱心網友回復:
你的問題描述,真的很難明白具體意思。
我寫了一段代碼,你參考一下:
A列是用亂數函式產生的一串數字;
B列就是不同的“數字”從哪行開始、數字是什么;
C列就是“連續的數字”重復了多少次、在哪行“結束重復”(也就是它的“下一行”是另一個數了)。

uj5u.com熱心網友回復:
說一下:B列、C列是代碼運行后的輸出結果,不是“自己去填寫”的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/67012.html
標籤:VB基礎類
上一篇:VB60如何連接SQL2012
