三角形アート

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
リク

三角形アート

#1

投稿記事 by リク » 15年前

こんにちは。皆様、昨日は、大変お世話になりました。そして、今日も訪問させていただきました。
昨日の応用だと思いながらも、
while→for文のピラミッドアート、三角形でまた引っかかってしまいました。
while文の文から抜粋して、それなりに考えてみたといいますか、同じ位置に並ばせてみたのですが・・・アドバイスお願いいたします。

                         *
                         **
                         ***
                         ****
                         *****
                         ******
                昨日の四角形for文の下に作ってみました。

        #include<stdio.h>
        void main(void)
   {
int gyou,retu,atai;
printf("数字を入力してください");
scanf("%d",&atai);
for(gyou=0;gyou<atai;gyou++)
{
for(retu=0;retu<atai;retu++)
{
printf("*");
}
printf("\n");
}

   ココからです→ int dan,kosuu;
printf("数字を入力してください");
rewind(stdin);
scanf("%d",&atai);
for(gyou=0; gyou<atai; gyou++;dan--)
{
for(kosuu=dan; kosuu<atai;kosuu++)
{
printf("*");
}
printf("\n");
}
}

コンパイルしています...
for.cpp

c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 'scanf' の宣言を確認してください。
c:\users\\documents\\\\for.cpp(19) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 'scanf' の宣言を確認してください。
c:\users\documents\\\\.cpp(20) : error C2146: 構文エラー : ')' が、識別子 'dan' の前に必要です。
c:\users\documents\\\.cpp(20) : error C2059: 構文エラー : ';'
c:\users\documents\\\\.cpp(20) : error C2059: 構文エラー : ')'
c:\users\documents\\\\.cpp(21) : error C2143: 構文エラー : ';' が '{' の前にありません。
ビルドログは "file://c:\Users\\Documents\\\\Debug\BuildLog.htm" に保存されました。
for版 - エラー 4、警告 2
========== すべてリビルド: 0 正常終了、1 失敗、0 スキップ ==========

実行結果の場所を見てみたのですが、{などはチェックしたのですが・・・
エラーが表示されてしまいました。


今回、while文をfor文に変えたときに、
     #include<stdio.h>
     void main(void)
   {
     int dan,kosuu;
printf("数字を入力してください");
rewind(stdin);
scanf("%d",&atai);
gyou=0;
dan=atai-1;
while(gyou<atai)
     {
kosuu=dan;
   while(kosuu<atai)
      {
printf("*");
       kosuu++;
  }
   printf("\n");
gyou++;
dan--;
     }
    }


rewind(stdin)とdan--;が今回、四角形と違い困った点です。

上の三角形while文をfor文に自分なりにしてみました。(#include省略します。)


    int dan,kosuu;
printf("数字を入力してください");
rewind(stdin); →このrewind(stdin)がwhile文と同じ位置でいいのかに困りました。    
    scanf("%d",&atai);
  for(gyou=0; gyou<atai; gyou++;dan--) →前回の四角形と違いdan--をこの位置でいいのか困りました。
{
for(kosuu=dan; kosuu<atai;kosuu++)
{
printf("*");
}
printf("\n");
  }

とても長い文章で申し訳ありません。アドバイスしていただけると助かります。

fatens

Re:三角形アート

#2

投稿記事 by fatens » 15年前

>for(gyou=0; gyou<atai; gyou++;dan--)

for 文の中にセミコロン(;)は2回しか入りません。


とりあえず、三角形のみのプログラムにして、正しいインデントで投稿しなおしてください。
あと、rewind(stdin)はいりません。

toyo

Re:三角形アート

#3

投稿記事 by toyo » 15年前

for(gyou=0; gyou<atai; gyou++;dan--)
でセミコロンが3個使われているのが間違いです
forでは ; は2個しか使いません
複数の処理を行いたい場合は , コンマで区切ります
for(gyou=0; gyou<atai; gyou++, dan--)
ならエラーにならないはずです
でもdanの役割は何でしょう
danに値が代入されていないのもまずいです

リク

Re:三角形アート

#4

投稿記事 by リク » 15年前

長い投稿でしたので、次は三角形の文のみにします。

閉鎖

“C言語何でも質問掲示板” へ戻る