Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Обработка ряда 
V
    Опции темы
Palladin
  Дата 19.1.2007, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



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

Мой вариант в ссылке...

Код

int main()
{
float x,a,b,h,s,y,e;
int n,k;


cout<<"Vvedite Xn: ";
cin>>a;
cout<<endl;
cout<<"Vvedite Xk: ";
cin>>b;
cout<<endl;
cout<<"Vvedite shag(h): ";
cin>>h;
cout<<endl;
cout<<"Vvedite N ";
cin>>n;
cout<<endl;
s=0;
e=1,17;
k=0;
x=a;
int t=1,g=1;

while(x<=b)
{
t=(t*g);
g++;
y=(pow(e,x)+pow(e,-x))/2;

if(k<=n)
{
s=s+(pow(x,(2*k))/t);
k=(k+1);
cout<<"S= "<<s<<"       Y= "<<y<<endl;
}


x=(x+h);
}

getch();
return 0;
}


Хел что-то не так работает программа....

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  Doc1.doc 17,00 Kb


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Anikmar
Дата 19.1.2007, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Предлагаете телепатически узнать "как не так"?

Поконкретнее - что не так.
PM MAIL ICQ   Вверх
zkv
Дата 19.1.2007, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 21
Всего: 92



Цитата(Anikmar @  19.1.2007,  20:24 Найти цитируемый пост)
Поконкретнее - что не так. 

а ерунду выводит всякую smile, я прав? Судя по условию, в проге должно быть, по крайней мере, два цикла 1-й - перебор x-ов, 2-й (внутренний) - подсчет S(x)
PM MAIL   Вверх
Palladin
Дата 19.1.2007, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Там так и есть просто второй цикл самодельныйsmile т.е. не for не Do и не While а выводит не ерунду, почемуто S(x) считается вроде как надо, а вот Y(x) почемуто либо всегда 0 либо всегда 1, лана щас попробую без самопала..... smile 


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Rockie
Дата 19.1.2007, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 13
Всего: 31



Цитата(RooR @  19.1.2007,  19:13 Найти цитируемый пост)
e=1,17;

imho здесь должна быть точка вместо запятой




--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Palladin
Дата 19.1.2007, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Вообщем передал код расчета на этот:

Код

.........................
for(k=0;k<n+1;k++)
{
if(x<=b)
{
t=t*k+1;
s=s+(pow(x,2*k))/(2*t);
y=(pow(e,x)+pow(e,-x))/2;
x=x+h;
cout<<setw(10)<<"S= "<<s;
cout<<setw(20)<<"Y= "<<y<<endl;
}
}
......................


но всеравно показывает эту ерунду: вот пример теста и то что получилось:

Vvedite Xn: 1
Vvedite Xk: 10
Vvedite shag(h): 1
Vvedite N: 10

S=0.5             y=1
S=1.5             y=1
S=9.6             y=1
S=137.6         y=1
S=3142.41     y=1
S=95881.9     y=1

ну и т.д.

а должно быть примерно так:

S=0.5             y=0.512412
S=1.5             y=1.5324234
S=9.6             y=9.647474
S=137.6         y=137.6123123
S=3142.41     y=3142.4123259
S=95881.9     y=95881.99081

примерно конечноsmile

Какие будут предложения????

Добавлено @ 22:09 
2Роки 
сенкс сморозил здесь немного, но погоду особо не меняет, теперь вместо 1 или 0 выводит 1.12345145 примерно конечно, а должно быть так, цифры S должны совпадать цифрам Y, а после запятой чтобы совпадали по крайней мере пару символов, во как....


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Rockie
Дата 19.1.2007, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 13
Всего: 31



RooR, не знаю что у тебя здесь, почему ты x вводишь через a и зачем g, но то что у тебя в прикрепленном доке должно считать факториал. что-то этой функции вообще не вижу. и X  и Y там - две не зависящие друг от друга функции

Добавлено @ 22:43 
1)
Код

#include<iostream>
#include<math.h>

using namespace std;

int Fact(int n)
{
  if (n>1) return (n*Fact(n-1));
  else return 1;
}


