【问题标题】:Simple search program using arrays help me使用数组的简单搜索程序帮助我
【发布时间】:2015-12-01 11:32:37
【问题描述】:

当用户输入一个单词时,程序会在数组中搜索匹配项,如果匹配项,程序会从数组中打印出字符串。下面的代码就是这样做的。我的目标是做到这一点,当一个词与数组中的一个词匹配时,程序应该打印一个信息,而不仅仅是这个词。我以为我可以用函数填充数组,但它不起作用。有可能吗?

我正在使用英雄联盟的英雄名字,因为他们很多而且我认识他们,而且我确实没有花很多时间来这样想名字:D

这个想法是,如果用户输入 voly,程序会在数组中找到 voly 并打印出(例如)他的起始生命、盔甲、先生等。

我尝试了很多关于函数的东西,但我无法让它工作。

#include <iostream>
#include <string>

using namespace std;
string voly(string holder,string heroName);

int main(){

    const int numH = 10;
    string holder;
    string heroName;
    string heroList[numH] = {"voly", "teemo", "vladimir", "morgana", "jax", "ekko", "anivia", "nunu", "ashe", "tresh" };


    cout << "Enter hero name.\n" << endl;
    cin >> heroName;

    for (int i = 0; i < numH; i++){
        holder = heroList[i];
        if (heroName == holder){
            cout << holder << endl;
        }
    }
    system("PAUSE");
    return 0;
}

string voly(string holder, string heroName) {
        cout << "Voly is the best" << endl;
}

【问题讨论】:

    标签: arrays function search


    【解决方案1】:

    尝试了解结构。您可以利用它们将所有英雄信息封装在一个英雄结构中,如下所示。这可以作为每个英雄的原型:

    struct hero { string name; int hp; int mana; float mreg; ... void printMe() { cout << 'hp: ' << hp << endl << 'mana: ' << mana << endl << ...; } }

    使用特定英雄对象的 printMe() 函数,您可以打印其值。

    然后,为每个英雄创建一个结构对象并将它们添加到数组中。

    hero* pointer = new hero[numH]; pointer[0] = new hero { name: "voly", hp: 150 }; pointer[1] = new hero { ... };

    (尝试通过 .CSV 文件左右考虑一些导入功能。)

    通过使用你的 for 循环,比较名称:

    for (int i = 0; i < numH; i++){
        if (heroName == pointer[i].name){
            pointer[i]->printMe();
        }
    }
    

    尝试使用 Google 查找相关教程。不幸的是,我不太确定 C++ 中的语法,也许有人可以帮助我。

    祝你好运!

    【讨论】:

    • 谢谢。我会做一些研究,看一些教程并尝试用数据结构来做。我只是在学习语言,我什至避免谈论数据结构和高级的东西,因为我还是个菜鸟:D
    • 是的,我明白 :) 我只是觉得这里有点问题,因为你要处理的数据太多了。在数据读取/导入方面,您应该始终尝试尽可能多地自动化。遵循一个清晰的方案是有帮助的(例如定义一个结构/类)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    • 2011-07-25
    • 2015-07-16
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多