2行目から列が一つずれてしまいます。

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

2行目から列が一つずれてしまいます。

#1

投稿記事 by 吉田 » 8年前

明けましておめでとうございます。
初めてこちらで質問いたします、初心者です。
学校の課題で各人のテストの合計点を出し、1位から順に並べ替えるというのをやっているのですが、実行するとなぜか2行目から列がずれてしまいます。

コード:

#include<stdio.h>
#define MEMBER 5
#define SUBJECT 5
int main(void)
{
	int i, j, a, sum[5] = { 0 },temp,temp2;

	int point[MEMBER][SUBJECT] = { { 76, 68, 80, 78, 76 },
{ 82, 78, 81, 80, 78 },
{ 65, 70, 77, 75, 78 },
{ 90, 81, 79, 84, 82 },
{ 77, 92, 84, 79, 80 } };

	for (i = 0; i < MEMBER; i++) {
		for (j = 0; j < SUBJECT; j++) {
			sum[i] += point[i][j];
		}
	}


		for (i = 0; i < MEMBER - 1; i++) {
			for (j = i + 1; j < MEMBER; j++) {
				if (sum[i] < sum[j]) {
					temp = sum[j];
					sum[j] = sum[i];
					sum[i] = temp;
					for (a = 0; a < SUBJECT; a++) {
						temp2 = point[j][a];
						point[j][a] = point[i][a];
						point[i][a] = temp2;
					}

				}
			}
		}

		for (i = 0; i < MEMBER; i++) {
			for (j = 0; j < SUBJECT; j++) {
				printf("%d\t", point[i][j]);

			}printf("%d\t%d\n ", sum[i], i + 1);


		}
	

	return(0);
}

アドバイスお願いします。

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

Re: 2行目から列が一つずれてしまいます。

#2

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

吉田 さんが書きました:実行するとなぜか2行目から列がずれてしまいます。
どういう意味でしょうか?
41行目で空白を出力しているから空白が出力される、ということでしょうか?
(現状の出力と)求める出力を提示していただけるとわかりやすいです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

吉田

Re: 2行目から列が一つずれてしまいます。

#3

投稿記事 by 吉田 » 8年前

みけCAT さんが書きました:
吉田 さんが書きました:実行するとなぜか2行目から列がずれてしまいます。
どういう意味でしょうか?
41行目で空白を出力しているから空白が出力される、ということでしょうか?
(現状の出力と)求める出力を提示していただけるとわかりやすいです。
お返事ありがとうございます。お手数おかけして申し訳ありません。

現状では、
76 68 80 78 76 416 1
76 78 81 80 78 412 2
65 70 77 75 78 399 3
65 81 79 84 82 378 4
65 92 84 79 80 365 5
続行するには何かキーを押してください . . .

のように1列目がずれてしまうのですが、
76 68 80 78 76 416 1
76 78 81 80 78 412 2
65 70 77 75 78 399 3
65 81 79 84 82 378 4
65 92 84 79 80 365 5
続行するには何かキーを押してください . . .

のようにしたいです。

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

Re: 2行目から列が一つずれてしまいます。

#4

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

41行目のprintfでわざわざ空白を出力しているから「ずれてしまう」ので、書式文字列から空白を削除することで空白を出力しないようにすればいいでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

吉田

Re: 2行目から列が一つずれてしまいます。

#5

投稿記事 by 吉田 » 8年前

先ほどの投稿の訂正です。すみません。

現状では,
90 81 79 84 82 416 1
-77 * 92 84 79 80 412 2
-82 * 78 81 80 78 399 3
-76 * 68 80 78 76 378 4
-65 * 70 77 75 78 365 5
続行するには何かキーを押してください . . .

のように1列目がずれてしまうのですが、

(-の部分に数字一つ分と同じ大きさの空白が入ります。でも * のところのタブで作った空白がほかに比べて数字一文字分少なくなるので順位の列はそろいます。

投稿するときに自動で詰められてしまうのを直す方法が分からず-*を使いました。すみません。)
90 81 79 84 82 416 1
77 92 84 79 80 412 2
82 78 81 80 78 399 3
76 68 80 78 76 378 4
65 70 77 75 78 365 5
続行するには何かキーを押してください . . .
と表示したいです。

Math

Re: 2行目から列が一つずれてしまいます。

#6

投稿記事 by Math » 8年前

だから41行を直せば直る

コード:

           }printf("%d\t%d\n", sum[i], i + 1);
と思いますよ。

吉田

Re: 2行目から列が一つずれてしまいます。

#7

投稿記事 by 吉田 » 8年前

みけCATさん、Mathさんありがとうございました。
printfで出力する部分の中に空白を入れてしまっていたことに気づいていませんでした。ありがとうございました。

閉鎖

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