Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 27.10.2015
Сообщений: 115

Готовая програма с ошибкой

26.11.2015, 23:28. Показов 1189. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задание:
Для каждого x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы S(x) и |Y(x) - S(x)| и вывести в виде таблицы. Значения a, b, h и n вводятся с клавиатуры. Так как значение S(x) является рядом разложения функции Y(x), при правильном решении значения S и Y для заданного аргумента x (для тестовых значений исходных данных) должны совпадать в целой части и в первых двух-четырех позициях после десятичной точки.
Работу программы проверить для a = 0,1; b = 1,0; h = 0,1; значение параметра n выбрать в зависимости от задачи.


вот код проги:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include<math.h>
long double fact(int fa){
if(fa<0)return 0;
if(fa==0)return 1;
else return fa*fact(fa-1);}
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double y,a,b,x,h,r,s;
int n,fa,k;
Memo1->Clear();
a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);
n=StrToFloat(Edit3->Text);
h=StrToFloat(Edit4->Text);
for(x=a;x<=b;x+=h){
r=s=0;
y=cos(x);
for(k=1;k<=n;k++){
fa=fact(2*k+1);
r=((pow(-1,k))*(pow(x,2*k+1))/(fa);
s+=r;
}
Memo1->Lines->Add("при x="+FloatToStr(x)+"сума="+FloatToStr(s));
Memo1->Lines->Add("y="+FloatToStr(y));
}}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text="0,1";
Edit2->Text="1,0";
Edit3->Text="10";
Edit4->Text="0,2";
}
//---------------------------------------------------------------------------
Прога кампилируеться, но не считает вот ошибка:
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.11.2015, 23:28
Ответы с готовыми решениями:

консольная програма, но ка сделать чтоб програма выполнялась, а консоль не открывалась??
Есть консольная програма, что недо убрать что добавить? чтоб програма выполняла свою функцию но консоль бы не открывалась...

Готовая БД с запросами
У кого может есть готовая БД(2-4 таблицы) с некоторым количеством запросов к ней или кто может знает где такое взять отпишитесь пожалуйста....

Готовая БД Access
Кто может поделиться готовой базой данных, буду очень благодарна

4
 Аватар для Lelik-pahan
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,850
27.11.2015, 00:07
Лучший ответ Сообщение было отмечено LaMeR55 как решение

Решение

проблема тут
C++
1
2
fa = fact(2 * k + 1);
r = pow(-1, k) * pow(x, 2 * k + 1) / fa;
когда k достигает значения 8, происходит переполнение, а когда k доходит до 10, то fa просто получает значение 0.
В результате в следующей строке происходит деление на ноль.

если объявить переменные так, вроде их размера хватает... По крайней мере ошибка не происходит
C++
1
unsigned long long fa, r, s;
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33404 / 21514 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
27.11.2015, 00:32
LaMeR55, кто ж такие задачи решает "в лоб"? Вычисляй, на что надо домножить предыдущий член ряда, чтобы получить следующий (для этого достаточно поделить https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{A_n}{A_{n-1}}, и сократить полученное выражение насколько можно), и считай - хоть засчитайся, вместо того, чтобы на каждом шаге вычислять факториалы и возводить X во все более возрастающую степень.
0
0 / 0 / 1
Регистрация: 27.10.2015
Сообщений: 115
27.11.2015, 01:33  [ТС]
Спасибо, всё работает!
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33404 / 21514 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
27.11.2015, 11:50
Вот так всегда. Чтобы написать правильно - не, зачем?

https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{A_k}{A_{k-1}} = \frac{\left(-1 \right)^k \,\cdot\, X^{2k+1}}{\left(2k+1 \right)!} \,\cdot\, \frac{\left(2\left(k-1 \right)+1 \right)!}{\left(-1 \right)^{k-1}\,\cdot\,X^{2\left(k-1 \right)+1}}=\frac{\left(-1 \right)\,\cdot\,X^2}{2k\left(2k+1 \right)}

, и пишем:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    double y, a, b, x, h, r, s;
    const double eps = 0.0001;
    int n, fa, k;
    Memo1->Clear();
    a = StrToFloat(Edit1->Text);
    b = StrToFloat(Edit2->Text);
    n = StrToFloat(Edit3->Text);
    h = StrToFloat(Edit4->Text);
    for (x = a; x <= b; x += h)
    {
        y = sin(x);
        r = s = x;
        k = 1;
        do
        {
            r = - r * x * x / (2*k*(2*k+1));
            s += r;
            k += 1;
        } while(abs(r) > eps);
        Memo1->Lines->Add(L"при x=" + FloatToStr(x) + L"сума=" + FloatToStr(s));
        Memo1->Lines->Add(L"y=" + FloatToStr(y));
    }
Вот же как интересно, работает безо всяких
Цитата Сообщение от Lelik-pahan Посмотреть сообщение
unsigned long long fa, r, s;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.11.2015, 11:50
Помогаю со студенческими работами здесь

Готовая программа
Может кому нужна прога Program Zavdanya_3; Uses crt; Type masiv=arrayof Integer; Var F,f1:file of integer; y,R:byte; ...

Готовая конфигурация
Помню как-то давно устанавливал готовую конфигурацию 1с. Суть была просто. Был сервер с базой. К нему подключались 2 планшета. 1 на кухне,...

Готовая программа
Здравствуйте!Как в ms visual studio 2010 сделать свой проект (написан на winforms) окончательной готовой программой, чтобы программа на...

Готовая база данных 8.2
Всем привет, ребят у кого есть заполненная база 1с предприятие 8.2, что бы были справочники, номенклатура, отчета и т.п Любой тематике ...

строки C++ почти готовая
вот условие: Дан текст, состоящий из N (2&lt;=N&lt;=10) строк с максимальной длиной 80 символов. Необходимо вывести этот текст, зашифрованный...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru