1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Да даже если sheka и неправильно сделал - он то действовал не от имени форума (или smith сказал обратное?), и даже в этом случае обвинять весь форум и требовать что-то - неправильно.
да я же извинился. говорю:погорячился. с кем не бывает?. К форуму нет и не может быть претензий.
Извините меня, дурака, но где здесь поиск факториала?))
Смотри: Изначально: t = 1 первая итерация: i = 1, t = t/i = 1/1 вторая итерация: i = 2, t = t/i = 1/(1*2) третья итерация: i = 3, t = t/i = 1/(1*2*3) четвертая итерация: i = 4, t = t/i = 1/(1*2*3*4) пятая итерация: i = 5, t = t/i = 1/(1*2*3*4*5)
Итого, что имеем в знаменателе? Не факториал i, случайно?
окей, прога с циклом со счетчиком исправно работает.
uses crt; var x,t,s:real; n,i,j:integer; begin clrscr; write('x=');readln(x); write('n=');readln(n); s:=0; for i:=1 to n do begin t:=1; for j:=1 to i do t:=t/j; s:=s+t+sqrt(abs(x)); end; write('S=',s:0:2); readln end.
.
Но вот цикл с пост/пред-условием никак не работает...=(
uses crt; var x,t,s:real; n,i,j:integer; begin clrscr; write('x=');readln(x); write('n=');readln(n); s:=0; i:=1; while i<=n do begin t:=1; j:=1; while j<=i do begin t:=t/j; j:=j+1; end; s:=s+t+sqrt(abs(x)); i:=i+1; end; write('S=',s:0:2); readln end.
.
ок, с while есть)) Пожалуйста, помогите с репит антил сделать=)
var x,t,s:real; n,i,j:integer; begin write('x=');readln(x); write('n=');readln(n); s:=0; i := 0; repeat inc(i); t:=1; j := 0; repeat inc(j); t:=t/j; until j = i; s:=s+t+sqrt(abs(x)); until i = n; write('S=',s:0:2); readln end.
Выдает тот же результат, что и твои оба варианта, хотя я не понимаю, зачем тебе внешний цикл. В первоначальном условии про него ни слова не было, и вот это:
var x,t,s:real; n,i,j:integer; begin write('x=');readln(x); write('n=');readln(n); s:=0; t := 1; for i:=1 to n do begin t:=t/i; s:=s+t+sqrt(abs(x)); end; write('S=',s:0:2); readln end.
работает точно так же, как твой код из поста №27. А если оно работает так же, "зачем писать больше"? почти (С). Итого: от внешнего цикла можно избавиться...
работает точно так же, как твой код из поста №27. А если оно работает так же, "зачем писать больше"? почти (С). Итого: от внешнего цикла можно избавиться...
Да тут дело в том, что задание гласит: написать прогу тремя способами: с пред/пост-условием и с помощью цикла со счетчиком.=)
Я тебе уже привел программу, которая выполняет твое задание:
Цитата
var x,t,s:real; n,i:integer; begin write('x=');readln(x); write('n=');readln(n); s:=0; t := 1; for i:=1 to n do begin t:=t/i; s:=s+t+sqrt(abs(x)); end; write('S=',s:0:2); readln end.
Если тебе надо сделать это несколькими видами циклов - то не делай их ВЛОЖЕННЫМИ, они должны идти последовательно один за другим... Вот тебе пример для For и While, третий добавишь сам:
var x,t,s:real; n,i,j:integer; begin write('x=');readln(x); write('n=');readln(n);
write('for loop: '); s:=0; t := 1; for i:=1 to n do begin t:=t/i; s:=s+t+sqrt(abs(x)); end; writeln('S=',s:0:5);
write('while loop: '); s:=0; t := 1; i := 1; while i <= n do begin t:=t/i; s:=s+t+sqrt(abs(x)); inc(i); end; writeln('S=',s:0:5);