こんにちは。
C言語の学習において、二つの問題がわかりません。。;
ご教示お願いしますorz
①「分布グラフの作成」
* *
* * * *
* * * * * *
-------------------------------
0 1 2 3 4 5 6 7 8 9
横に'*'を並べることはできたのですが、縦に並べるやり方がどうしても浮かびません...。
②「ユークリッドの互除法を用いて最大公約数を求める」
ユークリッドの互除法は何であるかは知っているのですが、こちらもどう書けばよいか浮かんできません...。
答えもしくは、答えを導くヒントを教えていただけませんか?
よろしくお願いします!
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
分布を n[10] に計算できたとします。
/* 横に並べられたのだから、ここまではいいですね? */
ここで、元のグラフの縦軸に値を入れます。
3:* *
2:* * * *
1:* * * * * *
-------------------------------
0 1 2 3 4 5 6 7 8 9
こうすると
3: 分布数が3以上のものに *
2: 分布数が2以上のものに *
1: 分布数が1以上のものに *
となっていることにお気付きでしょうか?
これに気付けば
・最初の行はn[10]の最大値→最大値を求めるプログラムが必要
・最大値から1まで逆順にループ
・対象行1行分の出力
という構成になることがわかります。
この手の問題では、規則を見付けることがカギです。
No.3
- 回答日時:
(2) の考え方
char buff[行数][20]; の様に文字列出力用バッファを用意
memset 等で buff を初期化
for (n = 0; n < 10; n++) {
_ n番目の分布数を勘定する
_ 積み上げグラフとして '*' を何個表示するか計算
_ for (i = 0; i < 計算した個数; i++) {
_ _ buff[(行数-1) - i][n*2] = '*'; // 最下行から個数分の '*' を上書き
_ }
}
for (y = 0; y < 行数; y++) {
_ buff[y] を一行表示
}
No.2
- 回答日時:
(1).
コンソールで表示するならば、行ごとに出力する必要があります。
ですので、縦に伸びる数値グラフを描画するなら
あらかじめ出力用バッファの char 配列を用意して、計算後に纏めて出力するのをオススメします。
バッファは全て空白文字で初期化しておいて、
出力すべき箇所だけ '*' に置換でいかがでしょうか。
(2).
ユークリッドの互除法のアルゴリズムといえば、以下になります。
1. 入力を m, n (m ≧ n) とする。
2. n = 0 なら、 m を出力してアルゴリズムを終了する。
3. m を n で割った余りを新たに n とし、更に元の n を新たに m とし 2. に戻る。
参考) http://ja.wikipedia.org/wiki/ユークリッドの互除法
素直にこれを実装すればよいでしょう。
使用する構文は
* 関数名(引数, ...) { ... }
* while (条件式) { ... }
* 余り = 被除数 % 除数;
* return 戻り値;
No.1
- 回答日時:
(1) 例えば a[0] = 1, a[1] = 0, a[2] = 1, a[3] = 1, a[4] = 0 のときに
* **
-----
12345
と表示させることはできますか?
(2) 「何であるか」は知っててもしょうがないんだけどね (「最大公約数を求める方法」としか言いようもないし). 具体的にどのような操作をしているかは理解できていますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#の問題で2つの整数a,bの最大公約数(GCD)を求めるユークリッドの互除法は,aをbで割った余り 2 2022/06/26 16:52
- 数学 ユークリッドの互除法、合同式の問題について 1 2022/05/08 11:49
- 計算機科学 高校1年の数学です! ユークリッドの互除法です。 写真の左上の問題で、問題集の答えは x=14、y= 1 2023/02/25 16:59
- 大学受験 整数問題 Nを正の整数とする。 N+18がN+2の倍数となるようなNの値の個数を求めたい。 解説に、 1 2022/08/13 12:25
- 哲学 日本語は 言語類型として あたかも始原のごとくである 3 2022/05/29 04:41
- 数学 【 数A 順列 】 問題 A,B,C,D,E,F,Gの7人が1列に並ぶとき, A,Bの2人が間に2人 4 2022/06/19 12:48
- その他(学校・勉強) 中学受験レベルの社会の問題についての質問です。 新潟、千葉、鹿児島のうち乳牛の飼育数の多い県を答える 1 2022/10/22 01:30
- Visual Basic(VBA) 【VBA】もし、値が0だったら左のセルと合わせて削除したい 3 2023/04/20 10:12
- 哲学 日本語は論理表現にふさわしくないか の問題です 4 2022/06/25 03:56
- 統計学 統計:アンケート結果の読み解き方法(カイ二乗検定の必要性の有無) 13 2022/12/03 23:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
詳しくないので、どなたかお教...
-
VBA レジストリの値の読み方に...
-
printfとputcharの違いは
-
MMDでavi出力が出来ない
-
COBOLのMOVEで桁数が異なる場合
-
VBAでテキスト出力時のスペース...
-
プログラムについての質問です...
-
4Kの外部モニターに出力すると...
-
【エクセル、並び替えについて】
-
printfの書式%.*s
-
cout と cerrの違い
-
エクセルで英字と数字を組み合...
-
コンセントの電力は入力と出力...
-
TV出力ポートをOFFにすれば良い...
-
CRC16計算について
-
【PowerPoint VBAの高速化】
-
ACアダプタの適合性・互換性に...
-
\\00.入力先ディレクトリ上でWO...
-
ExcelマクロでIEのHP上のダウン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
MMDでavi出力が出来ない
-
プログラムについての質問です...
-
コンセントの電力は入力と出力...
-
AIに回答させるって
-
OBS配信すると、マイクが途切れ...
-
VBAでテキスト出力時のスペース...
-
cout と cerrの違い
-
アクセスでエクセルに出力する...
-
printfとputcharの違いは
-
ACCESS クエリ→フォーム...
-
VBAのExecメソッドで画面を非表...
-
COBOLのMOVEで桁数が異なる場合
-
テキストファイルから特定の文...
-
VBAで有効数字の設定
-
coutで出力した文字を消去する...
-
Windows Formアプリからコンソ...
-
KEYENCEのシーケンスプログラム...
-
CRC16計算について
おすすめ情報
ご回答ありがとうございます。
(1)ですが、その方法の案がなかなか浮かびません...。
ご回答ありがとうございます。
(2)はできましたが、
(1)の「あらかじめ出力用バッファの char 配列を用意して、計算後に纏めて出力するのをオススメします。バッファは全て空白文字で初期化しておいて、出力すべき箇所だけ '*' に置換でいかがでしょうか。」という部分がわからないです。。;
「テストの点数の分布を作成する」というテーマの場合
先に、入力された得点を0から10の倍数ずつに分布図を作る計算をして、
その後に、一気に'*'を打つということでしょうか?