Информатики, помогите пожалуйста решить в Паскале Вычислить сумму S=2X+4X+6X+...+20X
Информатики, помогите пожалуйста решить в Паскале
Вычислить сумму S=2X+4X+6X+...+20X
1 ответ
Данил Брусер
1.1. Количество нечетных чисел в данном интервале можно просто отыскать, зная что нечетные числа следуют через одно, чередуясь с четными. Окончательно, можно написать в программке цикл и перебрать все нечетные элементы, каждый раз прибавляя по +1 в счетчик количества, но еще проще пользоваться познаниями из арифметики. Просто видеть, что нечетные числа образуют арифметическую прогрессию с разностью d=-2, исходный член a1=7, а окончательный член an=-3.
Вспомним формулу для n-го члена арифметической прогрессии и получим из нее n.
В согласовании с критериями нашей задачки это будет верно, если a1 и an - нечетные. Если a1 четное, то его надо уменьшить на 1. Подобно, если an четное, его надо прирастить на 1. Таким образом, мы получаем метод, применимый для прыткого определения количества нечетных чисел на любом промежутке с целочисленными границами.
Ниже приводится подходящая программка.
program p11;
var
a,b,n:integer;
begin
Write('Введите границы интервала: '); Readln(a,b);
охрана от неверного порядка ввода
if alt;b then begin n:=a; a:=b; b:=n end;
если надобно, корректируем границы на нечет
if (a mod 2)=0 then a:=a-1;
if (b mod 2)=0 then b:=b+1;
сам расчет
n:=(a-b) div 2 + 1;
Writeln('Количество нечетных чисел на промежутке одинаково ',n)
end.
Тестовое решение:
Введите границы промежутка: -3 7
Количество нечетных чисел на промежутке одинаково 6
1.2 В противоположность предложенному решению, где сначала надобно было мыслить, можно использовать "метод грубой силы" (программисты называют его "брутфорс" - от британского bruteforce), т.е. программировать ни о чем не мысля.
Ниже - пример такового решения. Оно более короткое, но при больших промежутках время решения окажется на несколько порядков больше.
program p12;
var
a,b,i,k:integer;
begin
Write('Введите границы интервала: '); Readln(a,b);
охрана от неправильного порядка ввода
if alt;b then begin k:=a; a:=b; b:=k end;
k:=0;
for i:=a downto b do
if (i mod 2)lt;gt;0 then k:=k+1;
Writeln('Количество нечетных чисел на промежутке одинаково ',k)
end.
Тестовое решение:
Введите границы интервала: -3 7
Количество нечетных чисел на промежутке равно 6
2.1. Тут задачка на 1-ый взор стандартная и вроде бы размышлять нечего - в цикле накапливаем сумму:
program p21;
var
i:integer;
x,s:real;
begin
Write('Введите значение x: '); Readln(x);
s:=0; i:=2;
while ilt;=20 do begin s:=s+i*x; i:=i+2 end;
Writeln('Cумма членов последовательности равна ',s)
end.
Тестовое решение:
Введите значение x: 2.15
Cумма членов последовательности одинакова 236.5
2.2. Но и здесь есть место для раздумий. Вновь вспоминаем арифметику.
Но приобретенная сумма - это сумма арифметической прогрессии с исходным членом, одинаковым единице, окончательным членом, одинаковым 10 и разностью 1. Формула таковой суммы известна и мы продолжаем преобразования.
Сейчас можно и программку написать.
program p22;
var
x:real;
begin
Write('Введите значение x: '); Readln(x);
Writeln('Cумма членов последовательности равна ',110*x)
end.
Тестовое решение:
Введите значение x: 2.15
Cумма членов последовательности равна 236.5
Пары приведенных решений призваны показать, что первое пришедшее в голову решение обычно всегда не лучшее. А еще - что для высококачественного программирования надобно учить арифметику.
Вспомним формулу для n-го члена арифметической прогрессии и получим из нее n.
В согласовании с критериями нашей задачки это будет верно, если a1 и an - нечетные. Если a1 четное, то его надо уменьшить на 1. Подобно, если an четное, его надо прирастить на 1. Таким образом, мы получаем метод, применимый для прыткого определения количества нечетных чисел на любом промежутке с целочисленными границами.
Ниже приводится подходящая программка.
program p11;
var
a,b,n:integer;
begin
Write('Введите границы интервала: '); Readln(a,b);
охрана от неверного порядка ввода
if alt;b then begin n:=a; a:=b; b:=n end;
если надобно, корректируем границы на нечет
if (a mod 2)=0 then a:=a-1;
if (b mod 2)=0 then b:=b+1;
сам расчет
n:=(a-b) div 2 + 1;
Writeln('Количество нечетных чисел на промежутке одинаково ',n)
end.
Тестовое решение:
Введите границы промежутка: -3 7
Количество нечетных чисел на промежутке одинаково 6
1.2 В противоположность предложенному решению, где сначала надобно было мыслить, можно использовать "метод грубой силы" (программисты называют его "брутфорс" - от британского bruteforce), т.е. программировать ни о чем не мысля.
Ниже - пример такового решения. Оно более короткое, но при больших промежутках время решения окажется на несколько порядков больше.
program p12;
var
a,b,i,k:integer;
begin
Write('Введите границы интервала: '); Readln(a,b);
охрана от неправильного порядка ввода
if alt;b then begin k:=a; a:=b; b:=k end;
k:=0;
for i:=a downto b do
if (i mod 2)lt;gt;0 then k:=k+1;
Writeln('Количество нечетных чисел на промежутке одинаково ',k)
end.
Тестовое решение:
Введите границы интервала: -3 7
Количество нечетных чисел на промежутке равно 6
2.1. Тут задачка на 1-ый взор стандартная и вроде бы размышлять нечего - в цикле накапливаем сумму:
program p21;
var
i:integer;
x,s:real;
begin
Write('Введите значение x: '); Readln(x);
s:=0; i:=2;
while ilt;=20 do begin s:=s+i*x; i:=i+2 end;
Writeln('Cумма членов последовательности равна ',s)
end.
Тестовое решение:
Введите значение x: 2.15
Cумма членов последовательности одинакова 236.5
2.2. Но и здесь есть место для раздумий. Вновь вспоминаем арифметику.
Но приобретенная сумма - это сумма арифметической прогрессии с исходным членом, одинаковым единице, окончательным членом, одинаковым 10 и разностью 1. Формула таковой суммы известна и мы продолжаем преобразования.
Сейчас можно и программку написать.
program p22;
var
x:real;
begin
Write('Введите значение x: '); Readln(x);
Writeln('Cумма членов последовательности равна ',110*x)
end.
Тестовое решение:
Введите значение x: 2.15
Cумма членов последовательности равна 236.5
Пары приведенных решений призваны показать, что первое пришедшее в голову решение обычно всегда не лучшее. А еще - что для высококачественного программирования надобно учить арифметику.
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
выпиши в свою тетрадь те правила этикета которые тебе не были
Разные вопросы.
Анна хорошо учится у неё много подруг свободное от учёбы время
Обществознание.
10) Килограмм конфет дороже килограмма печенья на 52 р. За 8
Математика.
Во сколько раз число атомов кислорода в земной коре больше числа
Химия.
Составить монолог от имени дневника двоечника 7-10 предложений
Русский язык.
Рассматривая литературный язык как сложное взаимодействие книжного языка и разговорного,В.И.Чернышёв горячо
Разные вопросы.
Арабы входят в __________________ групп народов. Местом расселения арабов с незапамятных
Разные вопросы.
Грузовой автомобиль марки краз за одну поездку может доставить 7.500 кирпичей
Математика.
Облако тегов