forum.uni-sofia.bg
https://forum.su.schools.bg/

помощ спешно
https://forum.su.schools.bg/viewtopic.php?f=55&t=17389
Страница 1 от 1

Автор:  fashion_girl [ 05 Юни 2010, 08:56 ]
Заглавие:  помощ спешно

моля за помощ за една задача

ЗАДАЧА - функция,която проверя дали число е равно на сумата на кубовете на цифрите си

Някои идея???

Автор:  invisible [ 05 Юни 2010, 09:07 ]
Заглавие:  Re: помощ спешно

идеи :roll:
чудиш се как да вземеш цифрите на числото или как да го повдигаш на ^3
алгоритъма ли не ти е ясен или искаш кода направо

това е проста задача :lol:
http://sphotos.ak.fbcdn.net/hphotos-ak- ... 7502_n.jpg

Автор:  fashion_girl [ 05 Юни 2010, 09:10 ]
Заглавие:  Re: помощ спешно

алгоритама за жалост

Автор:  Etiainen [ 05 Юни 2010, 10:00 ]
Заглавие:  Re: помощ спешно

issoax написа:
това е проста задача :lol:
http://sphotos.ak.fbcdn.net/hphotos-ak- ... 7502_n.jpg

Нееееееееееее :lol: :lol: :lol: :lol: :lol: :lol:

Автор:  FloWersOfEviL [ 05 Юни 2010, 12:21 ]
Заглавие:  Re: помощ спешно

Исо е безмилостен!
Аре помогни на мадамата, нал си от ФъМъИ-то?

Автор:  invisible [ 05 Юни 2010, 14:20 ]
Заглавие:  Re: помощ спешно

жалко че на зайците само лесни задачи им дават :cry:

Автор:  fak [ 05 Юни 2010, 14:23 ]
Заглавие:  Re: помощ спешно

issoax написа:
жалко че на зайците само лесни задачи им дават :cry:

на нея, ако й беше лесно, нямаше да моли за помощ ;)

все още можеш да се уредиш с пълна програма ;)

Автор:  invisible [ 05 Юни 2010, 14:31 ]
Заглавие:  Re: помощ спешно

:lol:s пак че е кака да па просветли :*

Автор:  bggashnik [ 05 Юни 2010, 16:03 ]
Заглавие:  Re: помощ спешно

Код:
#include<iostream>
#include<ext/numeric>
#define Pow __gnu_cxx::power
using namespace std;
bool isEqual(unsigned long long n)
{
     unsigned long long s=0,crnt=n;
     while(crnt!=0)
     {
                s+=Pow(crnt%10,3);
                crnt/=10;
     }
if(n==s)return true;
return false;
}
int main()
{
    unsigned long long n;
    int i;
    for(i=1;i<=500;i++)if(isEqual(i))cout<<i<<' ';
    cout<<'\n';
    system("PAUSE");
    return 0;
}

Компилирано и работи на Dev-C++ 4.9.9.2 ;)

Автор:  morfei [ 05 Юни 2010, 16:09 ]
Заглавие:  Re: помощ спешно

Не съм наясно какъв материал сте взели, затова съм го написал по ламерски начин(не като bggashnik).Ако нещо не разбираш от неговия код или не сте го учили, използвай този. Трябва да ти го признаят, докато при по-горния има голяма вероятно да се усетят, че не си го писала ти.

Код:
void check(int a) //Не знам дали сте учили булеви функции
{
int p = a,sum=0,t;
while(p>0)
{
t = p%10;
sum+=t*t*t; //не знам дали сте взимали математическите библиотеки
p/=10;
}
if(sum == a) cout<<"Da.";
else cout<<"Ne.";
cout<<endl;
}

Не е тествано, но не мисля, че има и нужда.

Автор:  bggashnik [ 05 Юни 2010, 16:16 ]
Заглавие:  Re: помощ спешно

А ето и алгоритъмът:

Ще обясня само какво прави функцията, другото е ясно(един фор до 500 и проверка на функцията :mrgreen: )
Функцията вика числото n.Нека предположим, че n e числото 153. Инициализираме две променливи s=0 и crnt=n.Тъй като s ще ни бъде сумата на кубовете на цифрите, затова и трябва първоначално да е нула. Пускаме цикъл
Код:
while crnt!=0
и ще започнем да взимаме цифрите на crnt отзад-напред. За тази цел, всеки начинаещ програмист трябва да знае, че
Код:
crnt%10
винаги връща последната цифра на дадено число. Следователно,
Код:
crnt%10
ще ни върне числото 3, а операцията
Код:
Pow(crnt%10,3)
ще ни върне последната цифра на crnt на 3та степен. Събираме това число към s(което ни е нула) и вече последната цифра е обработена. Тъй като искаме вече да стигнем по предпоследната, идеята е предпоследната да ни стане последна, а това става като разделим целочислено на 10. Следователно, ако 153 разделим целочислено на 10, ще ни върне 15 и вече предпоследната цифра е последна :) :mrgreen: Така алгоритъмът продължава, докато crnt не стане равно на 0, а това ще стане, когато първата цифра разделим на 10(1 делено на 10 =0)В момента на излизане от цикъла s вече е сумата на кубовете на цифрите и единственото, което ни остава, е да сравним s със n. Функцията връща булева стойност true(истина), ако условието е изпълнено(т.е. n е равно на сумата на кубовете на цифрите си), и false(лъжа), ако не е изпълнено.


Не знам дали обясних добре, кажи, ако нещо те притеснява или не си разбрала, за първи път обяснявам така задача :mrgreen: :lol:

Автор:  invisible [ 05 Юни 2010, 16:21 ]
Заглавие:  Re: помощ спешно

това му се вика да подбиваш пазара :mrgreen:
алооу .. ще ви пратя г класите :lol:

Автор:  bggashnik [ 05 Юни 2010, 16:24 ]
Заглавие:  Re: помощ спешно

Аз, за разлика от тебе, съм доволен и само на снимка, да плакна окото :lol:

Автор:  invisible [ 05 Юни 2010, 16:32 ]
Заглавие:  Re: помощ спешно

тюю бетер индици :lol:

Автор:  bggashnik [ 05 Юни 2010, 16:34 ]
Заглавие:  Re: помощ спешно

Хахаха, разбирам за какво говориш, и при мене индииците много подбиват цените :lol: Ама, както виждаш, и аз не им се давам, трябва да се яде все пак :mrgreen: :mrgreen:

Страница 1 от 1 Часовете са според зоната UTC + 2 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/