Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2012, 00:57   #1
addibos
 
Регистрация: 20.09.2012
Сообщений: 7
По умолчанию Сумма n слагаемых с заданной точностью (C++)

Начал изучать программирование только в этом году, и возник вопрос. Нужно чтобы программа считала значение суммы n слагаемых(вроде так называется, обозначается буквой сигма) (-x)^2/2i! для i от 1 до бесконечности с некоторой точностью E. Программу написал, но у меня создаётся впечатление что она неверно выдаёт результат или я не так понял задание(особенно касается условия, заданного в первом цикле for). Прошу вас проверить и сказать что не так, код привожу ниже

Код:
#include <cstdlib>
#include <iostream>
#include <math.h>

using namespace std;

int main(int argc, char *argv[])
{
    float x,y=0,q,i,s,fact=1,n,l=-1;
    cout<<"x=";
    cin>>x;
    cout<<"q=";
    cin>>q;
        for (i=1;s>q;i++);
        {            
            for(n=1;n<=i;n++)
             {
              fact=(i-n)*fact+fact;
             }
        s=((pow ((l*x),(2*i))))/((2*fact));
        y=y+s;
        }                 
    cout<<"y="<<y;
    system("PAUSE");
        return EXIT_SUCCESS;
}

P.S Отладчик жутко тупит, проверять ничего не хочет(стандартный из wxDev C++)

Последний раз редактировалось Stilet; 20.09.2012 в 07:38.
addibos вне форума Ответить с цитированием
Старый 20.09.2012, 05:41   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
fact=(i-n)*fact+fact;
Факториал - это произведение чисел, откуда плюс?

И еще - не лучше его (факториал я имею в виду) вынести в отдельную функцию?

Код:
int fact(int x)
{...}
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 20.09.2012, 10:00   #3
addibos
 
Регистрация: 20.09.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение

Факториал - это произведение чисел, откуда плюс?
А тогда факториал единицы считать не будет

Цитата:
Сообщение от Sciv Посмотреть сообщение
И еще - не лучше его (факториал я имею в виду) вынести в отдельную функцию?

Код:
int fact(int x)
{...}
А что это даст?
addibos вне форума Ответить с цитированием
Старый 20.09.2012, 12:26   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
А тогда факториал единицы считать не будет
А это уж как напишете

Не разглядел у Вас fact=1 в объявлении переменных, сорри.

Цитата:
А что это даст?
Уменьшит основной код программы на один цикл (я имею в виду текст, естественно, а не выполнение - при вызове-то функции цикл все-равно выполняться будет)
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 20.09.2012 в 12:40.
Sciv вне форума Ответить с цитированием
Старый 20.09.2012, 19:37   #5
addibos
 
Регистрация: 20.09.2012
Сообщений: 7
По умолчанию

Ну нам пока что разрешается писать большие коды программ(когда их можно сделать меньше), так что там с решением? Она правильно считает или нет? Я просто запутался с самим условием.
addibos вне форума Ответить с цитированием
Старый 20.09.2012, 20:25   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Вроде бы, да. Хотя вот здесь

Код:
for (i=1;s>q;i++); //Кстате, точка с запятой в конце не лишние?
у меня сомнения: обычно сравнение с Е идет по модулю числа:

Код:
for (i=1;fabs(s)>q;i++)
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 20.09.2012, 20:33   #7
addibos
 
Регистрация: 20.09.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение

for (i=1;s>q;i++); //Кстате, точка с запятой в конце не лишние?
Посмотрю, помню экспериментировал с этими точками с запятыми и программа работала каждый раз по разному

Цитата:
у меня сомнения: обычно сравнение с Е идет по модулю числа:

Код:
for (i=1;fabs(s)>q;i++)
Нет, у нас в задании не упоминался модуль, спасибо за помощь.
addibos вне форума Ответить с цитированием
Старый 20.09.2012, 20:55   #8
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от addibos Посмотреть сообщение
Нет, у нас в задании не упоминался модуль, спасибо за помощь.
Это не по заданию, это вроде как математика... Могут и не указать, подразумевая, что вы это уже изучили на матане или численных методах. У нас был один такой "товарисч" в институте, любил выдавать техзадания без формул.
Зато свой плюс в этом однозначно есть - умение искать информацию не в гугле, а в библиотеке
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 20.09.2012, 22:22   #9
addibos
 
Регистрация: 20.09.2012
Сообщений: 7
По умолчанию

Да это вряд ли, я только поступил в этом году и на матане только пределы изучаем
addibos вне форума Ответить с цитированием
Старый 25.02.2014, 20:16   #10
vvmcpp
Форумчанин
 
Аватар для vvmcpp
 
Регистрация: 11.12.2010
Сообщений: 116
По умолчанию

Код:
  for (i=1;s>q;i++);
// если оставить точку с запятой то в теле цикла будет выполняться пустой оператор ; .То есть, как-бы так
Код:
 for (i=1;s>q;i++){;}
Затем будет выполняться блок {} - то есть просто блок, который уже к циклу не будет относиться.
vvmcpp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисления с заданной точностью Tatyana Kur Помощь студентам 3 20.10.2011 23:35
Вычисления с заданной точностью DemonPro Паскаль, Turbo Pascal, PascalABC.NET 0 20.10.2011 17:04
"Вычисление суммы с неопределённым числом слагаемых с заданной точностью". Андрей) Помощь студентам 4 16.05.2011 18:16
Delphi7. Сумма n слагаемых заданного вида, основные операторы цикла. arctica Помощь студентам 0 12.12.2010 21:13
Сумма ряда с заданной точностью MarchZM Общие вопросы C/C++ 0 09.10.2010 16:10