Форум «Всё о Паскале» _ Задачи _ задача на цикл с предусловием. помогите. грозит недопуск
Автор: Алиса 23.01.2007 16:58
люди, спасите. эта задача - либо мой допуск до экзамена либо нет... условие следующее: "для заданного натурального числа n и вещественного числа x вычислите sinx+sinxsinx+sinxsinxsinx+...+sinxsinx...sinx используйте цикл с предусловием"
текст программы которую составила я:
program; var a,b,c,x:real; n:integer; begin x:=Pi/2; a:=sin(x); b:=sqr(a); c:=a+b; n:=2 while n<=3 do begin b:=b*a; c:=c+b; writeln ('c=',c,''); n:=n+1; end; end.
Как Х я взяла Пи на 2 чтобы проверить идет ли программа... по идее при N=3 у меня С тоже должна быть=3... но программа упорно пишет с=2... что за бред не понимаю... вроде логически все правильно. пожалуйста попробуйте разобраться в чем дело... у меня мозги кипят уже по всякому вертела и подставляла, считала сама на бумажке, лажа какая-то...не выходит и все. В общем мне нужно чтобы она хотя бы при заданном иксе считала верно. жду помощи.
М
правда, с тегами лучше? мисс_граффити
Автор: Malice 23.01.2007 17:14
4 он выводит, никак не 2. Т.к. цикл while выполняется 2 раза + a +b. Чтоб 3 стало поставь "n:=3;" или "while n<3".
Автор: Алиса 23.01.2007 18:37
Цитата(Malice @ 23.01.2007 13:14)
4 он выводит, никак не 2. Т.к. цикл while выполняется 2 раза + a +b. Чтоб 3 стало поставь "n:=3;" или "while n<3".
я пыталась. сначала присваивала n двойку, потом писала n меньше либо равно трем, n равно трем. перебирала другие числа. он все равно пишет эту двойку... сейчас вообще перестала программа даже грузиться... ( буду очень благодарна поправке, подсказке... может у меня комп глючит... ну в универе на компе такая же фигня была... ну все равно, допустим что-то с компьютерами... если получится в общем, выложите тут. мне нужна эта программа.
Автор: Lapp 23.01.2007 18:57
Здесь цикл реализован для всех n, а не только больше 2:
var a,b,c,x:real; i,n:integer; begin Write( 'x=');ReadLn(x); Write('n=');ReadLn(n); a:=sin(x); b:=1; c:=0; i:=0; while i<n do begin b:=b*a; c:=c+b; i:=i+1; end; WriteLn('c=',c:8:5); ReadLn end.