首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >C++ Google开始练习4

C++ Google开始练习4
EN

Stack Overflow用户
提问于 2014-02-13 17:46:07
回答 3查看 133关注 0票数 1

https://developers.google.com/edu/c++/getting-started#exercises-and-projects

我指的是练习4旗

我有点不明白这是怎么回事。我为每个字母"F“"R”和"E“创建了不同的函数。

"F",例如:

代码语言:javascript
运行
AI代码解释
复制
void printF(){
cout<<"FFFFF"<<endl;
cout<<"F"<<endl;
cout<<"FFF"<<endl;
cout<<"F"<<endl;
cout<<"F"<<endl;
}

据我所知,这是行不通的,因为没有办法打印像这样的东西,然后在旁边打印另一个。有人能从概念上解释或举例说明我如何打印“免费”这个词吗?谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-13 17:58:27

您可以将字母创建为std::string数组。为了保持一致性,它有五个字符串,五个字符长。您可以使用像get_font_letter这样的函数来选择当前字母。有更好的方法来做到这一点,但如果你只关心这个词,它应该是暂时的。我建议您做一些类似于“字体数据库”的操作,您可以在文本文件中绘制和索引字母。

代码语言:javascript
运行
AI代码解释
复制
#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。你可以用一个空格把每一行拼凑在一起。

代码语言:javascript
运行
AI代码解释
复制
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";
}

输出:

代码语言:javascript
运行
AI代码解释
复制
FFFFF RRRRR EEEEE EEEEE 
F     R   R E     E     
FFF   RRRR  EEE   EEE   
F     RRR   E     E     
F     R  RR EEEEE EEEEE
票数 2
EN

Stack Overflow用户

发布于 2014-02-13 17:52:06

如果没有给你一个完整的解决方案,因为你显然是来学习的,这将是我的策略:

使用字符串(或2-D数组)的向量来表示字母.然后构建一个表示该字符串的向量列表,并逐个字符串打印所有向量字符串(打印所有向量的第一个字符串,然后打印第二个向量,等等)。单个字符串应该具有恒定的长度,并提供一定的间距。

票数 1
EN

Stack Overflow用户

发布于 2016-06-18 14:31:50

这就是我在这个例子中所做的。

  1. 首先,我想创建一个像printA()、printB()这样的函数。但我意识到了同样的问题。另外,这意味着我们需要为每个字母和符号创建超过26个这样的函数。所以,没有使用这种方法。
  2. 我认为这封信应该是5x5码。我们需要点矩阵打印机的功能。它打印字符串中每个字母的第一行点,然后打印下一行的第二行点,以此类推。我们正在打印的字母需要相同的符号,而不是点。例如,如果我们打印H,点将是'H‘。
  3. 那么,如何以最少的代码行和较少的复杂度来实现这一点呢?我决定为行创建位标志。考虑到一排有5个点,可能会有32个组合。比如- 10000,11000,11100等等。在实现这个过程中,我意识到我们不需要那么多的字母来定义字母。就像这样- 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/的很好的信息

  1. 下一步是为字母表中的每个字母创建设计。就像- 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.

  1. 在下一步中,可以在字母和它们的设计之间创建一个地图。
  2. 当用户输入字符串打印时,在5次迭代的for循环中,您可以在其设计中取-0字母:第0位标志,在其设计中取第1位标志。第n字母:设计中的第一个位标志。然后,第0字母:第1位标志,第1位字母:第1位标志,第9字母:第1位标志。直到你把所有5行都打印出来。
  3. 这位标志有什么用?我使用了std::bitset并测试了每一个位,以便打印或留出空白。lineBits是特定字母的设计行的位标志。 std::bitset<8>位(LineBits); //由于我们只有5x5个字母,所以(int bitpos = 4;bitpos >= 0;bitpos-){ if(bits.test(bitpos)) { cout <<信函;outFile <<字母;//文件中,从最左位(第4位)开始。}{ cout << ";outFile << ";// In file。}}

这样,只要减少代码行,我就可以打印任何字符串。因为,我用了地图,所以很容易打印出被打印出来的字母的符号。

代码语言:javascript
运行
AI代码解释
复制
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   

不过,设计所有的字母需要一段时间。让我知道如何改进这段代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21769331

