реверсивные числа, введенные пользователем - PullRequest
0 голосов
/ 04 января 2012

Я пытаюсь перевернуть числа, введенные пользователем (то есть числа, введенные пользователем, сохраняются в массиве, пока он вводит положительное число). Тем не менее, когда я ввожу 123 4569 752 896 -1 выход 321 9653 257 698 Как видите, второе число не 9654. Я не смог это исправить.

#include <stdio.h>
#include <math.h>

// finding the number of digits
int bsm(int a){
   int i=0;

   while(a!=0){
      i++;
      a=a/10; 
   }

   return i; 
}

// reversing the number
int rev(int m,int a){
   int s=0,sum=0;

   while(a!=0){
      s=a%10;
      sum+=s*pow(10,m)/10; 
      m--;
      a=a/10; 
   }

   return sum;
} 

int main()
{
   int i=0,k,a[10],p,r;
   scanf("%d",&a[i]);

   while(a[i]>0){
      i++;
      scanf("%d",&a[i]);
   }

   for(k=0;k<i;k++){
      p=bsm(a[k]);
      r=rev(p,a[k]);
      printf("\n%d ",r);
   }

   return 0;
}

1 Ответ

1 голос
/ 04 января 2012

Поскольку это выглядит как домашнее задание, я ограничу свой ответ двумя подсказками.

  1. Когда вы используете pow(), он возвращает число с плавающей запятой, а числа с плавающей запятой являются неточными. Перепишите вашу программу, используя только целочисленные математические или строковые значения.

  2. Подумайте, как вы хотите обрабатывать числа, заканчивающиеся нулями; например, что должно быть наоборот 2000?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...