https://developers.google.com/edu/c++/getting-started#exercises-and-projects
我指的是练习4旗
我有点不明白这是怎么回事。我为每个字母"F“"R”和"E“创建了不同的函数。
"F",例如:
void printF(){
cout<<"FFFFF"<<endl;
cout<<"F"<<endl;
cout<<"FFF"<<endl;
cout<<"F"<<endl;
cout<<"F"<<endl;
}
据我所知,这是行不通的,因为没有办法打印像这样的东西,然后在旁边打印另一个。有人能从概念上解释或举例说明我如何打印“免费”这个词吗?谢谢
发布于 2014-02-13 17:58:27
您可以将字母创建为std::string
数组。为了保持一致性,它有五个字符串,五个字符长。您可以使用像get_font_letter
这样的函数来选择当前字母。有更好的方法来做到这一点,但如果你只关心这个词,它应该是暂时的。我建议您做一些类似于“字体数据库”的操作,您可以在文本文件中绘制和索引字母。
#include <iostream>
#include <vector>
std::string f[] = {
"FFFFF",
"F ",
"FFF ",
"F ",
"F ",
};
std::string r[] = {
"RRRRR",
"R R",
"RRRR ",
"RRR ",
"R RR",
};
std::string e[] = {
"EEEEE",
"E ",
"EEE ",
"E ",
"EEEEE",
};
std::string* get_font_letter(const char& c)
{
if (c == 'F') return f;
if (c == 'R') return r;
if (c == 'E') return e;
}
你不需要二维std::vector
。你可以用一个空格把每一行拼凑在一起。
int main()
{
std::string word = "FREE";
std::vector<std::string> v;
v.resize(5);
for (unsigned int i = 0; i < 5; i++)
{
std::string row = "";
for (auto it = word.begin(); it != word.end(); ++it)
{
auto letter = get_font_letter(*it);
row += letter[i] + " ";
}
v.push_back(row);
}
for (auto it = v.begin(); it != v.end(); ++it)
std::cout << *it << "\n";
}
输出:
FFFFF RRRRR EEEEE EEEEE
F R R E E
FFF RRRR EEE EEE
F RRR E E
F R RR EEEEE EEEEE
发布于 2014-02-13 17:52:06
如果没有给你一个完整的解决方案,因为你显然是来学习的,这将是我的策略:
使用字符串(或2-D数组)的向量来表示字母.然后构建一个表示该字符串的向量列表,并逐个字符串打印所有向量字符串(打印所有向量的第一个字符串,然后打印第二个向量,等等)。单个字符串应该具有恒定的长度,并提供一定的间距。
发布于 2016-06-18 14:31:50
这就是我在这个例子中所做的。
const unsigned char EOne = 0x1F; // 000 11111 const unsigned char BOne = 0x1E; // 000 11110
我给bitFlags取了直观的名字,知道它们在信中的归属。下面是关于位标志- http://www.learncpp.com/cpp-tutorial/3-8a-bit-flags-and-bit-masks/的很好的信息
const unsigned char A[5] = {AOne, ATwo, EOne, AFiv, AFiv}; const unsigned char B[5] = {BOne, AFiv, BOne, AFiv, BOne}; const unsigned char J[5] = {~EThr, ~BOne, ~BOne, AFiv, ~AFiv};
这就形成了字母A,B,C的设计。Z.
这样,只要减少代码行,我就可以打印任何字符串。因为,我用了地图,所以很容易打印出被打印出来的字母的符号。
FFFFF RRRR EEEEE EEEEE ZZZZZ Y Y
F R R E E Z Y Y
FFF RRRR EEE EEE Z Y
F R R E E Z Y
F R RR EEEEE EEEEE ZZZZZ Y
不过,设计所有的字母需要一段时间。让我知道如何改进这段代码。
https://stackoverflow.com/questions/21769331
复制