2015-12-09 22 views
-3

我有一个C++编程语言的代码,我想将输入的字符(例如:JACK)更改为星形。该程序做得很好,但问题是它打印每一个字符在一个新的行,但我希望他们被打印在同一行。 许多在此先感谢您的帮助在C++编程中使用字母形成星形

#include <iostream> 


using namespace std; 


void printA(){   // Functions 

    for (int i = 0; i<5; i++) 
    { 

     for (int j = 0; j<5; j++) // A 
     { 

      if (i == 0 || i == 2 || j == 0 || j == 4) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 

void printC(){ 

    for (int i = 0; i<5; i++) // C 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (i == 0 || i == 4 || j == 0) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 


void printO(){ 
    for (int i = 0; i<5; i++) // O 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if ((i == 0 || i == 4 || j == 0 || j == 4) && i != j) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 

void printE(){ 
    for (int i = 0; i<5; i++) // E 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (i == 0 || i == 4 || j == 0 || i == 2) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 

void printF(){ 
    for (int i = 0; i<5; i++) // F 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (i == 0 || i == 2 || j == 0) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 

void printG(){ 
    for (int i = 0; i<5; i++) // G 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (i == 0 || i == 4 || j == 0 || i == 2 && j >= 2 || j == 4 && i >= 2) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 

void printH(){ 

    for (int i = 0; i<5; i++)  // H 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (i == 2 || j == 4 || j == 0) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 

void printI(){ 
    for (int i = 0; i<5; i++)  // I 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (j == 2) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 

void printB(){ 
    for (int i = 0; i<5; i++) // B 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (i == 0 || i == 4 || j == 0 || j == 4 || i == 2) 
      { 
       if (i != j){ 
        cout << "*"; 
       } 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 

void printL(){ 
    for (int i = 0; i<5; i++) // L 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (i == 4 || j == 0) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 

void printD(){ 
    for (int i = 0; i<5; i++) // D 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (i == 0 || i == 4 || j == 0 || j == 4) 
      { 
       if (!(i == j)) 
        cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 

void printT(){ 
    for (int i = 0; i<5; i++) // T 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (i == 0 || j == 2) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 

void printU(){ 
    for (int i = 0; i<5; i++) // U 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (j == 4 || i == 4 || j == 0) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 

void printY(){ 
    for (int i = 0; i<5; i++) // Y 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (j == 0 && i <= 2 || i == 2 || j == 4) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 


void printJ(){ 
    for (int i = 0; i<5; i++)  // J 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (j == 4 || i == 4 || j == 0 && i >= 2) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 


void printN(){ 
    for (int i = 0; i<5; i++) // N 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (i == j || j == 4 || j == 0) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 

void printP(){ 
    for (int i = 0; i<5; i++) // P 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (i == 0 || i == 2 || j == 0 || j == 4 && i <= 2) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 

void printR(){ 

    for (int i = 0; i<5; i++) // R 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (i == 0 || i == 2 || j == 0 || j == 4 && i <= 2 || i == j && i >= 2) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 

void printS(){ 
    for (int i = 0; i<5; i++) // S 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (i == 0 || i == 4 || j == 0 && i <= 2 || i == 2 || j == 4 && i >= 2) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 

void printZ(){ 
    for (int i = 0; i<5; i++) // Z 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (i == 0 || i == 4 || j == 4 - i) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 

void printQ(){ 
    for (int i = 0; i<5; i++) // Q 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (i == 0 && j != 4 || i == 3 && j != 4 || j == 0 && i != 4 || j == 3 && i != 4 || i == 4 && j == 4) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 



void printW(){ 
    for (int i = 0; i<5; i++) // W 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (j == 0 || j == 4 || j == i && j >= 2 || j == 4 - i && j <= 2) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 
void printX(){ 
    for (int i = 0; i<5; i++) // x 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (i == j || j == 4 - i) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 
void printV(){ 
    for (int i = 0; i<5; i++) // V 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (i == j && j <= 2 || j == 4 - i && j >= 2) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 
void printM(){ 
    for (int i = 0; i<7; i++) // M 
    { 

     for (int j = 0; j<7; j++) 
     { 

      if (i == j && i <= 3 || j == 6 - i && i <= 3 || j == 0 || j == 6) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 
} 
void printK(){ 
    for (int i = 0; i<5; i++) // K 
    { 

     for (int j = 0; j<5; j++) 
     { 

      if (j == 0 || j == 4 - i && i <= 2 || i == j && i >= 2) 
      { 
       cout << "*"; 
      } 
      else 
      { 
       cout << " "; 
      } 

     } 

     cout << endl; 
    } 

} 

int main(){  // Main Function 

    char c[100]={}; 
    bool b = true; 
    int l=1; 

     while (b){ 

     cout << "Enter Alphabat to Print OR Exit Press 0 : "; 
     cin >> c; 
     l=strlen(c); 
      l--; 
      for (int i=0; i<=l;i++) 
     switch (c[i]){ 
     if (l<0) 
     { 
      cout<<l; //<<endl; 
     } 
     else { 
     case 'A': 
      printA(); 
      break; 

     case 'B': 
      printB(); 
      break; 

     case 'C': 
      printC(); 
      break; 

     case 'D': 
      printD(); 
      break; 

     case 'E': 
      printE(); 
      break; 

     case 'F': 
      printF(); 
      break; 

     case 'G': 
      printG(); 
      break; 

     case 'H': 
      printH(); 
      break; 

     case 'I': 
      printI(); 
      break; 

     case 'J': 
      printJ(); 
      break; 

     case 'K': 
      printK(); 
      break; 

     case 'L': 
      printL(); 
      break; 

     case 'M': 
      printM(); 
      break; 

     case 'N': 
      printN(); 
      break; 

     case 'O': 
      printO(); 
      break; 

     case 'P': 
      printP(); 
      break; 

     case 'Q': 
      printQ(); 
      break; 

     case 'R': 
      printR(); 
      break; 

     case 'S': 
      printS(); 
      break; 

     case 'T': 
      printT(); 
      break; 

     case 'U': 
      printU(); 
      break; 

     case 'V': 
      printV(); 
      break; 

     case 'W': 
      printW(); 
      break; 

     case 'X': 
      printX(); 
      break; 

     case 'Y': 
      printY(); 
      break; 

     case 'Z': 
      printZ(); 
      break; 



     default: 

      b = false; 

      } 
     } // end switch 
    } 


    return 0; 
} 
+0

这是C++,不C. –

+0

真的吗?每个字母的一个函数?考虑使用单色位图字体,并将每一位转换为空格(如果为0或星号为1),则更容易编写,维护和修改。 –

+0

你是对的,上校三十二,我在标题中提到,但我在短信中犯了一个错误。 – Ardo

回答

0

如果你看看在你的终端接近man ascii命令,你会发现也被称为“马车RET”字\r。这可能会回答你的问题。

通过打印,它带来了在当前行的开头你的显示器的光标,而不会产生一个新行。

试试看

cout << '\r'; 

,避免

cout << endl; 

这给它带来了一个新行(这里的endl的解释)

+0

谢谢苏斯我尝试了它,但它打印只是最后一个字符例如,如果你输入(JONE)它只是打印(E),是否有任何解决方案呢? – Ardo

+0

I'ld说你没有打印在正确的地方这个人物到您的循环:) 你应该做任何其他印刷(你在这里,你会之前,“\ r”打印前和每个字母后打印JONE) – Souss

0

不幸的是使用 “字符为单位” 的方法这里在控制台很困难。

一个可爱的和可行的方式通过使每个明星“人物”,凡在矢量每个条目是输出的垂直切片STD列表:: string的实现在控制台的任务。

你可以定义一个类来表示部分“明星串”,你可以保持通过附加适当的列表中追加新的明星人物了。

来实现这一目标的最佳方式是创建一个类starChars和重载+操作适当串联。 (在这种情况下,逐个添加列表)。请注意,您可能希望所有字符具有相同数量的高度。(即使你需要留下一些空)

class starChars 
{ 
private std::list<std::string> content; 
... 

starChars operator+(starChars & newCharacter)... 

} 
+1

_“你不能再回到它了”_ - 你[通常]可以使用_backspace_,而且你肯定可以使用原生或专用的API。 –

+0

没错,但是这个过程对于多字符打印来说可能是痛苦的。 – ForeverStudent

+1

不痛苦只是多一点努力,并且与“你不能再回到它了”相距甚远。 –