3

アスタリスク(*)を使ってX字の形を描くプログラムを書きたい

#include "stdafx.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[]){
  int i, j;

  for(i = 1; i <= 9; i++){
    for(j = 1; j <= 12; j++){
      if(i == j){
        cout << "***";
      }else{
        cout << " ";
      }
    }
    cout<< endl;
  }

  return 0;
}

私はプログラミングに非常に慣れていません

私は (\) だけを作った

***------***
-***----***-
--***--***--
---******---
--***--***--
-***----***-
***------***  

それは私が今までやっていたことです

include "stdafx.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int i, d, a=1,b=12,c;
for(i = 1; i <= 6; i++)
{
for (d=1; d<i;d++)  {cout <<" ";}
cout<<"***";
for (c=a+1; c<b;c++) {cout <<" ";}
{cout<<"***";}
for(b=12-i;b<i;b++) 
{cout<<"***";}
cout<<endl;
a++;
}
return 0;
}       

(\//) の上部を [スペース][ ][スペース][ ]の3 つの部分に分割しました

4

8 に答える 8

3

次の関数/メソッドを Java で記述しました。これを c++ に変換できます。

public static void printX(int x) {
    char[] chars = new char[x];
    for (int i = 0; i < x; i++) {
        chars[i] = '*';
        chars[x - 1 - i] = '*';
        for (int j = 0; j < x; j++) {
            if (j == i || j == (x - 1 - i)) {
                continue;
            }
            chars[j] = ' ';
        }
        System.out.println(new String(chars));
    }

}

上記の関数/メソッドを printX(5); として呼び出すと、出力は 5x5 のサイズで X 文字を含みます。

*   *
 * * 
  *  
 * * 
*   *
于 2012-04-10T11:43:46.297 に答える
1
**** ****
 *** ***
  ** **
   * *
  ** **
 *** ***
**** ****

最初に、私の非常に不均一な X を許してください。初心者としてのあなたのために、スプーンでコードをフィードするのではなく、熟考するためのアルゴリズムを提供します。

  • インタプリタは、すでにプリンタになっている行に戻る方法を知りません。したがって、ループの 1 回の反復で X の両側を描画する必要があります。

  • その後、星の数を減らし (star--)、線 # 2 を引きます。

  • 星が 0 になる中間点まで繰り返します。

  • コードで星が 0 であることを確認したら、同じループから開始しますが、今回は各反復で star++ を使用します。

  • これは、スターの開始カウント、つまり私の場合は 4 まで繰り返されます。

問題がある場合は、サイトにコードを投稿できます:)

于 2012-04-10T10:20:43.633 に答える
0

You shall dynamically evaluate the spacing areas in each row. Draw manually desired shape on piece of paper and try to create function, which takes as an argument the row number and returns amount of spaces required in the specific row. For example:

*   *
 * * 
  *
 * *
*   *

The amount of spaces in each row equals:

0 [*] 3 [*]
1 [*] 1 [*]
2 [*] 
1 [*] 1 [*]
0 [*] 3 [*]

Note, that inside each row you'll need two loops: first for the initial and middle spaces.

于 2012-04-10T10:22:01.950 に答える
0
#include "stdafx.h"
#include <iostream>

using namespace std;

int main(int argc, char* argv[])
{
int  i, d, a=1,b=12,c ,e=1;
        for(i = 1; i <= 6; i++)
            {
                for (d=1; d<i;d++) {cout <<" ";}
                cout<<"***";
                for (c=a+1; c<b;c++) {cout <<" ";}
                {cout<<"***";}
                for(b=12-i;b<i;b++) 
                {cout<<"***";}
                cout<<endl;
                a++;
        }
for( i = 1; i <= 3; i++)
        {
            for ( d=6; d>i;d--) {cout <<" ";}
            cout<<"***";
            for (c=0; c<e-1;c++) {cout <<"  ";}
            {cout<<"***";}
            cout<<endl;
            e++;
    }

return 0;
}   
于 2012-04-11T08:31:39.867 に答える
0
#include<iostream>
using namespace std;
int main()
{
    int i, j;
    for(i = 1;i<= 5;i++)
    {
        for(j = 1;j<= 5;j++)
        {
            if((i == j)||(j==(5+1)-i))
            {
                cout << "*";
            }
            else{   
                cout << " ";
            }
        }
        cout<< endl;
    }
    system("pause");
}
于 2015-04-26T13:45:57.510 に答える
0

私が20年前に書いた解決策(私がまだ学んでいたとき):

  • 行と列の配列を作成します。char screen[80][25];
  • すべてのエントリを' '
  • 設定して x,y に「点を描く」screen[x][y]='*';
  • 完了したら、2080 回呼び出して全体をレンダリングします。(キャラクターは2000回、 は80回)screen[80][25]coutendl

あなたの場合、あなたは を描く方法を知っています\。これを簡単に適応させることができます。/しかし、私の方法では、同じscreen配列にa を描画できます。/完了すると、オーバーラップがあり\、最後のステップでは次のようになります。X

円を描く必要があったので、この方法を使用しましたが、それは非常に困難です。そして、はい、最近はおそらく使用するでしょうstd::vector<std::string> screenが、当時の画面は実際には80x25でした:)

于 2012-04-10T11:16:09.007 に答える
-1
#include "stdafx.h"
#include <iostream>
using namespace std;;


int _tmain(int argc, _TCHAR* argv[])
{
    int i,k,j;
    for (i=1;i<8;i++)
    {
        for (int k=0;k<i;k++)
        {
            cout<<" ";
        }
        cout<<"*";
        for (int k=8;k>i;k--)
        {
            cout<<"  ";
        }
        cout<<"*";
        cout<<endl;
    }
    for (i=1;i<8;i++)
    {
        for (int k=8;k>i;k--)
        {
            cout<<" ";
        }
        cout<<"*";

        for (int k=0;k<i;k++)
        {
            cout<<"  ";
        }
        cout<<" *";
        cout<<endl;
    }

    system("Pause");
    return 0;
}
于 2017-08-16T06:01:08.643 に答える