問題
入力された数(最大10個)を昇順に並び替え、中央値を求めるプログラムを作成せよ。
又、処理結果は改行しながら表示し、中央値には*を併記せよ。
例
1
3
4
6*
8
9
11
この問題なんですが、組み方が全く分かりません。
御教授お願いします。
C言語 中央値を求めるプログラム
Re: C言語 中央値を求めるプログラム
まずは入力された数(最大10個)をそのまま改行しながら表示するプログラムは作れますか?
提示された「例」は*が入っていることから出力であると予想できますが、入力の例は提示できますか?
提示された「例」は*が入っていることから出力であると予想できますが、入力の例は提示できますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: C言語 中央値を求めるプログラム
#include<stdio.h>
int main(void)
{
int input [10];
printf(“%d”,input [1]);
scanf(“%d”,input [1] );
/*これを10まで繰り返す*/
printf(”%d¥n“,input[1])
/*10回繰り返す*/
return 0;
}
入力はあってるでしょうか?
int main(void)
{
int input [10];
printf(“%d”,input [1]);
scanf(“%d”,input [1] );
/*これを10まで繰り返す*/
printf(”%d¥n“,input[1])
/*10回繰り返す*/
return 0;
}
入力はあってるでしょうか?
Re: C言語 中央値を求めるプログラム
ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
昇順に並べるのは、例えばバブルソートを使えばいいでしょう。
中央値は、要素数が奇数の場合は昇順に並べた時の真ん中の要素の値、要素数が偶数の場合は昇順に並べた時の真ん中の要素2個の平均値です。
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
Shion さんが書きました:入力はあってるでしょうか?
- 引用符が全角
- セミコロンが抜けている場所があり、引用符が適切だったとしてもコンパイルが通らない
- 「10回繰り返す」と書いてあるだけでコンパイラに伝わるループが無いので、10回繰り返されない
- printfに未初期化の自動変数の値(不定)を渡しているので、未定義動作になる
- scanfにポインタではなく未初期化の自動変数の値(不定)を渡しているので、未定義動作になり、読み込まれればアクセス違反になる可能性が高い
- (入力ではないが)エスケープシーケンスっぽい所に\(U+005C)ではなく¥(U+00A5)が使われているので、改行にならない
は例えばこんな感じになるでしょう。みけCAT さんが書きました:入力された数(最大10個)をそのまま改行しながら表示するプログラム
/* 入出力関数の宣言を読み込み、使えるようにする */
#include <stdio.h>
/* 入力を受け付ける最大数 */
#define MAX 10
int main(void) {
/* 変数の宣言 */
int input[MAX]; /* 入力を保存する場所 */
int count = 0; /* 入力の数を数える */
int i; /* ループ用 */
/* 入力 */
while (count < MAX && scanf("%d", &input[count]) == 1) count++;
/* 出力 */
for (i = 0; i < count; i++) printf("%d\n", input[i]);
/* 正常終了 */
return 0;
}
中央値は、要素数が奇数の場合は昇順に並べた時の真ん中の要素の値、要素数が偶数の場合は昇順に並べた時の真ん中の要素2個の平均値です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: C言語 中央値を求めるプログラム
データの個数が偶数である場合の中央値の求め方は既出ですが、
その場合、*の付け方はどうするんでしょうね。>質問者さん
中央値を計算するためのネタとなるデータ(2個)に*を付けるんでしょうか。
その場合、*の付け方はどうするんでしょうね。>質問者さん
中央値を計算するためのネタとなるデータ(2個)に*を付けるんでしょうか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。