🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

1回答

1066閲覧

配列の予想外の場所に「1」がでてきてしまいます。

akisem

総合スコア11

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2019/10/30 13:35

予想外の場所に「1」がでてきてしまいます。

卒論でハミング符号による誤り検出のシミュレーションをすることになり

まず、7桁の符号割り当てをしたいのですが、以下のコードを実行したところ
ある行から配列の冗長ビット分に確保しておいた場所に1が入り込んできて
悩んでいます。


C

1#include <stdio.h> 2 3#define tate 16 4#define yoko 6 5int hamming1511[tate][yoko]={0}; 6 7void add(int i, int j){ 8 hamming1511[i][j]=(hamming1511[i][j]+1)%2; 9 10 if(hamming1511[i][j]==0){ 11 add(i,j-1);//もし桁上りがあるなら上の桁を見る 12 13 } 14 15 16} 17 18int main(void){ 19 int i,j; 20 21 for(i=1;i<tate;i++){ 22 23 for(j=3;j>=0;j--){ 24 hamming1511[i][j]=hamming1511[i-1][j]; 25 } 26 /*2進数で+1=MSBから再帰的に見ていく*/ 27 add(i,3); 28 29 30 } 31 32 /*閲覧*/ 33 for(i=0;i<tate;i++){ 34 printf("%d :",i+1); 35 for(j=0;j<=yoko;j++){ 36 printf("%d ",hamming1511[i][j]); 37 38 } 39 printf("\n"); 40 } 41 42 return 0; 43}

実行結果は以下です。

1 :0 0 0 0 0 0 0 2 :0 0 0 1 0 0 0 3 :0 0 1 0 0 0 0 4 :0 0 1 1 0 0 0 5 :0 1 0 0 0 0 0 6 :0 1 0 1 0 0 0 7 :0 1 1 0 0 0 0 8 :0 1 1 1 0 0 1 9 :1 0 0 0 0 0 1 10 :1 0 0 1 0 0 1 11 :1 0 1 0 0 0 1 12 :1 0 1 1 0 0 1 13 :1 1 0 0 0 0 1 14 :1 1 0 1 0 0 1 15 :1 1 1 0 0 0 1 16 :1 1 1 1 0 0 0

右から三桁は冗長ビットとして後から手を加える予定なので、いずれの行も000としておきたいのですが、8~15行までなぜか001が出てしまいます。

どうしたらMSBに1がでなくなるか教えていただけると助かります。お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

j=0;j<=yoko;j++とありますが、2次元目は0~yoko-1までです。

投稿2019/10/30 13:41

maisumakun

総合スコア145975

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問