Форум: Форум C++Разное
Новые темы: 00
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: помогите с задачей
 
 автор: ols   (22.02.2007 в 16:14)   письмо автору
16 Кб
 
 

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

  Ответить  
 
 автор: alex19921992   (22.02.2007 в 16:52)   письмо автору
 
   для: ols   (22.02.2007 в 16:14)
 

И что тут сложного? Тут посчитать надо или как? Тебе надо алгоритм вычисления факториала и степени? Пожалуйста:
Факториал:
Делаем например рекурсию. Если требуется 0! или 1!, то возвращаем 1, иначе: факториал предыдущего умножить на текущее:

int Fuck_to_real(int n)
{
  if((n==1)||(n==0)return 1;
  else return n*Fuck_to_real(n-1);
}

Таким образом при вызове a=Fuck_to_real(n); получишь n!
Степень:
Ничего сложного. Даю алгоритм только для положительной степени(тут только это требуется)

float instep(float n,int step)
{
  if(step==1)return n;
  else return instep(n,step-1)*n
}

При вызове a=instep(n,k); получишь n^k

  Ответить  
 
 автор: ols   (25.02.2007 в 18:29)   письмо автору
 
   для: alex19921992   (22.02.2007 в 16:52)
 

Да, но только задача состоит в том что при решении задачи нужно использовать оператор for

  Ответить  
 
 автор: Фитч   (26.02.2007 в 10:12)   письмо автору
 
   для: ols   (25.02.2007 в 18:29)
 

Пожалуйста:

/* факториал: */
int fact(int n)
{
 int r = 1;
 if(n > 0)
 {
  for(int i = 1;i <= n;i++)
  {
   r *= i;
  }
 }
 else
 {
  return -1;
 }
 return r;
}

/* степень */
float step(float n,int s)
{
 if( s == 0 ) return 1;
 float res = 1;
 
 for(int i = 0;i<s;i++)
 {
  res *= n;
 }
 return res;
}


За оптимальность не ручаюсь, но оно работает

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования