需要有关此文本消息解码器(C ++)练习的帮助

时间:2016-11-01 05:32:08

标签: c++

这些是方向:

  1. 使用getline()将一行用户输入转换为字符串。输出线。 (3分)

    实施例
    输入文字 IDK,如果我去的话。这是我BFF的生日。
    您输入了 IDK,如果我要去的话。这是我BFF的生日。

  2. 搜索字符串(使用find())查找常用缩写,并打印每个找到的缩写列表及其解码含义。 (3分)

    实施例
    输入文字 IDK,如果我去的话。这是我BFF的生日。
    您输入了 IDK,如果我要去的话。这是我BFF的生日。

  3. 支持这些缩写:

    BFF - 永远最好的朋友 IDK - 我不知道 JK - 开个玩笑 TMI - 信息太多了 TTYL - 稍后与您联系

    我一直在尝试编码并获得6/6可能的积分,但我最终获得3/6。

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main() {
    
    string input;
    
    cout << "Enter text: ";
    getline(cin, input);
    
    cout << endl <<"You entered: " << input << endl;
    
    if (input.find("BFF") && input.find("IDK"))
    {
    cout << "BFF: best friend forever" << endl;
    cout << "IDK: I don't know" << endl;
    } 
    
    if (input.find("JK") && input.find("TMI") && input.find("TTYL"))
    {
       cout << "JK: just kidding" << endl;
       cout << "TMI: too much information" << endl;
       cout << "TTYL: talk to you later" << endl;
    }
       return 0;
    }
    

    我没有得到最后3分:

    比较输出 0/2

    输入 IDK,如果我去。这是我BFF的生日。

    您的输出

    输入文字:

    你输入了:IDK,如果我去的话。这是我BFF的生日。

    BFF:永远最好的朋友

    IDK:我不知道

    JK:开玩笑

    TMI:信息太多

    TTYL:稍后再与您联系

    预期产出 输入文字:

    你输入了:IDK,如果我去的话。这是我BFF的生日。

    BFF:永远最好的朋友

    IDK:我不知道

    比较输出 0/1

    输入 好照片,TMI哈哈JK。 TTYL

    您的输出

    输入文字:

    你进入了:好的照片,TMI哈哈JK。 TTYL

    BFF:永远最好的朋友

    IDK:我不知道

    预期输出

    输入文字:

    你进入了:好的照片,TMI哈哈JK。 TTYL

    JK:开玩笑

    TMI:信息太多

    TTYL:稍后再与您联系

3 个答案:

答案 0 :(得分:0)

显然你的函数调用在某些点评估为true而在其他点调用false。 Find()返回找到的子字符串的第一个char的位置,如果没有找到这样的子字符串,则返回npos = -1。真实的陈述是评估为非零数字的陈述。 False评估为0。

在比较输出0/2中,所有内容都计算为非零值。因此,一切都打印出来了。在0/1中,一个值必须为0. BFF和IDK打印,因为它们是-1,其余的不是。 (只是我的2¢,也许有人可以确认你的代码中的值是什么评估的)

答案 1 :(得分:0)


#include <iostream>
#include <string>
using namespace std;

int main() {

string text;
cout << "Input an abbreviation:" << endl;
getline(cin, text);

if (text.find("LOL") != string::npos){
   cout << "laughing out loud" << endl;
}

else if (text.find("IDK") != string::npos){
   cout << "I don't know" << endl;
}

else if (text.find("BFF") != string::npos){
   cout << "best friends forever" << endl;
}

else if (text.find("IMHO") != string::npos){
   cout << "in my humble opinion" << endl;
}

else if (text.find("TMI") != string::npos){
   cout << "too much information" << endl;
}

else{
   cout << "Unknown" << endl;
}

return 0;
}

答案 2 :(得分:-2)

删除条件: input.find(“ IDK”)