2012-04-10 7 views
3

を使用してXの文字図形を描画私はアスタリスク(*)を使用して、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; 
}  
012今uptillやったことだ全体のX

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

を作ることができます

は、私は初心者として、あなたのために、私は非常に不均一なX.ご容赦

+1

そして、あなたの質問ですか? – Spook

+0

どのように私はxの形を作ることができますか?私は全体の形ではなく、形全体を作りました(012)。 – TTT

答えて

1
**** **** 
*** *** 
    ** ** 
    * * 
    ** ** 
*** *** 
**** **** 

まず(\ //)に三つの部分 [スペース] [] [スペース] []の上部を分割I algoを与えて、コードをスプーンで送るのではなく、熟考してください。

  • インタープリタは、既にプリンタであった行に戻ってくる方法を知らない。 したがって、ループの1回の反復でXの両辺を描画する必要があります。あなたがあなたの星数(star--)を減少させ、あなたの星はあなたのコードがことを認識0

  • あるときミッドウェイマークまでのライン#2

  • 繰り返しを描く。その後

  • 星は0で、その後同じループで始まりますが、今回は+ +を繰り返します。

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

は何の問題も場合は、サイト:)あなたが動的に各行の間隔領域を評価するもの

0

にあなたのコードを投稿することができます。手作業で必要な図形を紙に描き、関数を作成しよう。関数は行番号を引数としてとり、特定の行に必要なスペースを返す。たとえば、次のように各行のスペースの

* * 
* * 
    * 
* * 
* * 

量が等しく:最初と真ん中のスペースに最初:各行の内部で使用すると、2つのループをする必要がありますことを

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

注意を。

+0

プログラム全体で1つのアスタリスクだけを使用するにはどうすればいいですか? – TTT

0

(私はまだ学んでいた時に)私は20年前に書いたソリューション:

  • は行列の配列を作成し、例えば' '
  • にすべてのエントリを設定することで、それをchar screen[80][25];
  • クリアcout 2080回を呼び出すことにより、全体screen[80][25]をレンダリングし、
  • 行わscreen[x][y]='*';を設定することにより、Y、Xで "ポイントを描きます"。あなたのケースでは(endlのための文字と2000回と80回)

、あなたは\を描画する方法を知っています。あなたはこれを簡単に適応させることができます。しかし私の方法では、同じscreen配列に/を描画することができます。そして、あなたが完了したら、あなたは最後のステップで重複/\を持っている:X

我々は、円を描くように持っていたので、私はこの方法を使用し、それは本当に多くの困難です。そして、はい、今日はおそらくstd::vector<std::string> screenを使用していましたが、スクリーンは本当に80x25でした:)

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文字を含みます。

* * 
* * 
    * 
* * 
* * 
+0

ここには非常に多くの努力の後に解決策があります。H」 の#include 名前空間stdを使用して、 int型のmain(int型ARGC、CHAR * ARGV []) { INT \tはI、D、A = 1、B = 12、C、E = 1; 用\t \tは(D = 1; D I; d--){COUT <<」「;} \t \t \t \tcout << "***"; (; C TTT

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; 
} 
0
int n=11,i=0,k=0,j=0; 
for(i=0;i<n;i++) 
{ 
if(i<(n/2)) 
{ 
    cout<<endl; 
    for(j=0;j<i;j++) 
    { 
     cout<<" "; 
    } 
    cout<<"*"; 
    for(k=n/2;k>i;k--) 
    { 
     cout<<" "; 
    } 
    cout<<"*"; 
} 
else 
{ 
    cout<<endl; 
    for(k=n-1;k>i;k--) 
    { 
     cout<<" "; 
    } 
    cout<<"*"; 
    for(j=n/2;j<i;j++) 
    { 
     cout<<" "; 
    } 
    cout<<"*"; 
} 
} 
+0

このコードは確かに "X"を描いていますが、個々のパーツを説明してOPが理解できるようにしたり、必要に応じて修正することもできます(たとえば、線の太さを変更するなど) – AndyG

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"); 
} 
-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; 
} 
関連する問題