Консультация № 174922
06.12.2009, 12:28
35.00 руб.
0 10 1
Уважаемые эксперты, помогите решить задачу: An=(20n-10)n!, n=1,2,3....
Вывести сумму положительных значений и первое отрицательное значение.

Обсуждение

Неизвестный
06.12.2009, 12:45
общий
На сколько я понял, уравнение выглядит так: An = (20*n - 10)*n! , где n от 1 до... а до чего она?
Напишите до чего считать n и правильно ли я понял уравнение
Неизвестный
06.12.2009, 12:59
общий
В таком случае отрицательных значений не предвидится.
Неизвестный
06.12.2009, 12:59
общий
Семашкина Надежда Сергеевна:
Добрый день!
Уважаемые эксперты, помогите решить задачу: An=(20n-10)n!, n=1,2,3....
Вывести сумму положительных значений и первое отрицательное значение.
Здесь нет отрицательных значений при n=1,2,3...

Неизвестный
06.12.2009, 13:33
общий
В этом то и проблема, что их не предвидется, а в задании именно такое условие
Неизвестный
06.12.2009, 15:19
общий
Семашкина Надежда Сергеевна:
Возможно, имеется в виду, что integer считается signed и при превышении предела, например, 32767, член становится отрицательным. Неясно только, как быть с суммой, которая тоже может стать отрицательной даже для положительных членов.
Код:
{
An=(20n-10)n!, n=1,2,3....
Вывести сумму положительных значений и первое отрицательное значение.
}
program p174922;
var
i, n: integer;
a, fact, SumPositive, FirstNegative: integer;
WasNegative : boolean;
begin
write('n=');
readln(n);

if (n<1)
then
writeln('нет ряда')
else
begin
fact := 1;
a:= 10;
SumPositive := a;
WasNegative := false;
for i := 2 to n do
begin
fact := fact * i;
a:= (20*i-10)*fact;
if (a>0) then
SumPositive := SumPositive + a
else if not WasNegative then
begin
FirstNegative := a;
WasNegative := true;
end;
end;
if WasNegative then
writeln('первый отрицательный элемент = ', FirstNegative)
else
writeln('нет отрицательных элементов');

writeln('Сумма положительных элементов =', SumPositive);
end;
readln;
end.
давно
Мастер-Эксперт
425
4118
06.12.2009, 15:57
общий
leonid59:
Цитата: 300647
Возможно, имеется в виду, что integer считается signed и при превышении предела, например, 32767, член становится отрицательным.

Пожалуйста, никогда не делайте подобных предположений, если не хотите получить билиберду в ответе. У меня стоит 64-ёх разрядный Паскаль и следовательно тип Integer является 64-ёх разрядным.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
06.12.2009, 16:07
общий
sir Henry:
Добрый день, уважаемый Sir Henry!
У Вас Integer ведь тоже знаковый? Или я ошибаюсь? В этом случае, конечно, мое предположение некорректно. Я не зря написал "например". В программе нигде не используется явно конкретное значение. К тому же, я не вижу, как можно помочь в этом вопросе с отрицательными значениями. Знаете - подскажите, пожалуйста.
давно
Мастер-Эксперт
425
4118
06.12.2009, 16:22
общий
leonid59:
Цитата: 300647
К тому же, я не вижу, как можно помочь в этом вопросе с отрицательными значениями.

Никак тут нельзя помочь. Проблема в том, что студенты стесняются обратиться к преподавателям за разъяснениями. И в этом, боюсь, ни я, ни Вы помочь гражданке не в состоянии. Это её личное горе.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
08.12.2009, 18:11
общий
Подошла к преподавателю, оказалось, что не правильно было написано условие:
An = (20*n - n^3)/n! , где n =1,2,3...
Вывести сумму положительных значений и первое отрицательное значение.
давно
Академик
320937
2216
09.12.2009, 07:41
общий
это ответ
Здравствуйте, Семашкина Надежда Сергеевна. Исходный текст в приложении. TurboPascal 7.

Приложение:
{
An=(20n-n^3)n!, n=1,2,3....
Вывести сумму положительных значений и первое отрицательное значение.
}
program p174922;
var
i, n: integer;
a, fact, SumPositive, FirstNegative: LongInt;
WasNegative : boolean;
begin
write('n=');
readln(n);

if (n<1)
then
writeln('нет ряда')
else
begin
fact := 1;
a:= 0;
SumPositive := a;
WasNegative := false;
for i := 1 to n do
begin
fact := fact * i;
a:= i*(20-i*i)*fact;
if (a>0) then
SumPositive := SumPositive + a
else if not WasNegative then
begin
FirstNegative := a;
WasNegative := true;
end;
end;
if WasNegative then
writeln('первый отрицательный элемент = ', FirstNegative)
else
writeln('нет отрицательных элементов');

writeln('Сумма положительных элементов =', SumPositive);
end;
readln;
end.
Форма ответа