Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 27.05.2018
Сообщений: 5

Нахождение суммы ряда

07.03.2019, 20:04. Показов 876. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я новичок в C++, поэтому сильно не ругайтесь. Передо мной стоит следующая задача: написать кусочек программы для вычисления ряда.
https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{1}{\sum \frac{p^k}{k!}}=\frac{1}{\frac{1^0}{0!}+\frac{1^1}{1!}+\frac{1^2}{2!}+\frac{1^3}{3!}+\frac{1^{3+1}}{3!(3-1)}}=0.364
Написал следующий код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma endregion
double factorial(double i)
{
if (i == 0) return 1;
else return i*factorial(i - 1);
}
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
double ProbabilityChannelFree;
int i;
ProbabilityChannelFree = 0;
for (int i = 0; i < n + 1; i++);
{
ProbabilityChannelFree = ProbabilityChannelFree + (1 ^ n) / (factorial(n));
}
ProbabilityChannelFree = ProbabilityChannelFree + ((1 ^ (n + 1)) / factorial(n)*(n - 1));
ProbabilityChannelFree = 1 / ProbabilityChannelFree;
ProbabilityChannelFree = int(ProbabilityChannelFree * 1000 + 0.5) / 1000.0;
textBox5->Text = Convert::ToString(ProbabilityChannelFree);
}
Но почему-то считает неправильно и всегда выводит, что ProbabilityChannelFree=0,5.
Подскажите, пожалуйста, где я ошибся. Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.03.2019, 20:04
Ответы с готовыми решениями:

Нахождение суммы ряда
Здраствуйте! Помогите написать программу на Турбо Паскаль для нахождения суммы ряда s=sin(1)+sin(2)+…+sin(n), для n введенного с...

Нахождение суммы ряда
Дано натуральное число n и действительное а. Вычислить. S=1/a+1/a(a+1)+1/a(a+1)(a+2)+...+1/a(a+1)(a+2)...(a+n) n=10

Нахождение суммы ряда
Составить и отладить процедуру для приближенного вычисления заданной функции y=f(x) путем суммирования членов заданного её ряда s(x)....

15
110 / 85 / 55
Регистрация: 01.02.2014
Сообщений: 281
07.03.2019, 20:47
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
#pragma endregion
 
double factorial(double i)
{
    if (i == 0) return 1;
    else return i*factorial(i - 1);
}
 
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
{
    double ProbabilityChannelFree;
    //int i;
    ProbabilityChannelFree = 0;
    //for (int i = 0; i < n + 1; i++);
    for (int i = 0; i < n + 1; i++)
    {
        //ProbabilityChannelFree = ProbabilityChannelFree + (1 ^ n) / (factorial(n));
        ProbabilityChannelFree = ProbabilityChannelFree + (1 ^ i) / (factorial(i));
    }
 
    //ProbabilityChannelFree = ProbabilityChannelFree + ((1 ^ (n + 1)) / factorial(n)*(n - 1));
    ProbabilityChannelFree = ProbabilityChannelFree + ((1 ^ (n + 1)) / factorial(n) / (n - 1));
    ProbabilityChannelFree = 1 / ProbabilityChannelFree;    
    //ProbabilityChannelFree = int(ProbabilityChannelFree * 1000 + 0.5) / 1000.0;
    textBox5->Text = Convert::ToString(ProbabilityChannelFree);
}
А в чем это вы пишете, если не секрет?
И зачем возводить единицу в степень?

Добавлено через 7 минут
Я вот еще на счет символа "^" не уверен. Он у Вас точно в степень возводит? А то как бы в С++ это функция pow, а символ "^" - Побитовое исключающее ИЛИ.

