C ++根据偶数或奇数将单词放入堆栈

Posted

技术标签:

【中文标题】C ++根据偶数或奇数将单词放入堆栈【英文标题】:C++ Placing words into stacks based on even or odd numbers 【发布时间】:2021-03-10 05:31:30 【问题描述】:

我正在制作一个程序,根据用户输入的数字向用户提供随机电影。每部电影都有一个与之相关的数字,因此应该有两个堆栈,一个用于偶数,一个用于奇数。程序最后的工作方式是用户输入一个数字,如果它是奇数,他们将从奇数池中获得一部电影。 这是我的 input.txt 的样子:

    DC 明日传奇 冰河世纪 5:碰撞路线 佩雷格林小姐特殊儿童之家 禁帝国 零定理 X 战警:未来的过去 木星上升 凡人仪器:白骨之城 阿达琳时代 忧郁症

我想将这些电影分成这两个堆栈,因此 stack_odd 将包含 DC 的传奇、佩雷格林小姐、零定理等。

但是,我不确定如何将它们拆分为堆栈。 这就是我打开文件的方式。

lass CReadFile 
    protected:
            Stack<string> stack_even;
            Stack<string> stack_odd;
            bool isblank(const std::string& s)
                //True if s is empty or only contains space and/or TABs.
                return s.find_first_not_of(" \t")==std::string::npos;
            
            void readFile (string filename)
               ifstream file(filename);
                string line;
                // file opened?
                if (! file) 
                    cerr << "can't open input file \"" << filename << "\""<< endl;
                    exit(EXIT_FAILURE);
                
                
                file.close();
            

要做堆栈,我会去:

int a;
while(file >> a)
    if(a % 2 == 0)
        stack_even.push(a);
    else
        stack_odd.push(a);
    

【问题讨论】:

【参考方案1】:

声明一个计数变量并通过在每次迭代中增加计数来检查偶数或奇数出现,参考下面的代码:

string a;
int count = 0
while (getline (file, a))
    if(count % 2 == 0)
        stack_even.push(a);
    else
        stack_odd.push(a);
    
    count ++;

【讨论】:

感谢您的输入,但在尝试此操作时,它会将所有内容放入 stack_even 并且 stack_odd 最终为空 Psycho Bunnies 它应该可以工作。你在增加计数 => count ++;你一定错过了上面的一些东西。 我不确定我做错了什么。这可能是我的位置?我把它放在 readFile 中的 if 语句之后 您是 C/C++ 编程新手吗?我认为您应该阅读一些教程并加强基础知识。 我是,我目前正在网上学习 C++ 课程,但是非常困难。感谢您尝试帮助我,我很感激。

以上是关于C ++根据偶数或奇数将单词放入堆栈的主要内容,如果未能解决你的问题,请参考以下文章

C语言11-指针

堆和堆栈内存是如何管理、实现和分配的?

如何使用分而治之将列表分成左右两侧?

用C语言简单的调整数组使奇数全部都位于偶数前面(或者后面)!!!

根据其他列将数据框的一列转换为numpy数组或张量

C语言如何将外部数据导入?