• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Простенькая программа на C

  • Автор темы Автор темы Sopel
  • Дата начала Дата начала

Sopel

Человек
Регистрация
18 Ноя 2010
Сообщения
882
Реакции
5
Баллы
0
Простенькая программа на 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);
}
 

Вложения

  • Безымянный.png.webp
    Безымянный.png.webp
    11.1 KB · Просмотры: 50
Ошибок, конечно, куча.
Прежде всего, зачем все эти 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 неопределён еще и логарифм.
 
Спасибо большое
А этот невразумительный цикл - это цикл с постусловием (тело выше условия)
 
Назад
Сверху