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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2009, 22:39   #1
kafatron
Новичок
Джуниор
 
Регистрация: 04.09.2009
Сообщений: 2
Вопрос трабла с прогой

пишу для универа прогу (над прогой не смеятся- 1-й курс)=) пишу на С#. все время выдает одинаковые для обоих z ( и не верные!!!) значения.
вот рабочая часть программы:
String a,b;
double a1,b1,z,z1;
Console.WriteLine("Введите значение a");
a = Console.ReadLine();
Console.WriteLine("Введите значение b");
b = Console.ReadLine();
a1 = Convert.ToDouble(a);
b1 = Convert.ToDouble(b);
z = Math.Pow((Math.Cos(a1) - Math.Cos(b1)),2) - Math.Pow((Math.Sin(a1) - Math.Sin(b1)),2);
Console.WriteLine(z);
z1 = (-4)*Math.Pow(Math.Sin((a1 - b1) / 2), 2) * Math.Cos(a1 + b1);
Console.WriteLine(z1);

подозрение падает на функцию син/кос, так как при вычеслении косинуса из 45 выдает иррациональное число
помогите пожалуйста найти ошибку
P.s а и b задаются юзером любые. но правильные(систему коррекции ошибок не надо) надо вычислить значения выражений:
z=((cos(a)-cos(b))^2-(sin(a)-sin(b))^2
z1=-4*sin((a-b)/2)^2*cos(a+b)

трабла точно в выражениях- проверял значения после функции Convert.ToDouble- они норм.
kafatron вне форума Ответить с цитированием
Старый 04.09.2009, 23:00   #2
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Ты знаешь, что в sin/cos нужно передавать угол в радианах?

Код:
class Program
    {
        static double GradusToRadian(double Angle)
        {
            return Angle * Math.PI / 180;
        }

        static void Main(string[] args)
        {
            String a, b;
            double a1, b1, z, z1;
            Console.WriteLine("Введите значение a");
            a = Console.ReadLine();
            Console.WriteLine("Введите значение b");
            b = Console.ReadLine();
            a1 = GradusToRadian(Convert.ToDouble(a));
            b1 = GradusToRadian(Convert.ToDouble(b));
            z = Math.Pow((Math.Cos(a1) - Math.Cos(b1)), 2) - Math.Pow((Math.Sin(a1) - Math.Sin(b1)), 2);
            Console.WriteLine(z);
            z1 = (-4) * Math.Pow(Math.Sin((a1 - b1) / 2), 2) * Math.Cos(a1 + b1);
            Console.WriteLine(z1);

            Console.ReadKey();
        }
    }
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 04.09.2009, 23:05   #3
kafatron
Новичок
Джуниор
 
Регистрация: 04.09.2009
Сообщений: 2
По умолчанию

спс очень помог=) о радианах я задумывался но типа rad и чего-то подобного не нашел=)
kafatron вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Трабла с переносом данных... winfacks Microsoft Office Excel 22 30.04.2009 11:50
Трабла с Apache2.2+ PHP5.2.4 vicvtor PHP 1 24.02.2009 14:14
трабла с PlaySound C-мэн Win Api 2 16.11.2008 18:35
Трабла с RaveReport5 heavy Общие вопросы Delphi 0 23.02.2007 15:14
Трабла с иконкой дисков, XP SP-2 Алекс. Софт 21 15.12.2006 15:51