悩んでいます

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
fight

悩んでいます

#1

投稿記事 by fight » 17年前

以下のソースプログラムは行列の成分を入力してエラー確率を入力すると、行列の成分ごとに考えてエラー確率で0と1を入れ替えることを意図しているプログラムです。実行は出来るのですが・・・結果が上手く出ません。アドバイスを頂きたくて投稿しました。よろしくお願いします。
#include <stdlib.h>

#include <time.h>


int main(void){

int a[100][100];

int i, j, m, n;

int pcnt, error;


srand(time(0));

printf("行列 a の行数を入力 : ");

scanf("%d", &m);

printf("行列 a の列数を入力 : ");

scanf("%d", &n);

printf("行列 a の成分を入力 : \n");

for (i = 0; i < m; i++) {

for (j = 0; j < n; j++) {

scanf("%d", &a[j]);

}

}

printf("Error Rate (%%) ? ");

scanf("%d", &pcnt);

for(i = 0; i < m; i++){

for(j = 0; j < n; j++){

error = (int)rand()%100 < pcnt;

if(error) {

if(a[j] == 0) a[j] = 1;

if(a[j] == 1) a[j] = 0;

}

}

}

for(i = 0; i < m; i++){

for(j = 0; j < n; j++){

printf("%d ", a[j]);

}

printf("\n");

}

return 0;

}
[/pre]
例えば#include <stdio.h>

#include <stdlib.h>

#include <time.h>


int main(void){

int a[100][100];

int i, j, m, n;

int pcnt, error;


srand(time(0));

printf("行列 a の行数を入力 : ");

scanf("%d", &m);

printf("行列 a の列数を入力 : ");

scanf("%d", &n);

printf("行列 a の成分を入力 : \n");

for (i = 0; i < m; i++) {

for (j = 0; j < n; j++) {

scanf("%d", &a[j]);

}

}

printf("Error Rate (%%) ? ");

scanf("%d", &pcnt);

for(i = 0; i < m; i++){

for(j = 0; j < n; j++){

error = (int)rand()%100 < pcnt;

if(error) {

if(a[j] == 0) a[j] = 1;

if(a[j] == 1) a[i][j] = 0;

}

}

}

for(i = 0; i < m; i++){

for(j = 0; j < n; j++){

printf("%d ", a[i][j]);

}

printf("\n");

}

return 0;

}
[/pre]
例えば行列の成分を、
0 0 0 0 0 0 0 0 0 0
としてエラー確率を50%としても全く変わらないこともあります。
どこに原因があるのでしょうか?

fight

Re:悩んでいます

#2

投稿記事 by fight » 17年前

すみません。ソースコードを
で囲ったのですが字下げされて表示されませんでした(><)

box

Re:悩んでいます

#3

投稿記事 by box » 17年前

> if(a[j] == 0) a[j] = 1;
>
> if(a[j] == 1) a[j] = 0;

このif文たちによって何をしているかというと、
入力データが0だったらいったん1にしますが、0に戻しています。
つまり、入力データが0だったら、このif文たちによって
何もしていないことになっています。

fight

Re:悩んでいます

#4

投稿記事 by fight » 17年前

>boxさん ありがとうございます!!もう少し考えてみます。

lbfuvab

Re:悩んでいます

#5

投稿記事 by lbfuvab » 17年前

!演算子について調べてみると良いかも知れません。

fight

Re:悩んでいます

#6

投稿記事 by fight » 17年前

>lbfuvabさん ありがとうございます!おかげで問題を解決することが出来ました!!

閉鎖

“C言語何でも質問掲示板” へ戻る