int main()
{
   int n = 10;
   double s = 0, x = 2;

   for(double k=0;k<n;k++)
     {
         s+=( pow(x,2*k) / Fact(2*k) );
     }

   cout<<s;

   cin.get();
   return 0;
}





--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Palladin
Дата 19.1.2007, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Есть там факториал смотри внимательнее, по поводу а так надо по заданию, читай первый топ, задача на циклы, такчто функции отпадают, да и вообще что ты сделал, посчитал функцию S??? и толку она и у меня прекрасно считается smile 


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Rockie
Дата 19.1.2007, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 13
Всего: 31



Цитата(RooR @  19.1.2007,  23:18 Найти цитируемый пост)
 и толку она и у меня прекрасно считается  

путь считается.  smile 

Цитата(RooR @  19.1.2007,  23:18 Найти цитируемый пост)
 да и вообще что ты сделал, посчитал функцию S???

посчитал функцию S(x) для x=2

Цитата

 такчто функции отпадают

не увидел этого в задании

Цитата(RooR @  19.1.2007,  23:18 Найти цитируемый пост)
 задача на циклы

ну перепиши итеративный вариант факториала и вытащи из функции. хотя это изуродует всю суть c/с++




--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Palladin
Дата 20.1.2007, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Пусть уродует, эт у меня препод просто такойsmile)) надо сделать все с помощью чисто циклов, да и не в функции дело, если б надо было я б переписалsmile) тут ниче сложного нет, но почему мой код не пашет, возьмите ктонить мой код и исправьте, не пишите свой, а то потом мне придется снова писать что нельзя юзать здесь тото и тото

Плзsmile  smile 


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
zkv
Дата 20.1.2007, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 21
Всего: 92



RooR, возможно вы задание не до конца поняли, попробуйте это smile
я писал учитывая ваше пожелание избежать функций
Код

int main()
{
    double x,a,b,h,s,y,fact;
    int i,n,k;
    //input
    cout<<"Vvedite Xn: ";
    cin>>a;
    cout<<endl;
    cout<<"Vvedite Xk: ";
    cin>>b;
    cout<<endl;
    cout<<"Vvedite shag(h): ";
    cin>>h;
    cout<<endl;
    cout<<"Vvedite N ";
    cin>>n;
    cout<<endl;
    //точность e имеет значение
    static const double e = 2.71828182845904523536;
    for( x = a; x <= b; x += h )
    {
        //y(x)
        y=( pow(e,x) + pow(e,-x) ) / 2;
        //S(x)
        s = 0;
        for( k = 0; k <= n; ++k )
        {
            //(2k)!
            fact = 1;
            for( i = 2; i <= 2*k; ++i )
                fact *= i;

            s += pow( x, 2*k ) / fact;
        }
        //output
        cout<<"\n x = "<<x<<" y(x) = "<<y<<" S(x) = "<<s<<" |y(x) - S(x)| = "<<abs( y - s ); 
    }
    return 0;
}
 
PM MAIL   Вверх
Palladin
Дата 20.1.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Все может быть, дак ты хочеш сказать что функцию Y(x) надо только раз, а потом считать всю сумму S(x) и сравнивать???? я точно незнаю, мне просто дали задание и все, лан ща проверю, сенкс


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Rockie
Дата 20.1.2007, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 13
Всего: 31



Цитата(RooR @  20.1.2007,  14:35 Найти цитируемый пост)
Все может быть, дак ты хочеш сказать что функцию Y(x) надо только раз, а потом считать всю сумму S(x) и сравнивать???? 

ну конечно, в описании Y же не указан значок суммы по интевалу



Это сообщение отредактировал(а) Rockie - 20.1.2007, 14:39


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Palladin
Дата 20.1.2007, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Все пашет сенкс
Плюс за опыт в таком делеsmile


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
sergejzr
Дата 23.1.2007, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 11
Всего: 360



Внимание! Эта тема не соответствует правилам форума

Заголовок темы не отражает её суть, или несколько вопросов в одной теме.

Ознакомьтесь с правилами! http://forum.vingrad.ruhttp://forum.vingra...ct-SR/f-27.html[ММ]

Тема перенесена в Центр Помощи


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0623 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.