Как я могу исправить этот код, чтобы проверить, является ли число палиндромом, используя указатели? - PullRequest
0 голосов
/ 08 февраля 2019

Я совершенно новичок в C. Я не очень понимаю, как правильно получить указатели.Я знаю, что это можно сделать без указателей, но я должен использовать их

#include <stdio.h>
#include <stdlib.h>

void palindrome(int *n)
{
   int ok=0,*p,*m;
    m=n;
    while(*n!=0)
    {
        *p=*p*10+*n%10;
        *n=*n/10;
    }
    if (*m==*p) ok=1;
    if (*m!=*p) ok=0;

    if (ok==1)
        printf("Number is palindrome.");
    if (ok==0)
        printf("Number is not palindrome");
}

int main()
{
    int n;
    printf("Give value to n: ");
    scanf("%d",&n);

    palindrome(n);


}

Ожидаемый результат будет, например, число 212 - палиндром, число 312 - не палиндром

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

@ arpit-agrawal

Вы забыли добавить бесплатно, в конце

void palindrome(int *n)
{
    ...
    free(p);
    free(m);
}
0 голосов
/ 08 февраля 2019

Вот код.Я думаю, вы должны попытаться понять, как работают указатели, прежде чем использовать их.Я не хотел предоставлять вам код, но так как вы новичок, я предоставляю рабочий код.Попытайтесь понять, как это работает, вместо того, чтобы просто скопировать этот код в любое место, куда вам нужно поместить.

#include <stdio.h>
#include <stdlib.h>

void palindrome(int *n)
{
   int ok=0;
   int *p = (int *)malloc(sizeof(int));
   int *m = (int *)malloc(sizeof(int));
   *p=0;
    *m=*n;
    while(*n!=0)
    {
        *p=*p*10+*n%10;
        *n=*n/10;
    }
    if (*m==*p) ok=1;
    if (*m!=*p) ok=0;

    if (ok==1)
        printf("Number is palindrome.");
    if (ok==0)
        printf("Number is not palindrome");
}

int main()
{
    int n;
    printf("Give value to n: ");
    scanf("%d",&n);
    palindrome(&n);
    return 0;

}
...