c++ - 当我只打算反转其中一个时,为什么我的两个数组都是相反的顺序?[C++]
问题描述
尝试创建各种回文检查器,其中一个过程涉及反转数组。用户输入要输入的字符数,一个一个地输入字符,代码本身会判断它是否是回文(相同的词在颠倒时,racecar 拼写为racecar backs )。问题是,我需要反转一个数组来创建一个条件,但是我的代码却反转了我的两个数组。下面是代码。
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main()
{
int no = 0, j, palin = 1;
char in, temp;
stack <char> s, h;
cout << "Enter amount of characters: ";
cin >> no;
string kimak, rord, gah;
for (int i = 0; i < no; i++) {
cout << "Enter word no." << (i + 1) << ": ";
cin >> in;
s.push(in);
}
for (int i = 0; i < no; i++) {
kimak[i] = s.top();
rord[i] = s.top();
s.pop();
}
j = no - 1;
for (int i = 0; i < j; i++, j--) { // reverses array
temp = rord[i];
rord[i] = rord[j];
rord[j] = temp;
}
cout << "Ordered No. ";
for (int i = 0; i < no; i++) {
cout << kimak[i] << "\n";
}
cout << "\nReversed No. ";
for (int i = 0; i < no; i++) {
cout << rord[i] << "\n";
}
for (int i = 0; i < no; i++) {
if (kimak[i] != rord[i]) {
palin = 0;
}
}
if (palin == 1) {
cout << "Palindrome No. : YES";
}
if (palin == 0) {
cout << "Palindrome No. : NO";
}
}
解决方案
你有未定义的行为。kimak[i]
并且rord[i]
是未定义的,因为两个字符串的大小都是 0。
您可以在循环之前调整两个字符串的大小,也可以使用push_back
字符串的函数。
推荐阅读
- java - 在 2 个 REST 资源之间创建关系
- react-apollo - 加载获取分页请求时显示的文本
- c - 为什么这不会产生错误?
- c# - SystemUnathorizedAccessException:在 Mac 上的 Visual Studio Code 中拒绝访问路径
- firebase - Flutter 用户注册 Firebase:添加额外的用户信息(年龄、用户名)
- c++ - 更新 GrabCut 中 Gibbs 能量的数据项
- excel - 将 VBA 用户表单打印为 PDF
- g++ - GNU C++ 编译器 g++ 的优化级别表,准确吗?
- python - python中具有设定长度的合同词
- fine-uploader - FineUploader 5.14.0 - setParams 不适用于大文件