Другие языки программирования и технологии
Помогите пожалуйста! Как Разработать алгоритм нахождения суммы и кол-ва четных чисел натурального ряда, кот. >K, но
>K, но
Доброго времени суток.
Нет смысла, Юрик, гонять цикл с инкрементом в 1 для четных чисел. Тогда уж лучше использовать цикл while и инкрементировать на 2. Вот только зачем вообще циклы гонять? Думать надо.
Пусть дано число К. Каким будет четное число, следующее за К? Если К нечетное, то это будет К+1, а если четное, то К+2, поскольку в условии сказано, что нужна сумма чисел больших К. Аналогично и с М. Если М не четное, то это будет М-1, а если четное, то М-2. С начальным и конечным числами последовательности разобрались. Попытаемся выяснить количество четных чисел в такой последовательности. Для этого от большего числа отнимем меньшее, разделим на 2 и к частному прибавим 1. Осталось найти сумму этих чисел. Принимая во внимание, что такая последовательность будет представлять собой арифметическую прогрессию, сумма членов которой равна среднему арифметическому ее крайних членов, умноженному на число членов. Вот и все. Осталось это же сказать на паскале.
program SumDigit;
var
i,j,k,m,n : Longint;
begin
WriteLn('Сумма и количество чётных цифр от K до M');
Write('Введите k = '); ReadLn(k);
Write('Введите m = '); ReadLn(m);
{определяем первый член последовательности}
if Odd(k) then i := k + 1 else i := k + 2;
{определяем последний член последовательности}
if Odd(m) then j := m - 1 else j := m - 2;
{находим число чисел между К и М}
N := ((j - i) div 2) + 1;
{находим сумму четных чиссел между К и М}
S := ((i + j) div 2) * N;
{выводим результат}
WriteLn('S = ', S, ' N = ', N);
ReadLn; {задержка, чтобы увидеть результат}
end.
Поскольку у нас числа четные, то имеем полное право использовать целочисленное деление (div) при нахождении суммы членов арифметической прогрессии.
Удачи!
Нет смысла, Юрик, гонять цикл с инкрементом в 1 для четных чисел. Тогда уж лучше использовать цикл while и инкрементировать на 2. Вот только зачем вообще циклы гонять? Думать надо.
Пусть дано число К. Каким будет четное число, следующее за К? Если К нечетное, то это будет К+1, а если четное, то К+2, поскольку в условии сказано, что нужна сумма чисел больших К. Аналогично и с М. Если М не четное, то это будет М-1, а если четное, то М-2. С начальным и конечным числами последовательности разобрались. Попытаемся выяснить количество четных чисел в такой последовательности. Для этого от большего числа отнимем меньшее, разделим на 2 и к частному прибавим 1. Осталось найти сумму этих чисел. Принимая во внимание, что такая последовательность будет представлять собой арифметическую прогрессию, сумма членов которой равна среднему арифметическому ее крайних членов, умноженному на число членов. Вот и все. Осталось это же сказать на паскале.
program SumDigit;
var
i,j,k,m,n : Longint;
begin
WriteLn('Сумма и количество чётных цифр от K до M');
Write('Введите k = '); ReadLn(k);
Write('Введите m = '); ReadLn(m);
{определяем первый член последовательности}
if Odd(k) then i := k + 1 else i := k + 2;
{определяем последний член последовательности}
if Odd(m) then j := m - 1 else j := m - 2;
{находим число чисел между К и М}
N := ((j - i) div 2) + 1;
{находим сумму четных чиссел между К и М}
S := ((i + j) div 2) * N;
{выводим результат}
WriteLn('S = ', S, ' N = ', N);
ReadLn; {задержка, чтобы увидеть результат}
end.
Поскольку у нас числа четные, то имеем полное право использовать целочисленное деление (div) при нахождении суммы членов арифметической прогрессии.
Удачи!
program summ; {сумма чётных цифр}
uses crt;
var n,m,i,k:integer;
s:longint;
begin
clrscr;
writeln('Сумма и количество чётных цифр от m до n');
write('Введите m = '); readln(m);
write('Введите n = '); readln(n);
s:=0; k:=0;
for i:=m to n do
if not odd(i) then
begin
s:=s+i;
inc(k)
end;
writeln('S = ',s,'; k = ',k);
readkey;
end.
odd(n) – стандартная функция модуля system. Возвращает true, если n нечётно.
inc(n) – стандартная функция модуля system. Увеличивает целое n на единицу.
Да, чтобы программа точно соответствовала твоему условию, поменяй местами m и k.
uses crt;
var n,m,i,k:integer;
s:longint;
begin
clrscr;
writeln('Сумма и количество чётных цифр от m до n');
write('Введите m = '); readln(m);
write('Введите n = '); readln(n);
s:=0; k:=0;
for i:=m to n do
if not odd(i) then
begin
s:=s+i;
inc(k)
end;
writeln('S = ',s,'; k = ',k);
readkey;
end.
odd(n) – стандартная функция модуля system. Возвращает true, если n нечётно.
inc(n) – стандартная функция модуля system. Увеличивает целое n на единицу.
Да, чтобы программа точно соответствовала твоему условию, поменяй местами m и k.
Похожие вопросы
- помогите пожалуйста!!3.Напишите процедуру Input(A) для заполнения массива целых чисел A размером 10 x 10: 0 0 0 ...0 0
- помогите пожалуйста..паскаль..составить программу вычисления суммы неповторяющихся элементов одномерного массива
- Помогите найти алгоритм подбора множителей к числам заданного массива, сумма произведений которых равна заданному числу
- 1. Найти все совершенные числа2. Определить во введенном числе кол-во нечетных чисел и среднее арифметическое четных.
- Помогите составить блок схему. Данны целые числа n, k (n>=k>=0). Вычислить n(n-1)*(n-2)... (n-k-1)/k!
- Помогите найти, алгоритм нахождения Произведения простых чисел, на С++, или литературу которая поможет разобраться.
- Алгоритмы в паскале. Народ, напишите плиз алгоритм нахождения НОД и алгоритм выделения цифр числа. Заранее благодарю)
- Вводится последовательность чисел. Посчитать в ней количество четных чисел, стоящих на четных местах.
- Предложите алгоритм нахождения количества максимальных чисел из трех введенных чисел.
- Помогите решить на ПАСКАЛЕ!Увеличить четные числа массива размера N,на исходное значение первого четного числа.