プロが教えるわが家の防犯対策術!

このアルゴリズムの問題が解けません。よろしくお願いしますm(__)m

明日、アルゴリズムの多重反復処理のテストがあるのですが、この問題が分かりません。
よろしくお願いします。形は前半定型で専用の記号(ループ)を使った形で教えて欲しいです。


問題

1、0を横一列に10並べる 

2 改行して1を横一列に10並べる

3 同じように改行して5まで繰り返す。

この行程をどのように表現すれば良いですか?


0を横一列に並べる処理は

(0→a)

(a>=10)

(a+1=a)

('0')

( )


だと思うのですが、よろしくお願いしますm(__)m

A 回答 (5件)

抜けがありました、失礼しました。



開始・・・端子記号(ソーセージ型)

[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]・・・ループ端記号(左下部、右下部が斜めの長方形)

終了・・・端子記号(ソーセージ型)
    • good
    • 0
この回答へのお礼

VTClient様、とても丁寧な回答ありがとうございました。

おかげでなんとかテストはクリアできました^^。

表記しにくいのに、詳しく書いていただいて分かりやすかったです。


ありがとうございます!

お礼日時:2007/08/08 19:21

図は無理なので(ここは文字書き込みですから)説明で・・・



開始・・・端子記号(ソーセージ型)

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]: 終了・・・端子記号(ソーセージ型)

がんばってください!
    • good
    • 0

(訂正から)


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]: 終了

流れはこんな感じです。
    • good
    • 0

★アドバイス


>できればフロチャートで書いていただけたら助かります。
 ↑
 その前に 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分まで面倒見ます。
・以上。
    • good
    • 0
この回答へのお礼

Oh-Orange様、言葉足らずですみません。まだC言語を習っていなかったです。だから、whileの意味も分かりません。

いろいろ面倒みてくださってありがとうございます。

これから頑張って勉強します^^。

お礼日時:2007/08/08 19:24

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;
}

でも出来ます。

この回答への補足

回答、大変ありがとうございました。

書き忘れたのですが、まだフロチャートの記号しかならっておらず、
できればフロチャートで書いていただけたら助かります。

補足日時:2007/08/07 22:30
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!