gpt4 book ai didi

c++ - 使用 C++ 设计模式

转载 作者:行者123 更新时间:2023-12-02 08:29:27 25 4
gpt4 key购买 nike

我的教授给我一项任务,要求我使用用户输入的字符串在 C++ 输出中创建模式。

程序应按以下方式运行:

Enter a string: ***

***
***
***
***
***
***************
***
***
***
***
***

注意:用户输入的字符串可以有任意数量的长度或字符

以下是该程序的限制:

  • cout 语句中不允许使用字符串文字或空格。
  • 也禁止使用循环(这就是我陷入困境的原因......我成功创建了上述程序,但使用了循环)
  • 不允许使用 C++ 的高级概念(在大学里我们刚刚开始了解该语言如何工作的基本概念。所以请在给出答案时牢记这一点)

我尝试了多种方法来创建上述程序,但由于给定的限制,我认为它不再可能了,所以这就是我来这里向社区寻求帮助的原因。

下面是我使用循环的代码:

string userInput;
int m = 1, n = 9;
cout<<"\nEnter a three character string: ";
cin>>userInput;
cout<<endl;
while (m <= 6)
{
if (m == 6)
{
cout<<userInput<<userInput<<userInput<<userInput<<userInput<<endl;
m = 1;
n = 13;
while (m <= 5)
{
cout<<setw(n)<<userInput<<endl;
m++;
n--;
}
return 0; //this will finish the execution of the program
}
cout<<setw(n)<<userInput<<endl;
n++;
m++;
}

如果用户仅输入 3 个字符串,则上述程序有效

我们将非常感谢您的帮助!

抱歉我的英语不好,如果您发现任何错误或错误,请随时编辑和纠正

最佳答案

您可以使用称为递归函数的东西。这样你就不用使用循环,而是使用递归,只需调用一次。

#include <iostream>
#include <string>

void coutLine(std::string output) {
std::cout << output << '\n';
}
void recursiveWriter(std::string recursiveInput, int number, int iterator) {
//Correct for even number of lines below and above
number = number - (number % 2);

//You should split this logic in another function, to keep it neat
if (iterator < (number / 2)) {
recursiveInput = std::string(1, ' ') + recursiveInput;
coutLine(recursiveInput);
} else if (iterator > (number / 2)) {
//dividable by 2 triggers the middle line
//iterator should be -1 because one time it has ran by the 'else'
if (iterator - 1 > number / 2) {
recursiveInput = recursiveInput.erase(0, 1);
}

coutLine(recursiveInput);
} else {
//Create the middle line
coutLine(std::string(recursiveInput.length() + 1, '*'));
}

if (iterator < number) {
iterator++;
recursiveWriter(recursiveInput, number, iterator);
}
}

当然我不知道所有的具体要求,但发生了以下情况:

int main() {
int lines = 11;
int iterator = 0;
recursiveWriter("***", lines, iterator);
}

//lines 10 and 11 generates:
***
***
***
***
***
*********
***
***
***
***
***

//lines 12 and 13 generates with input text *****:
*****
*****
*****
*****
*****
*****
************
*****
*****
*****
*****
*****
*****

这样一来,顶部和底部的行数总是相等的。不过,这还可以改进。如前所述,可能不符合要求(您对它们不是很具体)。

关于c++ - 使用 C++ 设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58256498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com