我无法从中获得输出
i can't get an output from this
本文关键字:输出 更新时间:2023-10-16
#include<iostream>
using namespace std;
class stack
{
int size=10;
int stack[size]={0}, value=0, top;
top=size;
public:
void push(int v)
{
if(top==0)
cout<<"nstack is fulln";
else
{--top;
stack[top]=v;}
}
void pop()
{
if(top==size)
cout<<"nstack is emptyn";
else
{top++;
stack[top];
stack[top-1]=0;
}
}
void display()
{
if(top==size)
cout<<"nstack emptyn";
else
{
for(int i=top;i<size-1;i++)
{
cout<<stack[i];
}
}
}
};
int main()
{
stack s;
char t;
int value,ch;
do
{
cout<<"n1.pushn";
cout<<"n2.popn";
cout<<"n3.displayn";
cout<<"enter choice:n";
cin>>ch;
switch(ch)
{
case 1:cout<<"nenter the value to be pushedn";
cin>>value;
s.push(value);
break;
case 2:s.pop();
break;
case 3:s.display();
break;
default:
cout<<"nwrong choicen";
}
cout<<"ndo u want to retryn";
cin>>t;
}while(t=='y' || t=='Y');
return 0;
}
对发生的错误的最简单修复是将int size=10;
更改为static const int size=10;
。 在此之后,除了发生stack[top];
为空语句的警告外,display
循环中for(int i=top;i<size-1;i++)
应该for(int i=top;i<size;i++)
或for(int i=top;i<=size-1;i++)
的循环中也存在逻辑错误。
正如Tomáš Zahradníček所回答的那样,你需要修复一些东西来编译你的代码(使用-std=c++11(。
我在display
方法中使用了for(int i=top; i<size; ++i)
。我还补充说,您的pop
方法可以简单地执行top++;
而不会覆盖堆栈。
无论如何,关于您在 COUT 上不打印任何内容的问题:您显然尝试在堆栈中推送 1 个项目,但没有尝试使用 2 个项目,这将指向错误的行(for
循环(。
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么我的代码在输出中增加了93天
- 如何从void函数输出字符串
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- AES加密到解密未正确输出
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- C++格式化输出问题
- 将值从二维数组输出到文本文件
- 集合上的输出迭代器:assign和increment迭代器
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 为什么rk4.do_step不输出C++中的初始条件
- 输出没有重复元素的动态数组(收缩数组)C++
- 如何根据单词在文本中出现的概率输出单词