使用数组和无指针创建回文字符串检查器C++
Creating a Palindrome String Checker C++ using Arrays and No Pointers
很抱歉,如果这看起来真的很无聊,事实上,我只研究了大约一个月。我似乎无法把这件事做好,不知道你们中是否有人能帮我。这个程序曾经编译过,只说输入的单词"不是回文",即使它们是。
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
bool isPal (char[], int);
int main ()
{
const int size = 10;
int flag = 0;
char arr[size];
cout << "Enter Wordn";
cin.getline(arr,10);
flag = isPal(arr, size);
if (flag == true)
cout << "Word is Palindromen";
else
cout << "Not Palindromen";
return 0;
}
bool isPal (char arr [],int size)
{
int q = 0;
char arr2[size];
for (int i = 0;i < size - 1; i++)
{
arr2[i] = arr[9 - q]; //here I attempt to reverse arr1 and assign each element to arr2
q++;
}
for (int j = 0; j < size - 1; j++)
{
if (arr [j] != arr2[j])
return false;
}
return true
}
如果您只想使用纯C数组,请使用以下代码进行检查:-
bool isPallindrome ( char *p, int size ) //Remember here size must be one character before null //terminator.
{
char *begin, *end;
begin = p;
end = p + size;
while ( begin != end )
{
if( *begin != *end )
break;
begin++;
end--;
}
if ( begin != end )
return false;
return true;
}
-
初始化arr2
-
使用
strlen
来知道您输入的长度,而不是使用size
,因为您的输入数据在10 中并不总是固定的
在您的原始代码中:
input: 1234567
*arr => "1234567 "
*arr2 => "?? 7654321"
- 使用
size
替换为q
bool isPal (char arr [],int size) { //q=0; /* modified 3 */ char arr2[size] = ""; /* modified 1 */ for (int i=0; i<strlen(arr); i++) /* modified 2 */ { arr2[i] = arr[strlen(arr)-i-1]; /* modified 2 */ //q++; /* modified 3 */ } for (int i=0; i<strlen(arr); i++) /* modified 2 */ { if (arr[i] != arr2[i]) return false; } return true }
数组是"指向数组地址开头的指针",但对于新手来说,要知道它是如何工作的并不容易。您可以保留此线程,直到学习pointer
章节
以下是修改后的原始代码示例:
char arr[size];
char arr2[size];
// char *parr = (char*)malloc(sizeof(char)*size);
// char *parr2 = (char*)malloc(sizeof(char)*size);
cin.getline(arr,10);
// parr = &arr[0];
// cin.getline(parr, 10);
arr2[i] = arr[9 - q];
// parr1 = &arr[9-q];
// parr2 = &arr2[i]
// *parr2 = *parr1;
if (arr [j] != arr2[j])
// parr1 = &arr[j]
// parr2 = &arr2[j]
// if (*parr1 != *parr2)
相关文章:
- 将 S1 转换为回文,并将 S2 作为其子字符串
- 程序以查找给定字符串中回文的子字符串的数量
- 如何创建一个程序来标识最长的子字符串回文,而不考虑字母大小写
- 返回字符串的散点回文计数
- C++ 递归布尔回文(字符串 s)
- 寻找一种更有效的方法来使用 STL 函数检查字符串是否为回文
- 回文字符串问题:为什么我必须放+1而不是-1才能让这个代码工作
- 尝试使用C++实现检测字符串中回文的递归版本.在这里遇到了一些麻烦
- 找到字符串中的所有回文
- 验证字符串是否为回文的函数
- 字符串回文程序不会忽略案例
- 字符串中的最小回文计数
- 为给定字符串生成所有可能的回文
- 仅删除一个元素以制作字符串回文
- 使用数组和无指针创建回文字符串检查器C++
- 检查字符串是否为回文
- 回文子字符串程序无法运行
- 带有堆栈和队列的字符串回文(c++)
- 字符串回文在String.size()上给出错误答案,但在String.seize()-1上给出正确答案
- DP方法,用于生成字符串回文时应添加的最小字符数