Доброго времени. Уважаемые специалисты. У меня вот такой вопрос. Нужно вычислить выражение -0,5+0,7-0,9+...+0.23; Я написал программу, но не не могу понять правильно или нет. Подскажите
const n=0.23 var s, x:real; zn:integer; begin s:=0.5; x:=0.2;zn:=-1; repeat s:=s*zn; s:=s+x; x:=x+0.2; zn:=-zn; until x>0.23; writeln ('s= ' ,s:8:3); end.
Меня еще условие немного настораживает потому что оканчивается 0,23
Добавлено через 10 мин. Думаю вместо 0,23 там должно быть 2,3. А может это хитрость такая
volvo
7.03.2011 12:44
Цитата
не могу понять правильно или нет
Нет. Опять то же самое. Не выделяйте первый элемент! Он точно такой же, как и остальные! Сколько раз повторять? За что ему выпала честь сразу быть занесенным в сумму? (Похоже, пришло время написать об этом развернутый ответ, а может даже статью ) Все проще:
s := 0; { <-- Сумма ВСЕГДА инициализируется 0, запомни это раз и навсегда } x := 0.5; zn := -1; repeat s := s + x*zn; { Увеличиваем сумму, принимая во внимание знак } writeln(x:5:2); x:=x+0.2; zn:=-zn; until x > 2.3;
(примечание: если сумма инициализирована не нулем - программа с большой степенью вероятности будет выброшена, ибо это подгонка под ответ а не вычисления).
Цитата
Меня еще условие немного настораживает потому что оканчивается 0,23
Правильно настораживает, у тебя изначально по модулю начальное значение больше, чем конечное, хотя модули членов ряда вроде бы все время возрастают. Программа зациклится. Может до 2.3, а не 0.23?
vladimir11332
7.03.2011 12:57
Большое спасибо, а то смотрел примеры в лекциях и насобирал. Посчитал вручную совсем другой ответ выходил вот и обратился за помощью. 3 дня голову ломал. А напишите статью дайте ссылку обязательно прочитаю ))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.