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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2010, 22:10   #1
ITxan
 
Регистрация: 22.10.2010
Сообщений: 9
По умолчанию Не получается составить программу.


Составил программу, но с цикла не выходит, помогите, пожалуйста.
Код:
using System;

namespace Курсовая
{
    public class Program
    {
        public static void Main()
        {
            Курсовая.Задание1();
        }
    }

    public static class Курсовая
    {
        private static double M;
        private static double x = -15;
        private static double E = Math.Pow(10, -7); // c точности 

        public static void Задание1()
        {
            Console.WriteLine("Ведите значение z = ");
            double z = Convert.ToDouble(Console.ReadLine());

            for (int n = 2; n <= 7; n++)
            {
                M += Math.Pow(1 / Math.Tan(n), 2);

                double H = 2;
                for (int j = 4; H >= E; j++)
                {
                    H += z / Math.Pow(z, j) + Factorial(j);
                }
                M += H;
            }
            M = Math.Pow(1 / Math.Tan(x), 2) * M;
            Console.WriteLine("Результаты расчета: {0}", M);
        }

        public static double Factorial(double number)
        {
            if (number <= 1)
            {
                return 1;
            }
            else
            {
                return number * Factorial(number - 1); //Возвращает Factorial числа
            }
        }

    }

}
ITxan вне форума Ответить с цитированием
Старый 22.10.2010, 22:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
                
 double H = 2,hПредидущее=0;
                for (int j = 4; (H-hПредидущее)> E; j++)
                {
                    hПредидущее=H;
                    H += z / Math.Pow(z, j) + Factorial(j);
                }
ИМХО...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.10.2010, 22:59   #3
ITxan
 
Регистрация: 22.10.2010
Сообщений: 9
По умолчанию

Цикл выдает бесконечность.

Измененный код.
Код:
namespace Курсовая
{
    public class Program
    {
        public static void Main()
        {
            Курсовая.Задание1();
            Console.Read();
        }
    }

    public static class Курсовая
    {
        private static double M;
        private static double x = -15;
        private static double E = Math.Pow(10, -7); // c точности 

        public static void Задание1()
        {
            Console.Write("Ведите значение z = ");
            double z = Convert.ToDouble(Console.ReadLine());

            for (int n = 2; n <= 7; n++)
            {
                M += Math.Pow(1 / Math.Tan(n), 2);

                double H = 2, HH = 0;
                for (int j = 4; (H - HH) > E; j++)
                {
                    HH = H;
                    H += z / Math.Pow(z, j) + Factorial(j);
                }
                M += H;
            }
            M = Math.Pow(1 / Math.Tan(x), 2) * M;
            Console.WriteLine("Результаты расчета: {0}", M);
        }

        public static double Factorial(double number)
        {
            if (number <= 1)
            {
                return 1;
            }
            else
            {
                return number * Factorial(number - 1); //Возвращает Factorial числа
            }
        }

    }

}
ITxan вне форума Ответить с цитированием
Старый 23.10.2010, 21:01   #4
Xeonc
Форумчанин
 
Регистрация: 20.10.2010
Сообщений: 143
По умолчанию

Не зная сути программы - сложно что-то сказать. Сутя по попытке ее дебага
H += z / Math.Pow(z, j) + Factorial(j);
косяк тут. Неправильная формула расчета, которая в результате дает бесконечность
Да и сам цикл, выглядит странно, мягко говоря.
Код:
                for (int j = 4; (H - HH) > E; j++)
                {
                    HH = H;
                    H += z / Math.Pow(z, j) + Factorial(j);
                }
Смысла операции HH=H; я совершенно не понял. Может потому что задачи в целом не знаю
451 -870-7(три)6. Выполняю работы на заказ, гарант честности - ВМ аттестат с 60+ БЛ без претензий
Xeonc вне форума Ответить с цитированием
Старый 23.10.2010, 21:14   #5
ITxan
 
Регистрация: 22.10.2010
Сообщений: 9
По умолчанию


Последний раз редактировалось ITxan; 23.10.2010 в 21:26.
ITxan вне форума Ответить с цитированием
Старый 23.10.2010, 21:31   #6
PionerVBA
Новичок
Джуниор
 
Регистрация: 21.10.2010
Сообщений: 1
По умолчанию

Помогите пожалуйста решить задачу по программированию в среде VBA.
Вложения
Тип файла: doc Подсчитать значение функции.doc (23.5 Кб, 11 просмотров)
PionerVBA вне форума Ответить с цитированием
Старый 23.10.2010, 21:47   #7
Xeonc
Форумчанин
 
Регистрация: 20.10.2010
Сообщений: 143
По умолчанию

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

матан был очень давно, и очень неправда, но мне подсказывает чутье, что сумма этого многочлена при J от 4 до бесконечности - будет всегда стремиться к бесконечности, что у тебя и выходит. Вполне вероятно что ты переписал задание неправильно, но так же вероятно, что я совсем забыл матан и несу чушь
451 -870-7(три)6. Выполняю работы на заказ, гарант честности - ВМ аттестат с 60+ БЛ без претензий
Xeonc вне форума Ответить с цитированием
Старый 23.10.2010, 21:53   #8
ITxan
 
Регистрация: 22.10.2010
Сообщений: 9
По умолчанию

Xeonc
Преподаватель сам всем раздал эти карточки.
ITxan вне форума Ответить с цитированием
Старый 23.10.2010, 21:53   #9
Xeonc
Форумчанин
 
Регистрация: 20.10.2010
Сообщений: 143
По умолчанию

Эм. Или еще как вариант
for (int j = 4; (H - HH) < E; j++)
В цикле поменять условие с
(H - HH) > E, на (H - HH) < E. Т.к. тебе же нужно чтобы программа отработала до этой точности. Виснуть она перестала и даже выдает результат, а вот правильный ли...) Это тебе уже виднее будет
451 -870-7(три)6. Выполняю работы на заказ, гарант честности - ВМ аттестат с 60+ БЛ без претензий
Xeonc вне форума Ответить с цитированием
Старый 23.10.2010, 21:59   #10
ITxan
 
Регистрация: 22.10.2010
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Xeonc Посмотреть сообщение
Эм. Или еще как вариант
for (int j = 4; (H - HH) < E; j++)
В цикле поменять условие с
(H - HH) > E, на (H - HH) < E. Т.к. тебе же нужно чтобы программа отработала до этой точности. Виснуть она перестала и даже выдает результат, а вот правильный ли...) Это тебе уже виднее будет
Огромное Спасибо за объяснение!
ITxan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается правильно составить запрос XPath, Использую SelectSingleNode kolchakA Общие вопросы .NET 0 09.07.2010 17:32
не получается создать перую программу а точней .exe Tik-Tik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 16.02.2009 15:31