Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 25.09.2011, 02:20   #1 (permalink)
dimaua2
Member
 
Регистрация: 07.05.2011
Сообщений: 162
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите с лабораторкой, Паскаль

Есть задание я его решил на половину...там кароче гужно в паскаль перевести я пол уравнения сделал, а икс не понял как...
посмотрите пожалуйста и помогите просто написать Y:=.....
задание lb_1.jpg
вот, что получилось (строчка подчеркнута по бокам...место где я не дописал тоже подчеркнуто снизу..помогите написать верный вариант этой строчки) lb_2.jpg

Замечание:
Наведайтесь сюда, пожалуйста: у нас не принято пользоваться сторонними хостингами.

Модератор



Последний раз редактировалось dimaua2; 25.09.2011 в 02:25
dimaua2 вне форума   Ответить с цитированием

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

Так же вам будут кстати эти темы, ознакомьтесь

Помогите решить. Паскаль
Паскаль. Помогите срочно
Помогите разобраться, Паскаль
Помогите решить задачи на Паскаль

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

Ну что же - всё правильно, просто там, где у Вас подчеркнуто, нужно заменить.
У Вас:
" sin(x)".
Надо:
"exp(sin(x)*Ln(x))"
И всего-то.
P.S. Кстати, деление на exp(-x) можно заменить умножением на exp(x). Но это уж дело вкуса.
Vladimir_S вне форума   Ответить с цитированием
Старый 25.09.2011, 12:02   #3 (permalink)
dimaua2
Member
 
Регистрация: 07.05.2011
Сообщений: 162
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Ну что же - всё правильно, просто там, где у Вас подчеркнуто, нужно заменить.
У Вас:
" sin(x)".
Надо:
"exp(sin(x)*Ln(x))"
И всего-то.
P.S. Кстати, деление на exp(-x) можно заменить умножением на exp(x). Но это уж дело вкуса.
Y:= EXP ((1/5)* ln (exp(sin(x)*Ln(x)) + 2*sqr(x))) / EXP (-x);
вот так?
просто я думал, думал и вот так еще пытался....
Y:= EXP ((1/5)* ln (x*sin(x) + 2*sqr(x))) / EXP (-x);
dimaua2 вне форума   Ответить с цитированием
Старый 25.09.2011, 12:29   #4 (permalink)
dimaua2
Member
 
Регистрация: 07.05.2011
Сообщений: 162
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от dimaua2 Посмотреть сообщение
Y:= EXP ((1/5)* ln (exp(sin(x)*Ln(x)) + 2*sqr(x))) / EXP (-x);
вот так?
просто я думал, думал и вот так еще пытался....
Y:= EXP ((1/5)* ln (x*sin(x) + 2*sqr(x))) / EXP (-x);