Добавлено через 2 минуты
то есть тогда так:
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
double factorial(double i)
{
    if (i == 0) return 1;
    else return i*factorial(i - 1);
}
 
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
{
    double ProbabilityChannelFree;
    //int i;
    ProbabilityChannelFree = 0;
    //for (int i = 0; i < n + 1; i++);
    for (int i = 0; i < n + 1; i++)
    {
        //ProbabilityChannelFree = ProbabilityChannelFree + (1 ^ n) / (factorial(n));
        ProbabilityChannelFree = ProbabilityChannelFree + pow(1,  i) / factorial(i);
    }
 
    //ProbabilityChannelFree = ProbabilityChannelFree + ((1 ^ (n + 1)) / factorial(n)*(n - 1));
    ProbabilityChannelFree = ProbabilityChannelFree + pow(1, n + 1) / factorial(n) / (n - 1);
    ProbabilityChannelFree = 1 / ProbabilityChannelFree;    
    //ProbabilityChannelFree = int(ProbabilityChannelFree * 1000 + 0.5) / 1000.0;
    textBox5->Text = Convert::ToString(ProbabilityChannelFree);
}
0
0 / 0 / 0
Регистрация: 27.05.2018
Сообщений: 5
07.03.2019, 21:38  [ТС]
Добавлено через 3 минуты
Цитата Сообщение от Меорн Посмотреть сообщение
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
#pragma endregion
 
double factorial(double i)
{
    if (i == 0) return 1;
    else return i*factorial(i - 1);
}
 
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
{
    double ProbabilityChannelFree;
    //int i;
    ProbabilityChannelFree = 0;
    //for (int i = 0; i < n + 1; i++);
    for (int i = 0; i < n + 1; i++)
    {
        //ProbabilityChannelFree = ProbabilityChannelFree + (1 ^ n) / (factorial(n));
        ProbabilityChannelFree = ProbabilityChannelFree + (1 ^ i) / (factorial(i));
    }
 
    //ProbabilityChannelFree = ProbabilityChannelFree + ((1 ^ (n + 1)) / factorial(n)*(n - 1));
    ProbabilityChannelFree = ProbabilityChannelFree + ((1 ^ (n + 1)) / factorial(n) / (n - 1));
    ProbabilityChannelFree = 1 / ProbabilityChannelFree;    
    //ProbabilityChannelFree = int(ProbabilityChannelFree * 1000 + 0.5) / 1000.0;
    textBox5->Text = Convert::ToString(ProbabilityChannelFree);
}
А в чем это вы пишете, если не секрет?
И зачем возводить единицу в степень?

Добавлено через 7 минут
Я вот еще на счет символа "^" не уверен. Он у Вас точно в степень возводит? А то как бы в С++ это функция pow, а символ "^" - Побитовое исключающее ИЛИ.

Добавлено через 2 минуты
то есть тогда так:
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
double factorial(double i)
{
    if (i == 0) return 1;
    else return i*factorial(i - 1);
}
 
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
{
    double ProbabilityChannelFree;
    //int i;
    ProbabilityChannelFree = 0;
    //for (int i = 0; i < n + 1; i++);
    for (int i = 0; i < n + 1; i++)
    {
        //ProbabilityChannelFree = ProbabilityChannelFree + (1 ^ n) / (factorial(n));
        ProbabilityChannelFree = ProbabilityChannelFree + pow(1,  i) / factorial(i);
    }
 
    //ProbabilityChannelFree = ProbabilityChannelFree + ((1 ^ (n + 1)) / factorial(n)*(n - 1));
    ProbabilityChannelFree = ProbabilityChannelFree + pow(1, n + 1) / factorial(n) / (n - 1);
    ProbabilityChannelFree = 1 / ProbabilityChannelFree;    
    //ProbabilityChannelFree = int(ProbabilityChannelFree * 1000 + 0.5) / 1000.0;
    textBox5->Text = Convert::ToString(ProbabilityChannelFree);
}
Пишу в Visual Studio. Да, вы правы, единицу зря возвожу в степень. Только на ваш код тоже жалуется, пишет: "Ошибка error C3861: pow: идентификатор не найден", хотя библиотеку <cmath> подключил.
0
110 / 85 / 55
Регистрация: 01.02.2014
Сообщений: 281
07.03.2019, 21:42
Это у Вас C++/CLI?
0
0 / 0 / 0
Регистрация: 27.05.2018
Сообщений: 5
07.03.2019, 21:46  [ТС]
Я дико извиняюсь за такие глупые вопросы, но как это узнать?
0
110 / 85 / 55
Регистрация: 01.02.2014
Сообщений: 281
07.03.2019, 21:49
Пишите в Winforms на С++?
0
0 / 0 / 0
Регистрация: 27.05.2018
Сообщений: 5
07.03.2019, 21:50  [ТС]
Да, именно так
0
110 / 85 / 55
Регистрация: 01.02.2014
Сообщений: 281
07.03.2019, 21:56
Это не С++, это смесь С++ и .Net.
Есть отдельные разделы:
https://www.cyberforum.ru/cpp-cli/
https://www.cyberforum.ru/cpp-cli-winforms/

