C++编程中的字母表到星形
Alphabet to Star shape in C++ programming
我有一个C++编程语言的代码,我想把输入的字符(例如:JACK)改成星形。这个程序做得很好,但问题是它将每个字符打印在一行中,但我希望它们打印在同一行中。非常感谢您对的帮助
#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;
}
如果您仔细查看终端中的man ascii
命令,您会发现字符r
也称为"carriage ret"。事实上,这可能会回答你的问题。
通过打印,它会将显示光标带到当前行的开头,而不会生成新行。
试试
cout << 'r';
并避免
cout << endl;
这带来了一条新行(这里是endl的解释)
不幸的是,在控制台中使用"逐个字符"的方法很困难。
在控制台中完成任务的一种可爱而可行的方法是,为每个星形"字符"创建一个std::string列表,其中向量中的每个条目都是输出的垂直切片。
您可以定义一个类来表示部分"星形字符串",并且可以通过附加适当的列表来不断向其添加新的星形字符。
实现这一点的最佳方法是创建一个类starChars,并重载+运算符以进行适当的串联。(在这种情况下,将列表逐一附加)。请注意,您可能希望所有字符的高度都相同。(即使你需要留下一些空的)
class starChars
{
private std::list<std::string> content;
...
starChars operator+(starChars & newCharacter)...
}
相关文章:
- 如何在C++中移动字母表中的字母?
- 循环回到z之后的字母表的开头
- C 分类字符串按大小和字母表
- 我在使用布尔函数时遇到问题,其中用户输入两个字母并输出字母表中最高的字母
- 使用列表向后打印字母表时缺少'a'
- 警告:数组"字母表"由括号字符串文本初始化
- 如何检查字符是否是某个字母表中的字母
- 为什么在此 C 代码中将字母表拆分为多个范围?
- c++如何确定字母表中一个单词是否在另一个单词之前
- 计算C++中每个字母表的出现次数
- 求字母表{a,b,c}上长度为n的字符串w的个数
- 如何检查字母表中的字母在文本文件中出现的次数C++
- 将莫尔斯值解码为字母表
- 在 C 语言中,求解从字母表中输入的整数并重复循环
- 迭代C/C++中的字母表
- 制作一个程序来计算字母表中每个字母的出现次数
- C++编程中的字母表到星形
- 按字母表对字符串数组进行排序并显示值
- 找出字母表中一个字母对应的数字
- 土耳其字母表的凯撒密码解密