Program z1; Uses crt; Var s,t,n,E:real; begin writeln ('Введите точность'); Readln (E); s:=1; t:=1; n:=1; while abs (t)>e do begin n:=n+1; t:=t*x/n; s:=s+t; end; write ('S', S:0:4); Readkey; End.
Преподша сказала, что нужно добавить еще три строчки факториала. Вот собственно в этом и вопрос. Условие задачки на изображении.[code]
Unconnected
19.11.2010 18:47
Типа вычислить сумму ряда с заданной точностью? Если да, то на форуме уже было много раз, ищи.
Stas86
19.11.2010 18:49
Да, да, с заданной точностью.
volvo
19.11.2010 19:25
Цитата
Преподша сказала, что нужно добавить еще три строчки факториала.
Не нужен здесь факториал. Что ж за преподаватели теперь? Как только задачу начинаешь решать правильным способом - надо обязательно все испортить и учить решению неправильному???
TarasBer
19.11.2010 19:49
А где в этом коде описан икс?
Добавлено через 3 мин. И если строго по-математически, то надо не
while abs (t)>e do ...
, а как-то так:
while (x<n) and (abs(t)*n < e*(n-x)) do
это для оценки хвоста.
Stas86
19.11.2010 19:53
да, да, x пропустил.
Stas86
19.11.2010 20:32
Дак что, факториал действительно не нужен?
Гость
19.11.2010 21:22
Факториал не нужен, у тебя и так общий член нормально считается (то есть используется то, что он больше предыдущего в x/n раз). Училку не слушай.
Stas86
9.12.2010 20:34
Добрый день, посмотрите еще раз задачку. Не знаю, может это и правильно, но я так не думаю. Если запустить и ввести число, программа выдает одно и тоже значение.
Lapp
9.12.2010 20:53
Цитата(Stas86 @ 9.12.2010 16:34)
программа выдает одно и тоже значение.
И какое, если не секрет?
Stas86
9.12.2010 21:03
S=1.0000 вот так и считает
Lapp
9.12.2010 21:05
а у тебя x случайно не равен 0?
Stas86
9.12.2010 21:08
Я не знаю, я не очень хорошо разбираюсь в паскале. Поэтому и спрашиваю.
Lapp
9.12.2010 21:08
Описать-то ты x, видимо описал. Но вот дать ему нужное значение - это, конечно, задача трудновыполнимая.. Да?
Вот и считаешь для x=0 ..
Добавлено через 1 мин.
Цитата(Stas86 @ 9.12.2010 17:08)
Я не знаю, я не очень хорошо разбираюсь в паскале. Поэтому и спрашиваю.
Вставь ввод значения x.
Stas86
9.12.2010 21:13
Цитата(Lapp @ 9.12.2010 17:08)
Описать-то ты x, видимо описал. Но вот дать ему нужное значение - это, конечно, задача трудновыполнимая.. Да?
Вот и считаешь для x=0 ..
Добавлено через 1 мин.
Вставь ввод значения x.
Всмысле описать его в разделе переменных? Описал, считает так же.
TarasBer
9.12.2010 21:27
ReadLn(x) вставь перед расчётом
Stas86
9.12.2010 21:32
Цитата(TarasBer @ 9.12.2010 17:27)
ReadLn(x) вставь перед расчётом
Вставил, считает также. Давайте немного по-другому.
Program z1; Uses crt; Var s,t,n,x,E:real; begin writeln ('Введите точность'); Readln (E); Readln (x); s:=1; t:=1; n:=1; while abs (t)>e do begin n:=n+1; t:=t*x/n; s:=s+t; end; write ('S', S:0:4); Readkey; End.
Просмотрите еще раз код, что-то все равно не то, я это не вижу. А вот опытный может рассмотреть.
Вот такое задание: Разработать алгоритм и программу для вычисления суммы с заданной точностью. Получить результат. Эту задачу уже 2 недели сдать не могу, не принимает преподша.
TarasBer
9.12.2010 21:38
Какие числа ты вводишь в качестве e и x?
Stas86
9.12.2010 21:43
Цитата(TarasBer @ 9.12.2010 17:38)
Какие числа ты вводишь в качестве e и x?
В коде программы, как я понял ввода этих значений нет. Тогда подскажите, какие присвоить значения? Блин, помогите в написании, очень слабо понимаю паскаль, а сдавать надо уже завтра.
volvo
9.12.2010 22:27
Цитата
В коде программы, как я понял ввода этих значений нет.
С такими познаниями, как ты завтра что-то сдавать собираешься? У тебя программа запрашивает
Цитата
Readln (E); Readln (x);
, тебя спросили, что ты вводишь в ответ на запрос?
Stas86
9.12.2010 22:37
Я вам и говорю, что совершенно ничего не понимаю. Вы вместо того, чтобы ответить на вопрос, спрашиваете меня о том, в чем я не разбираюсь.
Freedom
9.12.2010 23:35
Цитата(Stas86 @ 9.12.2010 18:37)
Я вам и говорю, что совершенно ничего не понимаю. Вы вместо того, чтобы ответить на вопрос, спрашиваете меня о том, в чем я не разбираюсь.
Ну мы же тоже должны знать какие числа вы вводите при запуске программы,чтоб чем нибудь помоч. Вам задали простой вопрос, а вы говорите что не разбираетесь в этом.
-TarasBer-
10.12.2010 2:57
Тебе программа при старте показывает чёрное окно с мигающим курсором. Ты набираешь на клавиатуре число, нажимаешь ентер (это выполнилась строчка Readln(e)), потом вводишь второе число (икс). Если ты ничего не вводишь, то откуда ты вообще взял "программы выводит ноль"? Как она может что-то вывести, если она всё время ждёт ввода числа e?
Lapp
10.12.2010 10:32
Стас, ты извини, ничего личного.. Если бы ты прикладывал хоть какие-то минимальные усилия к тому, чтобы что-то ПОНЯТЬ (а не спихнуть), ты бы давно уже все сдал.. Уж тебе все разжевано и рот положено. Пошевели хоть одной извилиной..
Stas86
10.12.2010 16:03
Вышел я на правильный код, как я думал.
Program z1; Uses crt; Var s,t,x,E:real; n:integer; begin write('x='); readln(x); write ('Введите точность e='); readln(e); s:=1; t:=1; n:=1; while abs(t)>e do begin n:=n+1; t:=t*x/n; s:=s+t; end; write ('S=', S:0:4); Readkey; End.
Но преподша все равно говорит, что задача решена неверно. Сказала, что нужен факториал, так как в формуле присутствуют восклицательные знаки. А также, она не видит здесь степеней, которые находятся в формуле. Еще раз покажу формулу
Lapp
10.12.2010 16:14
Цитата(Stas86 @ 10.12.2010 12:03)
Но преподша все равно говорит, что задача решена неверно. Сказала, что нужен факториал, так как в формуле присутствуют восклицательные знаки. А также, она не видит здесь степеней, которые находятся в формуле.
Но она признает, что ответ правильный?
Может, она хочет, чтоб факториал был оформлен функцией?
TarasBer
10.12.2010 16:15
> Но преподша все равно говорит, что задача решена неверно.
Может, дело не в том, что код якобы неверный, а в том, что ты не можешь объяснить его работу?
> Сказала, что нужен факториал, так как в формуле присутствуют восклицательные знаки. А также, она не видит здесь степеней, которые находятся в формуле.
Ну тогда преподша слепая дура, шли её нах. Хотя скорее всего, она специально так говорит, чтобы проверить а видишь ли факториал ты? Я-то вижу, но ты, судя по уровню задаваемых вопросов, этот код сам не понимаешь. А код-то правильный, из FAQ взял? На её провокации изговнякать код не ведись, если что.
Добавлено через 2 мин. стоп.
s:=1; t:=1; n:=1; while abs(t)>e do begin n:=n+1; t:=t*x/n; s:=s+t; end;
отладчиком пользоваться умеешь? Я применю свой, встроенный в мозг
инициализация s=1 t=1 n=1 начало цикла n=2 t=x/2 s=1+x/2 ошибка!
надо s=1+x/1 после первого прохода перенеси n:=n+1 в конец цикла. Либо инициализируй его нулём, а не единицей.
Lapp
10.12.2010 16:45
Цитата(TarasBer @ 10.12.2010 12:15)
инициализируй его нулём, а не единицей.
Логично Вместо n:=1; сделай: n:=0;
TarasBer
10.12.2010 16:49
Цитата(Lapp @ 10.12.2010 12:45)
Вместо n:=1; сделай: n:=0;
Капитан Очевидность в подробностях раскрывает тайный смысл моего совета!
Lapp
10.12.2010 17:05
Цитата(TarasBer @ 10.12.2010 12:49)
Капитан Очевидность в подробностях раскрывает тайный смысл моего совета!
Вольно, боцман Инитегонулем. Сегодня по лишнему половнику баланды матросам. я добрый..
Stas86
10.12.2010 17:21
Попробую.
BanneD
17.12.2010 23:46
Program z1; Uses crt; Var y,s,t,x,E:real; n,i:integer; begin write('x='); readln(x); write ('Введите точность e='); readln(e); s:=1; t:=1; n:=1; i:=1; while abs(t)>e do begin y:=exp(i*ln(x)); n:=n*i; t:=x/n; s:=s+t; i:=i+1; end; write ('S=', S:0:4); Readln; End.
y:=exp(i*ln(x)); - это х в кадрате х в кубе х в 4-ой степени и тд
по алгоритму вроде правельно! но выводит 1
Lapp
18.12.2010 10:01
Цитата(BanneD @ 17.12.2010 19:46)
по алгоритму вроде правельно! но выводит 1
А что ты вводишь?
Пожалуйста, прочти правила. Обрати внимание на п.5 Правил Форума и п.2 правил раздела Задачи.
BanneD
19.12.2010 14:26
Цитата(Lapp @ 18.12.2010 9:01)
А что ты вводишь?
Пожалуйста, прочти правила. Обрати внимание на п.5 Правил Форума и п.2 правил раздела Задачи.
Ввожу х потому как мы же степень числа будем вычитывать! А е-это точность! тут как я понял надо найти приближенное значение числа
y:=exp(i*ln(x)); нарашиваем степень икса n:=n*i; вычисление факториала t:=x/n; присвойл переменную, иск (в степени н) деленное на факториал s:=s+t; i:=i+1;
Давай рассмотрим как должно это работать вводим х=5
2-ой круг y:=exp(i*ln(x)); 5 в степени 1=5 5 в степени 2=25 n:=n*i; 1*1=1 1*2=2 t:=x/n; т:=5/1=5 25/2=12,5 s:=s+t; S:=1+5/1=6 1+5/1+25/2=18,5 i:=i+1; i:=1+1=2 2+1=3
вроде алгоритм составлен правельно! но где то есть ошибка! так как не должно выводтиь 1 так же не вижу смысла здесь исползовать абс, так как тут полубому положительные числа выводит! но всё же дело не в абс! ах да Кап прочел правила {2. Давать заведомо ложную информацию 5. Выкладывать вредоносную информацию и программы.} ты это имел ввиду?
Lapp
19.12.2010 14:38
Цитата(BanneD @ 19.12.2010 10:26)
Ввожу х потому как мы же степень числа будем вычитывать!
Я спрашивал какие значения ты вводишь.
Цитата
ах да Кап прочел правила {2. Давать заведомо ложную информацию 5. Выкладывать вредоносную информацию и программы.} ты это имел ввиду?
Нет. Я имел в виду то, что я написал, то есть: - пункт 5 Правил Форума (не п.1.5, а п.5); - пункт 2 правил раздела Задачи (промотай эту страницу вверх, будь так добр - и увидишь 8 пунктов).
volvo
19.12.2010 14:58
Цитата
вроде алгоритм составлен правельно! но где то есть ошибка! так как не должно выводтиь 1
Может где-то и есть, только не в этой программе. Потому что при вводе X = 5 (что следует из твоего предыдущего поста) 1 в результате не получается. Получается
Введите точность e=0.001 S=9.5913
Где 1?
BanneD
19.12.2010 16:40
Цитата(Lapp @ 19.12.2010 13:38)
Я спрашивал какие значения ты вводишь. Нет. Я имел в виду то, что я написал, то есть: - пункт 5 Правил Форума (не п.1.5, а п.5); - пункт 2 правил раздела Задачи (промотай эту страницу вверх, будь так добр - и увидишь 8 пунктов).
сорри=) прочел, исправил!
Цитата(volvo @ 19.12.2010 13:58)
Где 1?
мда сам себе перечу вместо вещественных я целые числа вводил=)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.