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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2016, 13:27   #1
Антон-99
Новичок
Джуниор
 
Регистрация: 02.03.2016
Сообщений: 1
По умолчанию Помогите решить задачу на C#

Помогите решить задачу на C#
https://yadi.sk/i/Xbbp9-7zpuRhp
Антон-99 вне форума Ответить с цитированием
Старый 04.03.2016, 18:18   #2
ProBeginner
Форумчанин
 
Регистрация: 22.02.2016
Сообщений: 145
По умолчанию Помощь студентам по программированию

Помощь студентам в решении задач по программированию начинается с изложения задачи и попытки её решения.
Возьму в кредит мильён по 100% годовых на сто лет.
ProBeginner вне форума Ответить с цитированием
Старый 04.03.2016, 18:44   #3
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Если честно, у меня не хватило мозгов составить такой цикл, как описано в задаче. Если кто покажет, то плюсону в репу.
8Observer8 вне форума Ответить с цитированием
Старый 04.03.2016, 18:52   #4
ProBeginner
Форумчанин
 
Регистрация: 22.02.2016
Сообщений: 145
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Если честно, у меня не хватило мозгов составить такой цикл
на каждой итерации просто переопределяйте x=sin(x)
Возьму в кредит мильён по 100% годовых на сто лет.
ProBeginner вне форума Ответить с цитированием
Старый 04.03.2016, 19:03   #5
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Я хочу увидеть решение, типа такого:

Код:
public static float CalcExpression(int n, float x)
{
    float result = 0f;

    // Вычисление

    return result;
}
8Observer8 вне форума Ответить с цитированием
Старый 05.03.2016, 12:26   #6
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

ProBeginner, спасибо за подсказку!

До меня дошло:

Код:
using System;

namespace SinSinSinX
{
    public class Expressions
    {
        public static double CalcSinSinX(int n, double x)
        {
            double result = 0.0;
            double a = x;

            for (int i = 0; i < n; i++)
            {
                a = Math.Sin(a);
                result += a;
            }

            return result;
        }
    }
}
Юнит тесты:

Код:
using System;
using NUnit.Framework;
using SinSinSinX;

namespace SinSinSinXTests
{
    [TestFixture]
    public class SinSinSinXTests
    {
        private const double x = Math.PI / 6.0; // 60 Degrees
        private double Sin_x = Math.Sin(x);
        private const double delta = 0.001;

        [SetUp]
        public void SetUp()
        {

        }

        [Test]
        public void TestCalcExpression_OneArgs_Result()
        {
            int n = 1;

            double expected = Sin_x;
            double actual = Expressions.CalcSinSinX(n, x);

            Assert.AreEqual(expected, actual, delta);
        }

        [Test]
        public void TestCalcExpression_TwoArgs_Result()
        {
            int n = 2;

            double expected = Sin_x + Math.Sin(Sin_x);
            double actual = Expressions.CalcSinSinX(n, x);

            Assert.AreEqual(expected, actual, delta);
        }

        [Test]
        public void TestCalcExpression_ThreeArgs_Result()
        {
            int n = 3;

            double expected = Sin_x + Math.Sin(Sin_x) +
                Math.Sin(Math.Sin(Sin_x));
            double actual = Expressions.CalcSinSinX(n, x);

            Assert.AreEqual(expected, actual, delta);
        }

        [Test]
        public void TestCalcExpression_FourArgs_Result()
        {
            int n = 4;

            double expected = Sin_x + Math.Sin(Sin_x) +
                Math.Sin(Math.Sin(Sin_x)) +
                Math.Sin(Math.Sin(Math.Sin(Sin_x)));
            double actual = Expressions.CalcSinSinX(n, x);

            Assert.AreEqual(expected, actual, delta);
        }

        [Test]
        public void TestCalcExpression_FiveArgs_Result()
        {
            int n = 5;

            double expected = Sin_x + Math.Sin(Sin_x) +
                Math.Sin(Math.Sin(Sin_x)) +
                Math.Sin(Math.Sin(Math.Sin(Sin_x))) +
                Math.Sin(Math.Sin(Math.Sin(Math.Sin(Sin_x))));
            double actual = Expressions.CalcSinSinX(n, x);

            Assert.AreEqual(expected, actual, delta);
        }
    }
}

Последний раз редактировалось 8Observer8; 05.03.2016 в 12:28.
8Observer8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачу Кудерек Помощь студентам 2 06.01.2015 15:28
помогите решить задачу Gabriel Паскаль, Turbo Pascal, PascalABC.NET 8 09.01.2009 22:18