同じコードのはずなのに結果が違います...

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

同じコードのはずなのに結果が違います...

#1

投稿記事 by ちはやふる » 10年前

はじめまして.ちはやふるです.

現在,C言語で2次元配列の掛け算を勉強中なのですが,同じコードのはずなのに結果が違うという不思議な現象に悩んでいます...
恐らくコードが違うから結果が違うと思うのですが,全然見つかりません.
とてもモヤモヤして気になってしょうがないのですが,どなたか間違いを探して下さらないでしょうか...

gccでコンパイルしています.
OSはwin7 Ulti です.

宜しくお願い致します.

--------------------------------------
正しい結果が表示されるコード

コード:

#include<stdio.h>

int main(void)
{
	int i,j,k;
	int mx[2][3]={1,2,3,4,5,6};
	int my[3][2]={1,5,5,3,8,1};
	int mz[2][2]={0};

	for(i=0;i<2;i++)
	{
		for(j=0;j<2;j++)
		{
			mz[i][j]=0;

			for(k=0;k<3;k++)
			{
				mz[i][j] += mx[i][k] * my[k][j];
			}
		}
	}

	for(i=0;i<2;i++)
	{
		for(j=0;j<2;j++)
		{
			printf("%3d",mz[i][j]);
		}
	printf("\n");

	}

return(0);
}

間違った結果が表示されるコード

コード:

#include<stdio.h>

int main(void)
{
	int i,j,k;
	int mx[2][3]={1,2,3,4,5,6};
	int my[3][2]={1,5,5,3,8,1};
	int mz[2][2]={0};
	
	for(i=0;i<2;i++)
	{
		for(j=0;j<2;j++)
		{
			mz[i][j]=0;

			for(k=0;k<3;k++)
			{
				mz[i][j] += mx[i][k] * my[k][j];
			}
		}
	}

	for(i=0;i<2;i++);
	{
		for(j=0;j<2;j++)
		{
			printf("%3d",mz[i][j]);
		}
	printf("\n");

	}

return(0);
}
どこが違うのでしょうか...

アバター
a5ua
記事: 199
登録日時: 13年前

Re: 同じコードのはずなのに結果が違います...

#2

投稿記事 by a5ua » 10年前

23行目が違います。

前者:
for(i=0;i<2;i++)

後者:
for(i=0;i<2;i++);

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 同じコードのはずなのに結果が違います...

#3

投稿記事 by みけCAT » 10年前

このような間違いを探すときは、diffコマンドを使うといいと思います。
Webブラウザ上で使えるものもあります。
http://labs.ceek.jp/diff/
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ちはやふる

Re: 同じコードのはずなのに結果が違います...

#4

投稿記事 by ちはやふる » 10年前

皆様本当にありがとうございました.
とてもスッキリしました.

また,間違いを探すことが出来るサイトを教えていただいたみけCATさんにもお礼申し上げます.

これからもC言語の勉強に励みたいと思います.
本当にありがとうございました.

閉鎖

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