复制
相关文章
在gpu上运行Pandas和sklearn
当涉及大量数据时,Pandas 可以有效地处理数据。但是它使用CPU 进行计算操作。该过程可以通过并行处理加快,但处理大量数据仍然效率不高。
deephub
2022/11/11
1.7K0
在gpu上运行Pandas和sklearn
ParallelX在GPU上运行Hadoop任务
在面对大规模计算密集型算法时,MapReduce范式的表现并不总是很理想。为了解决其瓶颈,一支小型创业团队构建了名为ParallelX的产品——它将通过利用GPU的运算能力,为Hadoop任务带来显著的提升。 ParallelX的联合创始人Tony Diepenbrock表示,这是一个“GPU编译器,它能够把用户使用Java编写的代码转化为OpenCL,并在亚马逊AWS GPU云上运行”。它的最终产品是一项与亚马逊Elastic MapReduce类似的服务,只不过不同之处在于它将利用EC2 GPU实例类型
GPUS Lady
2018/03/30
1.2K0
在Hadoop上运行Python脚本
之前已经配置好了Hadoop以及Yarn,可那只是第一步。下面还要在上面运行各种程序,这才是最重要的。
py3study
2020/01/06
4.3K0
在 RK3399 上运行开源的 mali GPU 驱动
偶尔会听到有嵌入式 Linux 玩家抱怨自己的开发板:图形界面不够流畅,拖动窗口有卡顿感。
HackforFun
2020/01/13
21.8K6
在 RK3399 上运行开源的 mali GPU 驱动
如果我在 Linux 上运行“sudo rm -rf /”会发生什么?
Linux 文件系统的工作方式与 Windows 系统不同,与将文件和配置存储在 、 或 Drive 中的 Windows 不同C:,D:LinuxE:将所有内容存储在根目录 (/)中。
网络技术联盟站
2022/06/21
2.6K0
如果我在 Linux 上运行“sudo rm -rf /”会发生什么?
在 Mac M1 的 GPU 上运行Stable-Diffusion
Stable Diffusion 是开源的,所以任何人都可以运行和修改它。这就是其在开源之后引发了大量创作热潮的原因。
点火三周
2022/10/18
7.8K2
在 Mac M1 的 GPU 上运行Stable-Diffusion
在QEMU上运行OPTEE
TEE越来越成为一种基础的安全技术,optee作为一种优秀的开源TEE OS正吸引了越来越多的厂商,越来越多的学习者,安智客之前也多次介绍过
安智客
2018/07/30
2.6K0
在QEMU上运行OPTEE
Keras学习笔记(六)——如何在 GPU 上运行 Keras?以及如何在多 GPU 上运行 Keras 模型?,Keras会不会自动使用GPU?
如果你以 TensorFlow 或 CNTK 后端运行,只要检测到任何可用的 GPU,那么代码将自动在 GPU 上运行。
种花家的奋斗兔
2020/11/13
3.2K0
在kubernetes上运行WASM负载
WASM一般用在前端业务中,但目前有扩展到后端服务的趋势。本文使用Krustlet 将WASM服务部署到kubernetes。
charlieroro
2021/05/10
1.5K0
在kubernetes上运行WASM负载
在OS X上运行Docker
本文介绍了如何在OS X上运行Docker,通过使用boot2docker和VirtualBox,使基于Linux的Docker能在OS X上正常运行。同时,还探讨了如何将现有的基于Linux的Docker容器迁移到基于macOS的Docker。
Techeek
2018/01/04
1.9K0
在OS X上运行Docker
在Android系统上运行frp
一时兴起,想在Android上跑一下frpc,本来以为需要在PC上交叉编译后放到机器上才行,后来发现好像更简单,Android YYDS!
老高的技术博客
2022/12/28
4.3K0
在Android系统上运行frp
Powershell运行脚本报错:此系统上禁止运行脚本
当在powershell运行脚本的时候,报错“此系统上禁止运行脚本” 使用 set-executionpolicy remotesigned 执行策略更改 执行策略可以防止您执行不信任的脚本。更改执行
治电小白菜
2020/08/25
1.5K0
GPU底层优化 | 如何让Transformer在GPU上跑得更快?
图 4:Beam Search Decoding (Decoder + Beam Search) 流程图
计算机视觉研究院
2021/02/24
1.8K0
GPU底层优化 | 如何让Transformer在GPU上跑得更快?
检查高 CPU 进程在 Linux 上运行时间的脚本
给 long-running-cpu-proc.sh 设置可执行的 Linux 文件权限。
用户4988085
2021/09/15
2.1K0
在Docker上运行Django和Vue
在Docker上运行Django和Vue Run Django and Vue on Docker Django Dockerfile 生成django项目依赖包. Generate Django project dependencies. pip freeze > requirements.txt 编写django启动脚本 run.sh Write a Django startup script run.sh python3 manage.py runserver 0.0.0.0:8000 编写 D
葫芦
2021/09/08
1.4K0
在Docker上运行Django和Vue
Spacebuilder在Mono上运行修改备忘
Spacebuilder 是一个asp.net mvc3项目,使用到了Combres,Combres依赖于dotless,然后在Spacebuilder的项目没有见到的dotless,运行要求dotless 1.3.0.2版本,通过Nuget获取: Install-Package dotless -Version 1.3.0.2 修改web.config加入dotless配置: <configuration>   <configSections>     <section name="combr
张善友
2018/01/29
1.2K0
Spacebuilder在Mono上运行修改备忘
在 FPGA 上运行 eBPF XDP 应用
这篇文章是对 OSDI20 的 Best Paper hXDP: Efficient Software Packet Processing on FPGA NICs 的阅读笔记,感兴趣的同学可以点击阅读原文查看论文的 paper,slide 和 video。
Oilbeater
2021/10/20
1.3K0
在Windows上使用Docker运行.NetCore
今天我们来说下如何在windows下使用docker运行.net core,既然是docker,那么我们首先得在windows上安装docker。
小世界的野孩子
2019/09/11
4.3K0
在Windows上使用Docker运行.NetCore
在Windows上如何后台运行JuiceFS
JuiceFS的Badger引擎改造完成以后,需要在Windows下面进行后台运行。因为现有的JuiceFS中还没有在Windows下的后台运行实现,所以需要通过其他途径解决。
用户1260683
2022/03/30
2.9K0
在Windows上如何后台运行JuiceFS
点击加载更多

相似问题

独立gpu tensorlfow脚本在独立的gpu上运行

159

GPU上的训练速度超时变慢

13

在GPU上运行MATLAB图像处理脚本

123

GPU渲染到球体上

33

OpenGL,在gpu上测量渲染时间

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文