Сумма кубов указанных чисел гарантированно не уместится в типе integer.
101^3 уже 1030301, а в integer умещается максимум 32767, если вы, конечно, не в Delphi пишете. Там в integer умещается максимальное число 2147483647.
И вы не суммируете кубы чисел, а просто их считаете.
var
i: integer;
sum:longint;
begin
sum:=0;
for i:=1 to 101 do
if i mod 2 = 1 then
sum := sum + i * i * i;
writeln('Сумма кубов нечетных чисел: ', sum);
readln;
end.
----------------------
> А если так?
> if (i div 2) <> 0 then
А так вы не сможете проверить на чётность/нечётность. И просуммируете все числа от 2 до 101.
Другие языки программирования и технологии
Проверьте программу на языке Pascal
Если вам надо проверять на нечетность, то делите на 2.
if i mod 2 = 1 then ...
А еще сумму нечетных можно посчитать как сумму арифметической прогрессии с первым членом 1 и шагом 2. Почитайте, например, это http://ru.wikipedia.org/wiki/Арифметическая_прогрессия
if i mod 2 = 1 then ...
А еще сумму нечетных можно посчитать как сумму арифметической прогрессии с первым членом 1 и шагом 2. Почитайте, например, это http://ru.wikipedia.org/wiki/Арифметическая_прогрессия
И почему все забывают про стандартную функцию проверки нечетности odd ?
Но в данном случае проверять нечетность вообще не надо.
Gennady, надо считать не сумму нечетных, а сумму кубов нечетных :(
Миоко, longint нужно и для вычисления i*i*i ;) Тип результата операции определяется наиболее общим из типов операндов, автоматически он не расширяется.
var i,s:longint;
begin s:=0; for i:=0 to 50 do s:=s+(2*i+1)*(2*i+1)*(2*i+1); writeln(s); readln end.
Или, если вам обязательно надо использовать условный оператор,
var i,s:longint;
begin s:=0; for i:=1 to 101 do if odd(i) then s:=s+i*i*i; writeln(s); readln end.
Или промежуточный вариант
var i,s:longint;
begin s:=0; for i:=1 to 101 do s:=s+ord(odd(i))*i*i*i; writeln(s); readln end.
:)
P.S. Я вообще не понимаю, зачем в школах учат программированию? Школьник принципиально не может написать даже простейшую программу правильно. Не говоря уже о программах реального значения.
Но в данном случае проверять нечетность вообще не надо.
Gennady, надо считать не сумму нечетных, а сумму кубов нечетных :(
Миоко, longint нужно и для вычисления i*i*i ;) Тип результата операции определяется наиболее общим из типов операндов, автоматически он не расширяется.
var i,s:longint;
begin s:=0; for i:=0 to 50 do s:=s+(2*i+1)*(2*i+1)*(2*i+1); writeln(s); readln end.
Или, если вам обязательно надо использовать условный оператор,
var i,s:longint;
begin s:=0; for i:=1 to 101 do if odd(i) then s:=s+i*i*i; writeln(s); readln end.
Или промежуточный вариант
var i,s:longint;
begin s:=0; for i:=1 to 101 do s:=s+ord(odd(i))*i*i*i; writeln(s); readln end.
:)
P.S. Я вообще не понимаю, зачем в школах учат программированию? Школьник принципиально не может написать даже простейшую программу правильно. Не говоря уже о программах реального значения.
Первая правельна за исключением одного: не inc(sum); , a sum:= sum + i*i;
а так все правельно
а так все правельно
Похожие вопросы
- Информатика. Составить программу на языке Pascal
- Помогите составить программу на языке Pascal
- Помогите составить программу на языке Pascal
- Как можно составить программу на языке Pascal для вычисления 100!-2 в степени 100?
- написать программу на языке Pascal.
- Помогите написать 2 программы на языке pascal!
- Помогите с программой по языку Pascal, задание на записи (комбинированный тип переменной).
- Помогите с задачей, а точнее перевести программу с языка Pascal на C++
- Люди подскажите какуето идею в программе Lazarus(язык Pascal)
- Составить программу на языке pascal.