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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2016, 23:16   #1
motivator
Пользователь
 
Регистрация: 26.10.2016
Сообщений: 12
По умолчанию Что не так в программе? программа для вычисления вектора X по заданной формуле. Паскаль.


Вот задача.
Вот решение.
Код:
program zad_3;
function tg(x:real):real;
begin
tg:=0;
if cos(x)=0 then writeLn(' ошибка при расчете tg x=',x)
else
tg:=sin(x)/cos(x)
end;
var
j, m: integer;
x: array[1..10] of real;
begin
readln(m);
readln(x[1], x[2], x[3]);
for j:=4 to m do
begin
x[j]:=power(tg(x[j-1]),1/3)-ln(abs(x[j-1]));
writeln(x[j]:3:3);
end;
end.


Что не так, выводит наны.

Последний раз редактировалось Вадим Мошев; 09.11.2016 в 05:28.
motivator вне форума Ответить с цитированием
Старый 27.10.2016, 23:21   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Рекомендую посмотреть на значение каждой переменной, которая участвует в расчётах.
NaN Возникает в том случае, когда:
1. Делится нуль на нуль
2. Из отрицательного числа извлекается корень чётной степени
3. Аргумент логарифма - нуль или отрицателен.

И вообще, в тех случаях, когда математическое выражение нельзя вычислить в силу недопустимости аргумента (за исключением деления на нуль НЕ нуля)

Последний раз редактировалось Вадим Мошев; 27.10.2016 в 23:23.
Вадим Мошев вне форума Ответить с цитированием
Старый 27.10.2016, 23:43   #3
motivator
Пользователь
 
Регистрация: 26.10.2016
Сообщений: 12
По умолчанию

Даже если не везде нан выводит
6
8
2
4
-0.336
NaN
NaN
????
motivator вне форума Ответить с цитированием
Старый 28.10.2016, 00:47   #4
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

А ну, проанализируй фотку:

12.jpg



Что ты думаешь по этому поводу?

Последний раз редактировалось ura_111; 28.10.2016 в 00:49.
ura_111 вне форума Ответить с цитированием
Старый 08.11.2016, 23:31   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

попробуйте такой код:

Код:
program zad_3;

function tg(x: real): real;
begin
  tg := 0;
  if cos(x) = 0 then writeLn('#error# tg(',x,') undefined.')
  else
    tg := sin(x) / cos(x)
end;

function sqrt3(x:real):real;
var absx : real;
begin
   if x<0 then sqrt3 := -1*Power(abs(x),1/3)
   else sqrt3 := Power(x,1/3)
end;

var
  k, m: integer;
  x: array[1..10] of real;

begin
  readln(m);
  readln(x[1]);
  for k := 2 to m do
  begin
    x[k] := sqrt3(tg(x[k - 1])) - ln(abs(x[k - 1]));
    writeln(x[k]);
  end;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.11.2016, 00:00   #6
motivator
Пользователь
 
Регистрация: 26.10.2016
Сообщений: 12
По умолчанию

Большое спасибо, Сергей.
motivator вне форума Ответить с цитированием
Старый 09.11.2016, 00:02   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Не за что! Успехов!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать рекурсивную функцию для вычисления корня k-й степени по заданной формуле E1337 Паскаль, Turbo Pascal, PascalABC.NET 5 24.01.2016 15:25
Программа с приглашением для ввода числового вектора V. Не пойму что не так (assembler(NASM)) GlitchyHydra Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 20.06.2015 03:25
Программа для вычисления значения функции - по формуле найти сумму ряда с заданной точностью КСЕНИЯ2 Паскаль, Turbo Pascal, PascalABC.NET 4 14.03.2015 15:08
Программа для вычисления выражения по формуле (вычисление числового ряда) Vitalyas Паскаль, Turbo Pascal, PascalABC.NET 13 30.11.2014 05:33
Составить программу для вычисления элементов одномерного массива по заданной формуле Ваня 37 Паскаль, Turbo Pascal, PascalABC.NET 0 24.12.2012 14:42