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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2010, 22:53   #1
StudentPolitech
Форумчанин
 
Аватар для StudentPolitech
 
Регистрация: 21.11.2008
Сообщений: 400
Печаль C#, ошибка в коде

Никак не могу понять где ошибка, помогите пожалуйста
Задание: Для действительных чисел составить программу вычисления суммы ряда с точностью , последнего слагаемого, включенного в сумму, и его номер:


Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Variant1z3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private double formula(double x, double e)
        {
            double chisl=0, znam=0, znamf=0, znam2=0, summa=0,summaf=1;
            int k=-1;
            if (summaf <= e)
            {
                k++;
                chisl=Math.Pow(-1,k+1)*Math.Pow(x,2*k-1);
                znam = 2 * k - 1;
                znam2 = 2 * k + 1;
                znamf = znam2;
                for (int i = 1; i <= znamf; i++)
                {
                    znam2 = 1;
                    znam2 = znam2*i;             
                }
                znam = znam * znam2;
                summaf = chisl / znam;
                summa = summa + summaf;
                summaf = Math.Abs(summaf);
            }
            return summa;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            double b = 0;
            double otvet = 0, c = 0;
            b = Convert.ToDouble(textBox1.Text);
            c = Convert.ToDouble(textBox2.Text);
            otvet = formula(b, c);
            label4.Text = Convert.ToString(otvet);
        }
    }
}
Изображения
Тип файла: jpg формула2.jpg (7.8 Кб, 45 просмотров)
Винда, KIS 2010, книжка по С/С++, остальное неважно........
StudentPolitech вне форума Ответить с цитированием
Старый 19.09.2010, 13:20   #2
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Так вроде факториал неправильно считается
Код:
                znam2 = 2 * k + 1;
                znamf = znam2;
                if(znamf==1) znam2=1;
                else 
                     {
                               znam2=1;
                               for(int i=1;i<znamf;i++)
                                 znam2*=i;
                      }
                znam = znam * znam2;
                summaf = chisl / znam;
                summa = summa + summaf;
                summaf = Math.Abs(summaf);
Писал здесь,по идеи надо еще проверять znamf==0,но т.к. тут 2к+1,т.е. меньше 1! быть не может и так сойдет.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 19.09.2010, 13:52   #3
StudentPolitech
Форумчанин
 
Аватар для StudentPolitech
 
Регистрация: 21.11.2008
Сообщений: 400
По умолчанию

хм, почему, вроде правильно
Код:
  for (int i = 1; i <= znamf; i++)
                {
                    znam2 = 1;
                    znam2 = znam2*i;             
                }
Хотя действительно есть, следует делать вот так, но почему то все равно не очень всё хорошо, работает только при e=1
Код:
  
    znam2 = 1;
for (int i = 1; i <= znamf; i++)
                {
                
                    znam2 = znam2*i;             
                }
Помощи не дождался, пришлось сделать самому xDDDD.

Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Variant1z3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private double formula(double x, double e)
        {
            double chisl=0, znam=0, znamf=0, znam2=0, summa=0,summaf=1;
            int k=-1;
            for (int j = 0; summa <= e; j++ )
            {
                k++; 
                chisl = Math.Pow(-1, k + 1) * Math.Pow(x, 2 * k - 1); 
                znam = 2 * k - 1;           
                znam2 = 2 * k + 1;          
                znamf = znam2;              
                znam2 = 1;                  
                for (int i = 1; i <= znamf; i++)
                {

                    znam2 = znam2 * i;          
                }
                znam = znam * znam2;    
                summaf = chisl / znam;  
                summa = summa + summaf; 
                summaf = Math.Abs(summaf); 

            }
            return summa;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            double b = 0;
            double otvet = 0, c = 0;
            b = Convert.ToDouble(textBox1.Text);
            c = Convert.ToDouble(textBox2.Text);
            otvet = formula(b, c);
            label4.Text = Convert.ToString(otvet);
        }
    }
}
Винда, KIS 2010, книжка по С/С++, остальное неважно........

Последний раз редактировалось StudentPolitech; 19.09.2010 в 21:33.
StudentPolitech вне форума Ответить с цитированием
Старый 19.09.2010, 21:34   #4
StudentPolitech
Форумчанин
 
Аватар для StudentPolitech
 
Регистрация: 21.11.2008
Сообщений: 400
По умолчанию

Тему можно закрыть
Винда, KIS 2010, книжка по С/С++, остальное неважно........
StudentPolitech вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка в коде ZhukSTReeT Общие вопросы C/C++ 6 30.08.2010 00:42
Ошибка в коде Cronos20 PHP 3 09.07.2010 23:31
Ошибка в коде . vedro-compota Общие вопросы Delphi 3 08.06.2010 11:10
Ошибка в коде. fanyl Паскаль, Turbo Pascal, PascalABC.NET 10 21.09.2009 12:09
Ошибка в коде nikleb Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 10.03.2008 22:48