Нужно решить эту задачу ** языке СИ

0 голосов
57 просмотров

Нужно решить эту задачу на языке СИ


image

Информатика (76 баллов) | 57 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

#include
#include
#include
using namespace std;

void Poly(int nmb) {
   char s[20]="",st[20];
   itoa(nmb,st,10);
   int k=strlen(st);
   for (int i=0; i   if (strcmp(s,st)==0)  cout<<"number:  "<<nmb<<"  palindrom"<<endl;<br>   else   {  k=atoi(s); nmb+=k;  Poly(nmb);  }
 }
  int main(){ 
   int nn;
   cout<<"number:  ";  cin>>nn;
   Poly(nn);
   system("pause");
   return 0;
}

(9.7k баллов)
0

спасибо)

0

программу на просто си я смогла успешно перевести,спасибо за объяснения выше

0

но есть одно "но" :с как сделать,так что прога работала не для одного числа

0

а для первых н чисел

0

#include
int main()
{
int nn,m,k,dg;
printf("number:  ");  
scanf("%i",&nn);    
    while (nn>0)
    {
    m=nn;
dg=0;  
        while (m>0)
         {
            k=m % 10;
            dg=dg*10+k;
            m=m/10; 
         }
       if (nn==dg)
        {
          printf("palindrom\n"); 
          break;
        }
       else nn+=dg;
       printf("%i\n",nn);
    }

}

0

Добавляете внешний цикл   for (int i=10; i < nn+1; i++) {   while (nn>0)  . . . .   } ,  т.к.  числа, меньше 10 - всегда палиндром

0

спасибо большое)

0

только вот почему-то программа все равно неверно работает :с

0

int main()
{
int nn,m,k,dg,td;
printf("number:  ");  
scanf("%i",&nn); 
  for (int i=1; i  {
  td=i;
while (true)
    { 
   m=td;
        dg=0;
        while (m>0)
         {
            k=m % 10;
            dg=dg*10+k;
            m=m/10; 
         }
       if (td==dg)
        {
          printf("palindrom  %i\n",td);
          break;
        }
       else td+=dg;
    }
  }
}
У меня работает

0

спасибо большущее!!!!!!!