Добавьте:
C++
1
#include <Math.h>
0
0 / 0 / 0
Регистрация: 27.05.2018
Сообщений: 5
07.03.2019, 21:59  [ТС]
И снова ошибка. "IntelliSense: существует более одного экземпляра перегруженная функция "pow", соответствующего списку аргументов:
функция "pow(double _X, int _Y)"
функция "pow(float _X, int _Y)"
функция "pow(long double _X, int _Y)"
типы аргументов: (int, int)"
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
07.03.2019, 22:07
Цитата Сообщение от Меорн Посмотреть сообщение
Это не С++
Да и тут можно отдельно подцепить, а вот сам ряд (его описание сверху) вызывает вопросы и недоумение. что там в знаменателе? (1/1!)+(1/n!) ?? .. один в степени, n-й член 0_о ...; короче, лучше переписать еще раз и правильно

Добавлено через 4 минуты
Цитата Сообщение от Baalmord Посмотреть сообщение
И снова ошибка. "IntelliSense: существует более одного экземпляра перегруженная функция "pow", соответствующего списку аргументов:
функция "pow(double _X, int _Y)"
функция "pow(float _X, int _Y)"
функция "pow(long double _X, int _Y)"
типы аргументов: (int, int)"



Феномен Баадера-Майнхофа, вчера: Вывести значения трех переменных по убыванию
0
110 / 85 / 55
Регистрация: 01.02.2014
Сообщений: 281
07.03.2019, 22:14
Ну вопрос же был не в том что бы переписать как лучше, а в том что бы исправить ошибки.

Добавлено через 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
double factorial(double i)
{
    if (i == 0) return 1;
    else return i*factorial(i - 1);
}
 
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
{
    double ProbabilityChannelFree;
    //int i;
    ProbabilityChannelFree = 0;
    //for (int i = 0; i < n + 1; i++);
    for (int i = 0; i < n + 1; i++)
    {
        //ProbabilityChannelFree = ProbabilityChannelFree + (1 ^ n) / (factorial(n));
        ProbabilityChannelFree = ProbabilityChannelFree + pow(1.0f,  i) / factorial(i);
    }
 
    //ProbabilityChannelFree = ProbabilityChannelFree + ((1 ^ (n + 1)) / factorial(n)*(n - 1));
    ProbabilityChannelFree = ProbabilityChannelFree + pow(1.0f, n + 1) / factorial(n) / (n - 1);
    ProbabilityChannelFree = 1.0f / ProbabilityChannelFree;    
    //ProbabilityChannelFree = int(ProbabilityChannelFree * 1000 + 0.5) / 1000.0;
    textBox5->Text = Convert::ToString(ProbabilityChannelFree);
}
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
07.03.2019, 22:20
Цитата Сообщение от Меорн Посмотреть сообщение
Ну вопрос же был не в том что бы переписать как лучше, а в том что бы исправить ошибки.
А я как-то дальше формулы не посмотрел
Теперь посмотрел - да. Попытка возведения единицы в степень через xor. Дальше не стал. Всё же, как мне кажется, стоит посмотреть на исходное задание, хоть по фото, потому как единицу в степень?

