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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2019, 05:49   #1
seriy_volk 228
Новичок
Джуниор
 
Регистрация: 23.10.2019
Сообщений: 3
По умолчанию Не работает программа в Pascal

Возникла проблема при подготовке лабы в Pascal
Ошибку не выдаёт, лишь "NaN" в окне вывода
Код:
var s,x,a,b,c:real;y,z:integer;
  begin
    z:= 3;
    y:=1;
    b:=0;
    s:=0;
    x:=0.95;
    while z<=4 do
    begin
      while z<=5 do
        begin
        a:=(abs(sqr(sin(pi/y)))-exp(ln(cos((2*pi-x)/z))*3))/(1+(x*y)/(sqr(z-1)+sqr(z-1)));
        b:=b+a;
        z:=z+1
        end;
    c:=(ln(-(z+x)/8)+arctan((2*x)/z))/(1+exp(ln(cos((pi+x)/(2*z)))*3))-b;
    s:=s+c;
    y:=y+1
    end;
  writeln(s)
  end.
Прошу помочь, 2 дня до защиты
seriy_volk 228 вне форума Ответить с цитированием
Старый 23.10.2019, 06:47   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Зачем вам внешний цикл, если он выполняется один раз?
ln(-(z+x)/8) = ln(-(5+0)/8)=ln(-5/8). Чему равен логарифм отрицательного числа?
p51x вне форума Ответить с цитированием
Старый 23.10.2019, 10:55   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Хорошо бы опубликовать исходное задание - понять, накосячено ли при переносе в код или само задание "с придурью" (бывает и такое)
digitalis вне форума Ответить с цитированием
Старый 23.10.2019, 23:50   #4
seriy_volk 228
Новичок
Джуниор
 
Регистрация: 23.10.2019
Сообщений: 3
По умолчанию

Большое спасибо, я совершенно забыл про ОДЗ
Если кому было интересно, прикладываю задания
Что касается внешнего цикла, то он выполняется 2 раза
Изображения
Тип файла: png Screenshot_1.png (43.5 Кб, 45 просмотров)
seriy_volk 228 вне форума Ответить с цитированием
Старый 24.10.2019, 06:40   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от seriy_volk 228 Посмотреть сообщение
Что касается внешнего цикла, то он выполняется 2 раза
Нет. 1 и тут z=6 и все, если раньше не сдохнет
Код:
c:=(ln(-(z+x)/8)+arctan((2*x)/z))/(1+exp(ln(cos((pi+x)/(2*z)))*3))-b;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.10.2019, 09:31   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

А логарифм то зачем?
p51x вне форума Ответить с цитированием
Старый 24.10.2019, 20:49   #7
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

А кубический корень чем извлекать будем ? Но там логарифм квадрата = положительного числа, так что с логарифмом затыка не будет.

Последний раз редактировалось digitalis; 24.10.2019 в 20:54.
digitalis вне форума Ответить с цитированием
Старый 24.10.2019, 21:15   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Я про первый. Хотя и со вторым беда, в коде не квадрата, не корня.
p51x вне форума Ответить с цитированием
Старый 24.10.2019, 21:45   #9
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Я вот думаю: кому моча мысль в бошку стукнула - закручивать такие мастодонто-образные бессмысленные формулы. Попробую, думаю, хватит ли терпения. На Делфи.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var z: integer ; x,s : Extended ;
//
function cmpt(z:integer;x:Extended) : Extended ;
var tmp1,tmp2,tmp3,tmp4: Extended ; y: integer ;
begin
  tmp1 := Exp((z+x)/-8)+ ArcTan (2*x/z) ;
  tmp3 := Cos((Pi+x)/(z+z)) ;
  tmp2 := 1.0 + Exp(Ln(tmp3*tmp3)/3) ;
//  Memo1.Lines.Add(Format('%9.6f %9.6f',[tmp3,tmp2])) ;
  tmp1 := tmp1/tmp2 ;
  tmp2 := 0 ;
  for y := 1 to 5 do
    begin
       tmp3 := Sin(Pi/y) ;
       tmp4 := Cos((2*Pi-x)/z) ;
       tmp3 := Abs(tmp3*tmp3-tmp4*tmp4*tmp4) ;
//       Memo1.Lines.Add(Format('%3d %9.6f %9.6f',[y,tmp3,tmp4])) ;
       tmp2 := tmp2 + tmp3/(1 + x*y/(z*z-z-z+y*y-y-y+2))
// в эту смешную скобку я раскрутил 2 квадратных трехчлена
    end ;
    cmpt := tmp1 - tmp2;
end ;
//
begin
  x := 0.95 ; s := cmpt(3,x) + cmpt(4,x) ;
  Memo1.Lines.Add(Format('= %9.6f',[s]))
end ;
Вроде правильно. И даже что-то выдает. Цены на кондомы в Антарктиде.

А он мне говорит: "Изобразите-ка квадратный трехчлен". А я не то что изобразить - вообразить такое не могу.

Последний раз редактировалось digitalis; 25.10.2019 в 11:08.
digitalis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Pascal] НЕ работает программа pomogitemneplz Помощь студентам 1 18.12.2018 09:05
[Pascal] типы данных,не работает программа MachineMan Паскаль, Turbo Pascal, PascalABC.NET 2 14.07.2017 10:15
Не работает программа Pascal ABC(функция) kseenq Помощь студентам 2 05.12.2014 02:54
Работа со строками(Pascal)(не работает программа) mxax Помощь студентам 1 29.12.2011 18:25
Не могу разобраться как работает программа (Pascal ABC) Amid1990 Помощь студентам 1 04.07.2011 01:42