IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> задача на while или repeat, переделать или если совсем неверно то написать как надо
Leito
сообщение 24.05.2008 11:24
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


Прикрепленное изображение
решить задачу нужно через цикл while или repeat
вот что у меня получилось - программа компилируется, но при вводе любых n и x или выдается 205 ошибка (A floating-point overflow) или программа просто повисает
Код
program zicle;
var x,b,n,e,s,y:real;
c,p,i:integer;
begin
writeln ('vvedite n');
readln (n);
writeln('vvedite x');
readln (x);
if x<1 then writeln ('vi4islenie nevozmojno);
s:=0;
n:=1;
i:=1;
c:=0;
for c:=0 to i do
p:=p*(-1);
b:=exp((2*n)*ln(x))/(2*n);
e:=abs(p*exp((2*i)*ln(x)))/(2*i);
while e<0.0001 do
begin
p:=1;
while i>=c do
begin
p:=p*(-1);
c:=c+1;
end;
y:=p*b;
s:=y+s;
n:=n+1;
i:=i+1;
b:=exp((2*n)*ln(x))/(2*n);
end;
writeln ('s = ',s:2:2);
readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 24.05.2008 16:16
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

Репутация: -  25  +


Намудрил ты как-то)) сколько помню, косинус так считался: (или какие-то особые критерии написания программы есть?)
var prom: extended; //промежуточный член ряда
s,n,x,x2: extended;
const e=0.0001;
begin
write('введите значение x: ');
readln(x);
x2:=x*x;
s:=1;
prom:=1;
n:=2;
while abs(prom)>=e do
begin
prom:=-prom*x2/(n*(n-1));
s:=s+prom;
n:=n+2;
end;
writeln(s:14:13);
writeln(cos(x):14:13); //для сравнения пусть комп посчитает сам
end.

Только учти, что х - это не градусы, поэтому на значениях >44 результат уже не будет правильным..

Сообщение отредактировано: Айра - 24.05.2008 16:16
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
kvadrat
сообщение 24.05.2008 20:30
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 81
Пол: Мужской

Репутация: -  0  +


var prom: extended; //промежуточный член ряда
s,n,x,x2: extended;
const e=0.0001;
begin
write('введите значение x: ');
readln(x);
x2:=x*x;
s:=1;
prom:=1;
n:=2;
repeat
prom:=-prom*x2/(n*(n-1));
s:=s+prom;
n:=n+2
until abs(prom)<e;
writeln(s:14:13);
writeln(cos(x):14:13); //для сравнения пусть комп посчитает сам
end.


А вот решение через репит cool.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Leito
сообщение 25.05.2008 8:46
Сообщение #4





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


Айра, спасиба
ЗЫ в репит я уже сам переделал)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 1:31
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"