Консультация № 168810
02.06.2009, 20:35
0.00 руб.
0 7 2
Помогите пожалуйста!! Очень срочно надо
в Visual C++ решить такую задачу:
С клавиатуры задаем некоторое натуральное число. Если это не палиндром то изменим порядок его цифр на обратный и сложим исходное число с получившимся. Если сумма не палиндром , то над ней повторяется тоже самое действие и т.д., пока не получится палиндром. Даны натуральные числа k,m,l (k<l). Проверить, верно ли, что для любого натурального числа из диапазона от k до l процесс завершается не позднее, чем после m таких действий.


Заранее спасибо!

Обсуждение

Неизвестный
02.06.2009, 20:58
общий
это ответ
Здравствуйте, matrix3k!
Программа делает почти то, что нужно...

Приложение:
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <math.h>


main()
{
clrscr();

unsigned long int c;
unsigned long int bugaga (unsigned long int a);
int n;

printf("vvesti 4islo ");
scanf("%ld" ,&c);

n=0;
while(bugaga(c) != c)
{
if(c != bugaga(c))
c=c+bugaga(c);
n++;
}

printf("\n4islo %ld ", c);
printf("koli4estvo raz %d", n);

getch();
}

int pufik (unsigned long int a)
{
int i;

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

unsigned long int bugaga (unsigned long int a)
{
int pufik (unsigned long int a);
int n,i;
unsigned long int b,c;

n=pufik(a);

i=1;c=0;
while(n!=0)
{
b=a/pow10(n-1);
a=a-b*pow10(n-1);
c=c+b*pow10(i);
i++;
n--;
}

return(c/10);
}
5
Неизвестный
02.06.2009, 21:09
общий
эммм у меня насчет pow10 в конце ошибку выдает, что то не вдуплю что нетак=)
Неизвестный
02.06.2009, 21:34
общий
а все спс разобрался
Неизвестный
02.06.2009, 21:37
общий
попробуй вместо функции pow использовать

int daaa (int a, b)
{
int i;

for (i = 1; i < b; i++)
a = a * a;

return a;
}
Неизвестный
02.06.2009, 21:45
общий
с этим я вроде разобрался.. как вот блин сделать про эти K,L,M!!=(
Неизвестный
03.06.2009, 08:02
общий
Если k<c<l, где с переменная в функции main. и если n <= m, где n переменная в функции main, значит процесс завершится не позднее, чем через m таких действий, для числа в диапазоне от k до l.
Неизвестный
05.06.2009, 12:06
общий
это ответ
Здравствуйте, matrix3k!

Ответ:

#include "stdafx.h"
#include <iostream>

using namespace std;
int main(int argc, char* argv[])
{
int k,m,l;
int q;
int q1=0;
int a, c, e, f, g;
int b;
int d=1;
cout<< "vvedite chislo k: "<<"\n";
cin>> k;
cout<< "vvedite chislo l: "<<"\n";
cin>> l;
cout<< "vvedite chislo m: "<<"\n";
cin>> m;

for (int i1=0; (k+i1)<=l; i1++)
{
a=k+i1;
q=1;

for (int i1=0; i1<m; i1++)
{
c=a;
d=0;

for (b=0;c>0;b++)
{
c=c/10;

}

e=a;
f=a;
for(int i=1;i<=b/2;i++)
{
c=1;


for (int ii=0;ii<(b-i);ii++)
{
c=c*10;
}

{
if(e%10==f/c)

d=d+0;
else
d=d+1;
}
e=e/10;
f=f-(f/c)*c;
}
if (d==0)
q=0;

f=0;
e=a;
g=1;
for (i=1;i<=b;i++)
{
c=1;
for (int ii=0;ii<(b-i);ii++)
{
c=c*10;
}

f=f+(e/c)*g;
e=e-(e/c)*c;
g=10*g;
}
a=a+f;
}
q1=q1+q;
}

if (q1==0)
cout<< "process zavershaetsy ne pozdnee m deistvii"<<"\n";
else
cout<< "process ne zavershaetsy za m deistvii"<<"\n";


return 0;
}


Форма ответа