C ++回文调试

我在笔记中遇到了这个问题:给定一个整数数组,写一个函数来检查该数组中的元素是否是palindromes。我一直在研究我的代码,它看起来像这样:

#include<iostream>
#include<cmath>
using namespace std;

bool is_a_palindrome(int integers[], int length){
    int i;
    int middle = floor(length / 2);

    //while (length != 0 && length > 0){
    for (i = 0; i < middle; i++){

        if (integers[i] != integers[length - 1 -i]){
            return -2;
        }
        else{
            return true;
        }
    }
}

int main(){

    int array[4] = {1,2,2,1};
    int length = 4;
    is_a_palindrome(array, length);
}

当我运行代码时,我期望得到1为真,或者-2为假。 目前,我没有得到任何东西。 我不太确定问题出在哪里。 任何帮助表示赞赏。

根据评论的固定代码:

#include<iostream>
#include<cmath>
using namespace std;

bool is_a_palindrome(int integers[], int length){
    int i;
    int middle = floor(length / 2);

    //while (length != 0 && length > 0){
    for (i = 0; i < middle; i++){

        if (integers[i] == integers[length - 1 -i]){
            return true;
        }
        else{
            return false;
        }
    }
}

int main(){

    int array[4] = {1,2,2,1};
    int length = 4;
    return is_a_palindrome(array, length);
}

编辑后的回复有几个问题:

  • 只要前面的值与后面的值相同,您就返回true。 如果你有一个数组{1,2,3,5,6,8,7,8,9,1}你的函数会返回true,因为数组的前后有1

  • 您在返回布尔值的函数中返回-2而不是false。

  • Main返回一个int值,并返回一个调用你的帮助器函数返回一个布尔值。

  • 你可以做的是使用一个向量而不是数组,并使用std :: reverse函数来检查向量是否相同。 或者你可以修改你的for循环来避免提前返回,而是检查这个值是否在“front and back”中不相同,如果你通过整个for循环,返回true。 像这样的东西:

    `    for (i = 0; i < middle; i++)
         {
            if (integers[i] != integers[length - 1 -i])
                return false;
         }
         return true;
    `
    

    其余的是你要解决的问题,但我认为很多人已经为你确定了这些问题。 祝你好运!


    一些评论(当你修改了你的问题的标记时):

  • 你正在期待输出,但你真的打印了什么?
  • main期望你返回和int ,但你没有返回任何东西
  • 你为什么返回-2而不是false ? 返回类型是boolean型的,所以它不能存储整型值。
  • 想想如何把return true 。 回文是什么时候?

  • return您的回文功能之前,您忘记了return

    int main() {
        int array[4] = {1,2,2,1};
        into length = 4;
    
        return yourPalindromeFunction( array, length );
    }
    

    因为你没有写任何东西,所以C ++创建了一个默认返回值为零。

    链接地址: http://www.djcxy.com/p/86323.html

    上一篇: C++ palindrome debugging

    下一篇: I don’t know why my string can't save the value