• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

C++ Builder 6

Регистрация
12 Янв 2015
Сообщения
2
Реакции
0
Баллы
0
Надо было написать программу, которая считает сумму ряда
Пытался сам сделать, вроде неверно. При оюбом отрицательном щначении выдает 0. Посмотрите, пожалуйста, и помогите исправить. Есть ли другие ошибки? Артктангенс я позже рассмотрю
На форму добавил кнопку, лэйбл, ЛэйбледЭдит



Код:
#include <vcl.h>
#include <math.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  double sum = 0, x, eps = 0.000001, temp;
  int i = 1, n = 1;
  double z = pow(-1, n), v = pow(x, 2 * n - 1)/(2 *n -1);
  String res = "fabs(x) > 1";
  x = StrToFloatDef(LabeledEdit1->Text, 0);
  if (fabs(x) <= 1)
  {
    temp = x;
    while (temp >= eps)
    {
      sum += temp;
      i++;
      if (i == 2)
      {
        n = 2;
        temp = x*x/2;
      }
      else
      {
        n += i;
        temp = z * v;
      }
    }
    res = sum;
  }
  Label1->Caption = res;
}
//---------------------------------------------------------------------------
 

Вложения

  • JjFC6SEo6kk.webp
    JjFC6SEo6kk.webp
    13.9 KB · Просмотры: 58
К сожалению, на СИ не программирую, но то, что написана ахинея - вижу. Откуда Вы взяли переменную i? Зачем она? Уберите! Всё, что Вам нужно - это сделать цикл, в котором n будет возрастать на 1, при каждом значении n сосчитать z и v, потом temp=z*v и, наконец, sum=sum+temp. Завершить при |temp|<eps. Всё! И зачем рассматривать отдельно случай n=2? Не понимаю. Тем более, что при n=2 temp=x*x*x/3, а вовсе не x*x/2.
 
Назад
Сверху