Нахождение палиндрома с определенным алгоритмом в C - PullRequest
0 голосов
/ 19 января 2019

Мне нужна помощь в одном из моих проектов для академии. Мне нужно написать алгоритм, чтобы найти номер палиндрома из шести цифр, которые пользователь решит написать. Для меня есть некоторые ограничения: число должно быть длиной 6 цифр, код должен содержать функцию, которая будет вычислять данное число, а число должно быть в массиве. Я приложу свой алгоритм так далеко, если кто-то может помочь мне понять, почему он не работает. Спасибо, ребята!

#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
#define N 6

int palindrome(int rev_arr[N], int arr[N]);

int palindrome(int rev_arr[N], int arr[N])
{
    int i = 0, j = 0;
    int a = 0;

    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
        {
            arr[i] = rev_arr[j];
        }
    }
    for (i = 0; i < N; i++)
    {
        for (j = N; j >= 0; j--)
        {
            if (arr[i] == rev_arr[j])
            {
                a = 1;
            }
            else
            {
                a = 0;
            }
        }
    }
    return a;
}

void main()
{
    int i = 0, arr[N], rev_arr[N], j = 0, p1 = 0, a = 0;

    printf("Please enter your six digit's number:\n");
    for (i = 0; i < N; i++)
    {
        scanf("%d", &arr[i]);
    }

    p1 = palindrome(rev_arr[N],arr[N]);
        if (p1 == 1)
        {
            printf("The number is palindrome! :)\n");
        }
        else if (p1 == 0)
        {
            printf("The numbe is not palindrome! :(\n");
        }
}

1 Ответ

0 голосов
/ 19 января 2019

Вместо сканирования всего массива len вы можете остановиться на его среднем len:

int palindrome(int arr[N])
{
    int i = 0, end = N / 2;

    for (i = 0; i < end; i++)
    {
        if (arr[i] != arr[N-i-1])
            return 0;
    }

    return 1;
}

Обратите внимание, что правильный вызов функции palindrome - palindrome(arr), а не palindrome(arr[N]).

Таким образом, вы можете проверить, является ли последовательность палиндромом, выполнив:

if (palindrome(arr))
    printf("The number is palindrome! :)\n");
else
    printf("The numbe is not palindrome! :(\n");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...