教えてください
-
array
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回出力してくれたりしませんかね・・・結果確認してないので出来てなかったら言ってください。実際に試してみます。
-
fight
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さん
コードを投稿される場合はプレタグを使っていただけると見易いです。
詳しくは規約をご覧下さい。
-
box
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文を使用して色々やってみたのですがうまくいきません。
これではないです。
だから、
> その、うまくいかないコードを載せてみる予定はありますか?
と書きました。
-
array
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 ?
-
array
Re:教えてください
すみません、ご指摘ありがとうございます。
一応知ってはいるのです、間違いに気づいたのは高校時代。
最近、シュミットトリガなるものが授業ででてきて、それこそノイズを除去するのに重要な回路なんですよね(←とくに意味はありません)
間違い意識が薄くなってました・・・orz
間違って一度覚えた事だから意識してないと、今までのノリでやっぱりシュミレーションと書いちゃいます・・・よね?^^;
一応知ってはいるのです、間違いに気づいたのは高校時代。
最近、シュミットトリガなるものが授業ででてきて、それこそノイズを除去するのに重要な回路なんですよね(←とくに意味はありません)
間違い意識が薄くなってました・・・orz
間違って一度覚えた事だから意識してないと、今までのノリでやっぱりシュミレーションと書いちゃいます・・・よね?^^;