ページ 11

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

Posted: 2020年7月04日(土) 13:56
by 小野原
一万人分の身長データを小さい順に並べ替える方法がわかりません。
下のはデータが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;
}

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

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

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

Posted: 2020年7月06日(月) 12:46
by 小野原
ファイル処理は入力のみです
txt.ファイルを使います
具体的にどこを修正し
どこに新たにファイル入力のプログラミングを付け加えれば良いのかが分からないです

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

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

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

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

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

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