1万人分の身長データを小さい順に並べ替える方法

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

1万人分の身長データを小さい順に並べ替える方法

#1

投稿記事 by 小野原 » 3年前

一万人分の身長データを小さい順に並べ替える方法がわかりません。
下のはデータが4つなので直接数値を入れていますが1万人なのでファイル処理を使います。
正直まったくわかりません。




コード:

#include <stdio.h>

int main(void)
{
	float	temp, h[4]={185.4,172.7,163.1,154.2};
	int	i=0, j;
	
	//データの出力
	for(i=0; i<4; i++)
	{
		printf("%6.1f", h[i]);
	}
	printf("\n");
	
	//並べ替え
	for(j=3; j>0; j--)
	{
		for(i=0; i<j; i++)
		{
			
			if(h[i]>h[i+1])
			{
				temp = h[i];
				h[i] = h[i+1];
				h[i+1] = temp;
			}
		}
		
		//結果の出力
		for(i=0; i<4; i++)
		{
			printf("%6.1f", h[i]);
		}
		printf("\n");
	}
	
	return 0;
}

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

Re: 1万人分の身長データを小さい順に並べ替える方法

#2

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

小野原 さんが書きました:
3年前
一万人分の身長データを小さい順に並べ替える方法がわかりません。
並べ替え自体は、今のコードの処理対象の数を変えるだけでできると思います。
結果の出力の位置も変えたほうがいいかもしれません。
小野原 さんが書きました:
3年前
1万人なのでファイル処理を使います。
「ファイル処理」って、具体的にどのような処理ですか?
入力だけですか?出力もですか?
ファイルのフォーマットはどのような感じですか?テキストですか?バイナリですか?
ファイルは自前で開きますか?それとも(リダイレクトで)シェルに任せますか?
それに合わせてscanf、fscanf、fread、printf、fprintf、fwriteなど、
適切な関数を使って読み(書き)をするようにすればいいでしょう。
また、配列の要素数も1万人に合わせる必要がありそうですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

小野原

Re: 1万人分の身長データを小さい順に並べ替える方法

#3

投稿記事 by 小野原 » 3年前

ファイル処理は入力のみです
txt.ファイルを使います
具体的にどこを修正し
どこに新たにファイル入力のプログラミングを付け加えれば良いのかが分からないです

小野原
記事: 1
登録日時: 3年前

Re: 1万人分の身長データを小さい順に並べ替える方法

#4

投稿記事 by 小野原 » 3年前

みけCAT さんが書きました:
3年前
小野原 さんが書きました:
3年前
一万人分の身長データを小さい順に並べ替える方法がわかりません。
並べ替え自体は、今のコードの処理対象の数を変えるだけでできると思います。
結果の出力の位置も変えたほうがいいかもしれません。
すみません。もう少し具体的に教えてもらえると嬉しいです。
小野原 さんが書きました:
3年前
1万人なのでファイル処理を使います。
「ファイル処理」って、具体的にどのような処理ですか?
入力だけですか?出力もですか?
入力のみです。

ファイルのフォーマットはどのような感じですか?テキストですか?バイナリですか?
テキストです。

ファイルは自前で開きますか?それとも(リダイレクトで)シェルに任せますか?
自前です。種類はtxtです。

それに合わせてscanf、fscanf、fread、printf、fprintf、fwriteなど、
適切な関数を使って読み(書き)をするようにすればいいでしょう。
prntfとscanfしかまだ習っていません。
具体的にどの位置に加えれば良いのでしょうか?

また、配列の要素数も1万人に合わせる必要がありそうですね。

返信

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