【问题标题】:Function to randomly convert chars toupper case随机将字符转换为大写的函数
【发布时间】:2020-07-06 14:31:10
【问题描述】:

我正在重温在线课程中的一个练习,我们创建了一个“鲸鱼翻译器”,它检查用户输入的每个字符并仅提取/返回元音。

我认为将返回的值随机大写会很有趣,所以整个事情会有点像多莉说鲸鱼(寻找尼莫),所以我创建了一个函数来获取每个字符并根据是否将它们转换为大写字母随机数是奇数还是偶数。问题是我无法让程序承认或使用我的功能。否则运行良好。

谁能告诉我哪里出错了?

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

char converter(char);

int main() {

    std::cout << "WeELCooOmE ToOOoO the WHaALe translaAtoOor \n";

    std::cout << "\n PlEaAsE EnntEer yoOur text tOo beEE trAanslaAateEd \n\n";

    std::string input;

    std::getline(std::cin, input);

    std::cout << "\n";

    std::vector<char> vowels;

    vowels.push_back('a');
    vowels.push_back('e');
    vowels.push_back('i');
    vowels.push_back('o');
    vowels.push_back('u');

    std::vector<char> whale_talk;

    for (int i = 0; i < input.size(); i++) {

       for (int j = 0; j < vowels.size(); j++) {

            if (input[i] == vowels[j]) {


                whale_talk.push_back(input[i]);

            }

        }

    }

    std::cout << "HeEre iS yOoUr translaAtiOn..\n\n";

    for (int k = 0; k < whale_talk.size(); k++) { 

        converter(whale_talk[k]);
        std::cout << whale_talk[k];

    }

    std::cout << "\n";

}

char converter(char x) {     //function to convert characters toupper based on random number generation.                  

    int rando = rand() % 100;

    if (rando % 2 == 0) {

        x = toupper(x);
        return x;
    }

    else {

        return x;
    }
}

【问题讨论】:

  • "我无法让程序确认或使用我的功能"这是什么意思?你得到一个编译器错误吗?输出错误?
  • #include ?
  • 只是意味着无论我尝试什么,程序都会返回所有小写字符。原来我不是 a) 传递了正确的细节和/或 b) 没有正确使用返回的数据。感谢收看。

标签: c++ function random toupper


【解决方案1】:

您的converter 函数正在返回修改后的char,但您从未在 for 循环中使用返回的值:

converter(whale_talk[k]);

你需要做的:

whale_talk[k] = converter(whale_talk[k]);

这是demo

或者,您可以保持调用站点不变,但传递 char 以通过引用进行转换,如下所示:

void converter(char &x) {    // << pass by reference
 // and modify x, but don't return it
}

这是demo

【讨论】:

  • 非常感谢。我花了 2 个小时寻找问题,但看不到树木的木材。你节省了我很多时间,我的头撞在屏幕上..
  • @lbc4ever 没问题 :) 考虑 accepting 回答您的问题的答案。
【解决方案2】:

你忽略了converter的retun值,所以没有效果。

这个

converter(whale_talk[k]);
std::cout << whale_talk[k];

应该是

std::cout << converter(whale_talk[k]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 2011-04-11
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多