Добавлено через 58 секунд
Цитата Сообщение от Меорн Посмотреть сообщение
pow(1.0f, *i)
Один. При любом i. Вот о чем я.
0
110 / 85 / 55
Регистрация: 01.02.2014
Сообщений: 281
07.03.2019, 22:37
Ну может это частный случай формулы, а потом он туда 100500 вставит а не единицу. Почем мне знать?

Добавлено через 4 минуты

Не по теме:

Я бы, к примеру, вообще не рекомендовал писать на C++/CLI, особенно начинающему.
Голова забьется бесполезным мусором. Или пиши чистую консоль на С++ или используй C#.
И лучше учить не WinForms(ибо убожество), а сразу WPF. Как-то так... :)



Не по теме:


Цитата Сообщение от Folian Посмотреть сообщение
Феномен Баадера-Майнхофа, вчера: Вывести значения трех переменных по убыванию
Кстати у меня такое в VS 2017 молча компилируется без ошибок и предупреждений. Походу у Вас товарищи студия паленая... :D

0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
07.03.2019, 22:51
Цитата Сообщение от Меорн Посмотреть сообщение
а потом он туда 100500
Ну мы же оба знаем что нет

Цитата Сообщение от Меорн Посмотреть сообщение
Я бы, к примеру, вообще не рекомендовал писать на C++/CLI, особенно начинающему.
Да, там бардак. Вот опять Феномен Баадера-Майнхофа: вчера наткнулся на тут же, дословно не вспомню в закладках оставил же, Visual Win32 - Визуальный конструктор форм GUI на чистом WinAPI это хорошая идея, довольно простая; м-софт, видимо, не просто так такое не поддерживает.

Цитата Сообщение от Меорн Посмотреть сообщение
К стати у меня такое в VS 2017
Цитата Сообщение от Меорн Посмотреть сообщение
паленая
Какие поверхностные и необоснованные выводы.
https://docs.microsoft.com/ru-... ew=vs-2017
0
110 / 85 / 55
Регистрация: 01.02.2014
Сообщений: 281
07.03.2019, 22:59
Цитата Сообщение от Folian Посмотреть сообщение
Да, там бардак. Вот опять Феномен Баадера-Майнхофа: вчера наткнулся на тут же, дословно не вспомню в закладках оставил же, Visual Win32 - Визуальный конструктор форм GUI на чистом WinAPI это хорошая идея, довольно простая; м-софт, видимо, не просто так такое не поддерживает.
Зачем?

Есть же встроенный редактор для ресурсов - диалоговых окон.
Делаешь диалогбейсед приложение и редактируй себе вдоволь...
Тот же чистый WinApi

Добавлено через 1 минуту
Кошмар... Какой бардак у людей в голове...
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
07.03.2019, 23:10
Цитата Сообщение от Меорн Посмотреть сообщение
Есть же встроенный редактор для ресурсов - диалоговых окон.
Цитата Сообщение от Меорн Посмотреть сообщение
Тот же чистый WinApi
С
Цитата Сообщение от Меорн Посмотреть сообщение
Кошмар... Какой бардак у людей в голове...
Из одной лишь VS2017 виднее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.03.2019, 23:10
Помогаю со студенческими работами здесь

Нахождение суммы ряда
link: http:// s014. |radikal| .ru /i327/1509/f1/e7eecc80cd18.png Дайте пожалуйста ссылочку где можно восполнить пробелы в математике,...

Нахождение суммы ряда
Составить и отладить процедуру нахождения функции y=f(x) путем суммирования членов заданного её ряда s(x). ...

Нахождение суммы ряда
Привет, задали написать скрипт для нахождения суммы ряда..сколько сижу ни как не выходит.. вот задание дано вещественное число А,...

Нахождение суммы ряда
Подскажите, что не так. Заранее спасибо. Задание найти сумму ряда -1/(2+1)*1+1/(4+1)*2-1/(6+1)*3+1/(8+1)*4+... Программа ...

Нахождение суммы ряда
Подскажите , есть ряд \sum_{n=0 }^{\propto}\frac{{sin(x)}^{n}}{n+1} Нужно найти сумму ряда используя такую формулу ...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru