Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 29.10.2014, 13:17   #1 (permalink)
Sopel
Человек
 
Регистрация: 19.11.2010
Сообщений: 882
Записей в дневнике: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 164
По умолчанию Простенькая программа на C

Всем доброго времени суток. Нужна помощь.
Написать программу по условию задачи №1 . При вводе числа x надо сделать отсев недопустимых значений (типа избежать деления на ноль)
Вот мой код программы. Просьба либо исправить, либо указать на ошибки, либо сказать что правильно, если оно так. Заранее спасибо.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.14159265
int main (void)
{ double a,x;
do {printf ("X=");
scanf ("%lf", &x);
}
while (x<=0 || sin(x*PI/180)==0);

a=(1/tan(x*PI/180)-exp(sqrt(x)))/(log(abs(5*x))+1/(atan(x)*180/PI*atan(x)*180/PI));
printf("%.5lf\n", a);
system("pause");
return(0);
}
Миниатюры
aacuiyiiue.png  
Sopel вне форума   Ответить с цитированием

Старый 29.10.2014, 13:17
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Дам вам темы в которых возможно есть ответы на интересующие вас вопросы

PaperHell - простенькая убивалка времени
Простенькая задачка на Си
простенькая передняя панель
Программа на С
Программа на C++
Простенькая 5.1 из подручных средств

Старый 29.10.2014, 16:40   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ошибок, конечно, куча.
Прежде всего, зачем все эти x*PI/180? У Вас же там не чистая тригонометрия, а и другие функции (экспонента, логарифм, арктангенс), следовательно, аргумент должен задаваться сразу и исключительно в абсолютных единицах, каковым в тригонометрии соответствуют радианы. Если же вы непременно хотите аргумент задать в градусах, то потрудитесь сделать перевод всюду, и под экспонентой, и под логарифмом, и под арктангенсом, а проще ввести еще переменную, например, z=x*PI/180 и уже формулу строить от z. Но, повторяю, это чушь: никто никогда градусной меры под арктангенс, логарифм или экспоненту не ставит! Поэтому еще раз: все эти PI/180 надлежит просто выкинуть!
Это: while (x<=0 || sin(x*PI/180)==0); вообще непонятно что и зачем - какой-то невразумительный цикл без тела...
Для того, чтобы не возникло ошибки, следует исключить значения
x = k*PI, k = 0, ±1, ±2, ±3...
потому что в этих точках котангенс не определён, а кроме того, при х=0 неопределён еще и логарифм.
Vladimir_S вне форума   Ответить с цитированием
Старый 29.10.2014, 20:23   #3 (permalink)
Sopel
Человек
 
Регистрация: 19.11.2010
Сообщений: 882
Записей в дневнике: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 164
По умолчанию

Спасибо большое
А этот невразумительный цикл - это цикл с постусловием (тело выше условия)
Sopel вне форума   Ответить с цитированием
Старый 29.10.2014, 21:14   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Sopel Посмотреть сообщение
А этот невразумительный цикл - это цикл с постусловием (тело выше условия)
А, да - и впрямь. Извините.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 13:38.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.