- ベストアンサー
アルゴリズムの問題解けません!明日の試験に困っています
- 明日の試験に備えてアルゴリズムの問題を解きたいのですが、困っています。どのように表現すれば良いかわからずにいます。
- アルゴリズムの多重反復処理の問題が分からず困っています。明日のテストに備えて、どうすれば良いか教えてください。
- アルゴリズムの問題を解く必要があるのですが、どのように表現すれば良いか分かりません。明日の試験に向けて助けてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
★アドバイス >できればフロチャートで書いていただけたら助かります。 ↑ その前に while()、for() 文の反復処理を理解していますか? 他にも変数、代入、printf() 関数による表示を理解していますか? 問題はこの辺です。 ・アルゴリズムというよりは C ソースの記述方が分からないんじゃないの? >明日試験があります。 ↑ という事は今まで習ったことで解ける問題が出されるはずです。 何がまだ理解できていないかを教えて欲しいです。 (1)変数の宣言方法 (2)変数の代入または参照の方法 (3)while()、for() による反復の組み方 (4)条件式の記述方 (5)printf()関数による変数の表示方法 (6)その他 番号で補足してくれる助かります。 小テスト: ・本題をアドバイスする前に次の3つの問題を解いて下さい。 (1)変数 a を宣言して 123 という値を代入して下さい。 その後、変数 a を printf() 関数を使って画面に表示して下さい。 (2)変数 a と while() 文を用いて 1~10 までを printf() 関数で表示して下さい。 (3)変数 a、b の2つを利用して掛け算の九九の一覧表示をして下さい。 このとき for() 文を2段使って多重反復処理として記述して下さい。 ・上記の3つの問題をサラリと解いてみて下さい。 解けない場合は何が?どう?分からないかを補足して下さい。 今日の23時59分まで面倒見ます。 ・以上。
その他の回答 (4)
抜けがありました、失礼しました。 開始・・・端子記号(ソーセージ型) ↓ [A]: i←0(初期化);i≦5(条件);i=i+1(増量)… ループ端記号(左上部、右上部が斜めの長方形) ※i>5 ならループを抜けます ↓ [B]: a←1(初期化);a≦10(条件);a=a+1(増量)… ループ端記号(左上部、右上部が斜めの長方形) ※a>10 ならループを抜けます ↓ 数値iを表示・・・定義済み処理記号(左右2重線の長方形) ↓ [B]・・・ループ端記号(左下部、右下部が斜めの長方形) ↓ 改行(改行をする)・・・定義済み処理記号(左右2重線の長方形) ↓ [A]・・・ループ端記号(左下部、右下部が斜めの長方形) ↓ 終了・・・端子記号(ソーセージ型)
お礼
VTClient様、とても丁寧な回答ありがとうございました。 おかげでなんとかテストはクリアできました^^。 表記しにくいのに、詳しく書いていただいて分かりやすかったです。 ありがとうございます!
図は無理なので(ここは文字書き込みですから)説明で・・・ 開始・・・端子記号(ソーセージ型) ↓ i←0・・・処理記号(長方形) ↓ [D]: i≦5(i>5 なら[A]へ)・・・判断記号(ひし形) a←1・・・処理記号(長方形) ↓ [C]: a≦10(a>10 なら[B]へ)・・・判断記号(ひし形) ↓ 数値iを表示・・・定義済み処理記号(左右2重線の長方形) ↓ a←a + 1・・・処理記号(長方形) ↓ [C]へ [B]: 改行(改行をする)・・・定義済み処理記号(左右2重線の長方形) i←i + 1・・・処理記号(長方形) [D]へ [A]: 終了・・・端子記号(ソーセージ型) がんばってください!
(訂正から) int a,i; for (i=0;i=<5;i++) for (a=1;a<=10;a++) printf("%d",i); printf("\r\n"); に訂正します。 *流れは... 開始 ↓ i←0 ↓ [D]: i≦5(i>5 なら[A]へ) a←1 ↓ [C]: a≦10(a>10 なら[B]へ) ↓ 数値iを表示 ↓ a←a + 1 ↓ [C]へ [B]: 改行(改行をする) i←i + 1 [D]へ [A]: 終了 流れはこんな感じです。
int a,i; for (i=0;i=<5;i++) for (a=0;a<=10;a++) printf("%d",i); printf("\r\n"); ではだめでしょうか? 反れますが、 #define N 5・・・最大値 int main() { int a; for (a=0;a<(N+1)*10;a++) if (!a || a%10) printf("%d ",a/10); else printf("\r\n%d ",a/10); return 0; } でも出来ます。
補足
回答、大変ありがとうございました。 書き忘れたのですが、まだフロチャートの記号しかならっておらず、 できればフロチャートで書いていただけたら助かります。
お礼
Oh-Orange様、言葉足らずですみません。まだC言語を習っていなかったです。だから、whileの意味も分かりません。 いろいろ面倒みてくださってありがとうございます。 これから頑張って勉強します^^。