2012-04-10 3 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; 
} 

Я очень новичок в программировании

я только сделал (\), как я могу сделать весь X

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

это то, что я сделал uptill Теперь

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

я делится на верхнюю часть (\ //) на три части [пробел] [] [пробел] []

+1

И ваш вопрос? – Spook

+0

как я могу сделать форму x? i только сделал форму (\\) не весь x – TTT

ответ

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

Во-первых, простите мой очень неравномерное X. Для вас, как новичок я выдал бы algo, чтобы вы обдумали, а не ложку, подавая код.

  • Интерпретатор не знает, как вернуться к линии, которая уже была принтером. Следовательно, вам нужно было бы нарисовать обе стороны X на одной итерации цикла.

  • После этого вы уменьшаете вы звезда граф (star--) и рисовать линии # 2.

  • Повторять до середины пути отметки, когда ваши звезды 0.

  • Когда ваш код видит, что звезды равны 0, затем начинаются с одного и того же цикла, но на этот раз star ++ на каждой итерации.

  • Это повторяется до начала отсчета звезды i.e 4 в моем случае.

Если какие-либо проблемы, вы можете разместить свой код на сайте :)

0

Вы должны динамически оценивать распорные области в каждой строке. Нарисуйте вручную желаемую форму на листе бумаги и попытайтесь создать функцию, которая принимает в качестве аргумента номер строки и возвращает количество пробелов, необходимых в конкретной строке. Например:

* * 
* * 
    * 
* * 
* * 

Количество мест в каждой строке равна:

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

Обратите внимание, что в каждой строке вам нужно две петли: первая для начальных и средних пространств.

+0

как я могу сделать это, используя только одну звездочку во всей программе – TTT

0

Решение, которое я написал 2 лет назад (когда я еще учился):

  • Сделать массив строки столбца, например,char screen[80][25];
  • Ясно, установив все записи в ' '
  • «Нарисуйте точку» в точке х, у, установив screen[x][y]='*';
  • Когда это сделано, оказывают весь screen[80][25] по телефону cout 2080 раз. (2000 раз для персонажей и и 80 раз для endl)

В вашем случае, вы знаете, как рисовать \. Вы можете легко адаптировать это. Но с помощью моего метода вы можете нарисовать / в том же массиве 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

вот решение после стольких усилий #include "stdafx.ч» #include использования патезраса; INT основных (INT ARGC, символ * ARGV []) { INT \t я, д, а = 1, B = 12, с, е = 1; \t \t для (я = 1; г <= 6; я ++) \t \t \t { \t \t \t \t для (г = 1, D ; D--) {суд <<»«;} \t \t \t \t cout << "***"; \t \t \t \t для (с = 0; с <е-1; C++) {соиЬ << " ";} \t \t \t \t {соиЬ <<" ***";} \t \t \t \t соиЬ < <епсИ; \t \t \t \t e ++; \t \t} \t возвращение 0; } – 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; 
} 
Смежные вопросы