===================================
по вашему способу выдает ошибку(
lb_3.png lb_4.png

по моему тоже lb_5.png

точно такая же ошибка....


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

Цитата:
Сообщение от dimaua2 Посмотреть сообщение
по вашему способу выдает ошибку, по моему тоже точно такая же ошибка....
Так. Прежде всего, я прошу вас усвоить одну истину: текст (листинг) программы - это не школьное сочинение, тут требуется АБСОЛЮТНАЯ точность и правильность расстановки всех значков. "Общих соображений" транслятор не понимает. А что у Вас? Да целый букет ошибок, неряшливостей и т.п. Что-то написали шаляй-валяй и хотите, чтобы программа заработала? Нет, не пойдёт. Тут только аргумент оператора writeln чего стОит! Почему Вы вплюхали туда разделитель "точка с запятой"? Ему там делать ровно нечего, нужна запятая. Текстовый вывод 'Y=' не взят в кавычки. Ну и т.п.
В общем, вот работающий код:
Код:
uses CRT;
var x,y:real;
begin
 clrscr;
 write('x= ');
 readln(x);
 Y:=Exp(1/5*Ln(exp(sin(x)*Ln(x))+2.0*sqr(x)))/Exp(-x);
 Writeln('x= ',x:0:2,'  Y= ',Y:0:8);
 Readln;
end.
Цитата:
П.С:сори за картинки в след раз сделаю как надо (просто миниатюрами в текст я не понял как вставить)
Да уж, пожалуйста. Сейчас я опять сделал это за Вас.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 25.09.2011, 14:51   #6 (permalink)
dimaua2
Member
 
Регистрация: 07.05.2011
Сообщений: 162
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Так. Прежде всего, я прошу вас усвоить одну истину: текст (листинг) программы - это не школьное сочинение, тут требуется АБСОЛЮТНАЯ точность и правильность расстановки всех значков. "Общих соображений" транслятор не понимает. А что у Вас? Да целый букет ошибок, неряшливостей и т.п. Что-то написали шаляй-валяй и хотите, чтобы программа заработала? Нет, не пойдёт. Тут только аргумент оператора writeln чего стОит! Почему Вы вплюхали туда разделитель "точка с запятой"? Ему там делать ровно нечего, нужна запятая. Текстовый вывод 'Y=' не взят в кавычки. Ну и т.п.
В общем, вот работающий код:
Код:
uses CRT;
var x,y:real;
begin
 clrscr;
 write('x= ');
 readln(x);
 Y:=Exp(1/5*Ln(exp(sin(x)*Ln(x))+2.0*sqr(x)))/Exp(-x);
 Writeln('x= ',x:0:2,'  Y= ',Y:0:8);
 Readln;
end.
Да уж, пожалуйста. Сейчас я опять сделал это за Вас.
спасибо, сейчас посмотрю....задачу делал сам т.к. информатик толком не объяснил, а задание уже дал....у нас он старенький, иногда бывает объяснит одной группе и думает, что все объяснил, а задание всем даеит и причем разное...я читал в инете, что понял то и пытался написать
dimaua2 вне форума   Ответить с цитированием
Старый 25.09.2011, 15:02   #7 (permalink)
dimaua2
Member
 
Регистрация: 07.05.2011
Сообщений: 162
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от dimaua2 Посмотреть сообщение
спасибо, сейчас посмотрю....задачу делал сам т.к. информатик толком не объяснил, а задание уже дал....у нас он старенький, иногда бывает объяснит одной группе и думает, что все объяснил, а задание всем даеит и причем разное...я читал в инете, что понял то и пытался написать
заработало!!!спасибо
правда я немного не понял с разу написал реадлн и врайтлн с маленькой буквы и не ставил пробелы у всех строчек после бегин в общем вышло так
uses CRT;
var x,y:real;
begin
clrscr;
write('x= ');
readln(x);
Y:=Exp(1/5*Ln(exp(sin(x)*Ln(x))+2.0*sqr(x)))/Exp(-x);
writeln('x= ',x:0:2,' Y= ',Y:0:8);
readln;
end.

выдало ошибку, написал в точности как сделали вы и вуаля заработало....выходит надо всегда отступать? и с большой те слова писать? (или я мог случайно где-то ошибиться и ничего не получалось?просто я читал что вроде паскаль к регистру не чуствителен)
dimaua2 вне форума   Ответить с цитированием
Старый 25.09.2011, 15:09   #8 (permalink)
dimaua2
Member
 
Регистрация: 07.05.2011
Сообщений: 162
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

и можно еще один вопросик, когда пишу число 9 все ок когда пишу 200 пишет
Error 205: Floating point overflow.
вы знаете, что это значит?
dimaua2 вне форума   Ответить с цитированием
Старый 25.09.2011, 15:29   #9 (permalink)
dimaua2
Member
 
Регистрация: 07.05.2011
Сообщений: 162
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

и если все же скажите скажите как сделать циклически, что бы прога повторялась...а то я несколько раз вставлял код и оно поторялось, но может как то можно сделать без вставки кода как то бесконечно
dimaua2 вне форума   Ответить с цитированием
Старый 25.09.2011, 15:55   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от dimaua2 Посмотреть сообщение
заработало!!!спасибо правда я немного не понял с разу написал реадлн и врайтлн с маленькой буквы и не ставил пробелы у всех строчек после бегин
Расстановка регистров букв, а также отступов, "лесенок" и прочего форматирования листинга - исключительно для удобства и повышения читабельности. Транслятору это всё равно.
Цитата:
Сообщение от dimaua2 Посмотреть сообщение
и можно еще один вопросик, когда пишу число 9 все ок когда пишу 200 пишет Error 205: Floating point overflow. вы знаете, что это значит?
Это значит переполнение разрядной сетки, в данном случае машина не может справиться с вычислением Exp(x) при таких огромных аргументах. Поэтому значения х нужно выбирать разумно.
Цитата:
Сообщение от dimaua2 Посмотреть сообщение
и если все же скажите скажите как сделать циклически, что бы прога повторялась...а то я несколько раз вставлял код и оно поторялось, но может как то можно сделать без вставки кода как то бесконечно
Запросто. Например, так:
Код:
uses CRT;
var x,y:real;
begin
 clrscr;
 Repeat
  write('Enter x, "0" to quit. x= ');
  readln(x);
  if (x<0) or (x>20) then
   writeln('Invalid x!')
  else
   if x>0 then
    begin
     Y:=Exp(1/5*Ln(exp(sin(x)*Ln(x))+2.0*sqr(x)))/Exp(-x);
     Writeln('x= ',x:0:2,'  Y= ',Y:0:8);
    end;
 Until x=0;
end.
Заодно там вставлен контроль диапазона допустимых значений аргумента.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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


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

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




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

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