0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 13
1

Написать реализацию заданной функции

22.10.2013, 21:44. Показов 699. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как записать на С++ Builder такое
Написать реализацию заданной функции
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2013, 21:44
Ответы с готовыми решениями:

Возможно ли посмотреть реализацию библиотечной функции?
Здравствуйте. Возможно ли просмотреть реализацию библиотечной функции,если да,то как? с++(MSVS...

Как по заданной блок-схеме написать реализацию?
Ребят первый раз в жизни пишу программу. Надо по заданой блок-схеме написать код. У меня проблема с...

Написать реализацию перегрузки функции
Написать реализацию перегрузки функции int func(int * arr, int lenght) int func(double * arr,...

Написать реализацию функции Pos
Нужно написать свою функцию POS. Без использования встроенных строковых функций(кроме length())....

4
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32489 / 20975 / 8115
Регистрация: 22.10.2011
Сообщений: 36,249
Записей в блоге: 7
22.10.2013, 22:30 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    const float eps = 0.0001;
    float x = 0.4, f, s = 0;
    float xval = x;
    int i = 1;
    do
    {
        i += 1;
        s += (f = i * (i + 1) * (i + 2) * xval);
        xval *= x;
    }
    while(f > eps);
    s = s / 6.0 + 1;
 
    ShowMessage(FloatToStr(s) + " vs " + FloatToStr(1 / Power(1 - x, 4))); // для сравнения
2
случайный прохожий
2387 / 1604 / 550
Регистрация: 20.07.2013
Сообщений: 4,496
23.10.2013, 00:27 3
А я так сделал (вызывала сомнение сходимость разложения функции рядом с границами интервала допустимых значений х, но "добавление точки" в (n+1) после 1 "решило проблему").
У тебя, UI, при значениях |x|, близких к 1 (особенно для x->+1), результаты расходятся достаточно сильно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
double memb(double x, long int n)
{
  return (n+1.)*(n+2)*(n+3)*Power(x,n)/6;  // "волшебная точка" после 1
}
//---------------------------------------------------------------------------
void res(double x, double dif)
{
  double sum = 1.0, temp;
  long int n = 1;
  temp = memb(x, n);
  if (fabs(x) < 1)
  {
    while (fabs(temp) >= dif)
    {
      sum += temp;
      n++;
      temp = memb(x, n);
    }
    MessageBox(Application->Handle, ("x = " + FloatToStr(x) + "\ndif = " + FloatToStr(dif) + "\nf(x) = " + FloatToStr(RoundTo(sum, -6)))\
    .c_str(), "Результат", MB_ICONASTERISK+MB_TOPMOST);
//  ShowMessage(RoundTo(Power(1-x,-4), -6));  // для сравнения
  }
  else
    MessageBox(Application->Handle, "Должно выполняться условие: |x| < 1", "Неверное значение х", MB_ICONASTERISK+MB_TOPMOST);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  res(0.5, 0.000001);
}

Не по теме:

P.S.: посмотрите задачу Спички, там точно мозги начнут шевелиться :)

Изображения
   
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32489 / 20975 / 8115
Регистрация: 22.10.2011
Сообщений: 36,249
Записей в блоге: 7
23.10.2013, 00:57 4
Цитата Сообщение от gunslier Посмотреть сообщение
А я так сделал
И чем гордишься? Тем, что используешь библиотечные функции? Или тем, что дублируешь код? Или тем, что на каждой итерации делишь на 6 вместо того, чтобы вынести это за цикл?

Добавлю я в 8 строку точку после 1 или после 2, и будут одинаковые результаты при любых значениях Х... Или, что еще лучше, просто перепишу ее вот так, безо всякой "магии":
C++
1
        s += (f = xval * i * (i + 1) * (i + 2));
1
случайный прохожий
2387 / 1604 / 550
Регистрация: 20.07.2013
Сообщений: 4,496
23.10.2013, 02:13 5
Да ничем я не горжусь. Предлагаешь вместо возведения в (целочисленную) степень перемножать в цикле?
Дублированием не занимаюсь, твой код увидел лишь где-то через час после его появления, что подтолкнуло на единственное исправление ошибки в приведении типов.
Оптимизация кода - небольшой бонус для ТС. К тому же сходимость ряда правильней проверять по полному значению члена ряда, хотя в данном случае из-за уменьшающего коэффициента твое сравнение погрешности лучше (при должном значении переменной).
Так как моя основная работа давно уже не связана с программированием, решение той или иной задачи здесь маленькая победа для меня (не более) и поддержание серого вещества в форме.
Поэтому не испытываю потребность кому-либо что-то доказывать или показывать, что я лучше.
Не надо воспринимать замеченные ошибки близко к сердцу (я стараюсь делать это не часто и как можно нейтральнее), идеальных людей в природе не встречал.
Спасибо за внимание.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2013, 02:13
Помогаю со студенческими работами здесь

Написать собственную реализацию функции copy.
Написать собственную реализацию функции copy.Сравнить результаты работы стандартного и своего...

Как написать собственную рекурсивную реализацию функции last?
как написать собственную рекурсивную реализацию функции last ?

Написать собственную реализацию стандартной функции strstr
Написать собственную реализацию стандартной функции strstr. предназначена для поиска строки...

Написать собственную реализацию функции strcmp() согласно условию
Постановка задачи такова,нужно переписать strcmp ,чтобы где не важен был бы регистр букв и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru