教えてください
Re:教えてください
原因はポインタにある・・・のかもしれません。
こんな感じで10回出力してくれたりしませんかね・・・結果確認してないので出来てなかったら言ってください。実際に試してみます。
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ char bin[100]; char bin2[100]; char *p; int pcnt; int error; int i; /* 乱数の初期化 */ srand(time(0)); /* データ入力 */ printf("Noise Rate (%%) ? "); scanf("%d", &pcnt); while(1) { printf("Binary Data ? "); scanf("%s", bin); p = bin; /* 入力情報をコピる */ strcpy(bin2, bin); /* 実行打ち切り */ if( *p != '0' && *p != '1') break; for(i=0; i<10; i++){ /* 入力情報を戻す */ strcpy(bin, bin2); /* 番地を戻す */ p = bin; /* 確率pcnt%でのノイズ混入実行 */ while( *p != '\0' ) { error = (int)rand()%100 < pcnt; if( error ) { if( *p == '0') *p = '1'; else *p = '0'; } p++; } /* 出力 */ printf("Output = %s\n", bin); } } return 0; }
こんな感じで10回出力してくれたりしませんかね・・・結果確認してないので出来てなかったら言ってください。実際に試してみます。
Re:教えてください
>boxさん 本当に恥ずかしいのですが・・・自分で手を加えたのはこれです。
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ char bin[100]; char *p; int pcnt; int error; int i; /* 乱数の初期化 */ srand(time(0)); /* データ入力 */ printf("Noise Rate (%%) ? "); scanf("%d", &pcnt); for(i = 0; i <= 10; i++){ while(1) { printf("Binary Data ? "); scanf("%s", bin); p = bin; /* 実行打ち切り */ if( *p != '0' && *p != '1') break; /* 確率pcnt%でのノイズ混入実行 */ while( *p != '\0' ) { error = (int)rand()%100 < pcnt; if( error ) { if( *p == '0') *p = '1'; else *p = '0'; } p++; } /* 出力 */ printf("Output = %s\n", bin); } } return 0; }
Re:教えてください
>boxさん
携帯からご覧になると、投稿時の添付ファイルが見えないのですが、
プログラムは添付してあるようです。
>fightさん
コードを投稿される場合はプレタグを使っていただけると見易いです。
詳しくは規約をご覧下さい。
携帯からご覧になると、投稿時の添付ファイルが見えないのですが、
プログラムは添付してあるようです。
>fightさん
コードを投稿される場合はプレタグを使っていただけると見易いです。
詳しくは規約をご覧下さい。
Re:教えてください
> 携帯からご覧になると、投稿時の添付ファイルが見えないのですが、
> プログラムは添付してあるようです。
最初の投稿で添付してあったのは、
> 添付してあるソースプログラムはBinary Dataに2進数の文字列を入力すると
> ビットごとにある確率で0を1に、1を0に変更して出力させるものです。
> ある方に作成していただいたのですが・・・
であって、
> これを少し書き換えてBinary Dataを1回入力したら
> 一気に10回実行して出力するようにしたいと思っています。
> 自分でfor文を使用して色々やってみたのですがうまくいきません。
これではないです。
だから、
> その、うまくいかないコードを載せてみる予定はありますか?
と書きました。
> プログラムは添付してあるようです。
最初の投稿で添付してあったのは、
> 添付してあるソースプログラムはBinary Dataに2進数の文字列を入力すると
> ビットごとにある確率で0を1に、1を0に変更して出力させるものです。
> ある方に作成していただいたのですが・・・
であって、
> これを少し書き換えてBinary Dataを1回入力したら
> 一気に10回実行して出力するようにしたいと思っています。
> 自分でfor文を使用して色々やってみたのですがうまくいきません。
これではないです。
だから、
> その、うまくいかないコードを載せてみる予定はありますか?
と書きました。
Re:教えてください
あれ、実行してみると私の思ってるとおり動作しているのですが、この動作は間違ってるのでしょうか
>Binary Dataを1回入力したら一気に10回実行して出力するようにしたいと思っています
入力後、そのデータにノイズ混入シュミレーションを10回繰り返すんですよね。
上記のプログラムそのままです。
>Binary Dataを1回入力したら一気に10回実行して出力するようにしたいと思っています
入力後、そのデータにノイズ混入シュミレーションを10回繰り返すんですよね。
上記のプログラムそのままです。
#######実行結果######## Noise Rate (%) ? 50 Binary Data ? 00000000 ←2進数入力 Output = 11101101 ←以下ノイズが50%で混入 Output = 00101001 Output = 11000110 Output = 10001101 Output = 11101111 Output = 11100010 Output = 00111100 Output = 11111100 Output = 00111011 Output = 11101101 Binary Data ? ←再度入力 #######実行結果2######## Noise Rate (%) ? 10 ←ノイズ混入10% Binary Data ? 00000000 Output = 00100000 Output = 00000001 Output = 00000000 Output = 00100000 Output = 00000000 Output = 00010000 Output = 01000000 Output = 00000000 Output = 00000000 Output = 00001000 Binary Data ?
Re:教えてください
すみません、ご指摘ありがとうございます。
一応知ってはいるのです、間違いに気づいたのは高校時代。
最近、シュミットトリガなるものが授業ででてきて、それこそノイズを除去するのに重要な回路なんですよね(←とくに意味はありません)
間違い意識が薄くなってました・・・orz
間違って一度覚えた事だから意識してないと、今までのノリでやっぱりシュミレーションと書いちゃいます・・・よね?^^;
一応知ってはいるのです、間違いに気づいたのは高校時代。
最近、シュミットトリガなるものが授業ででてきて、それこそノイズを除去するのに重要な回路なんですよね(←とくに意味はありません)
間違い意識が薄くなってました・・・orz
間違って一度覚えた事だから意識してないと、今までのノリでやっぱりシュミレーションと書いちゃいます・・・よね?^^;