Консультация № 175491
21.12.2009, 18:01
0.00 руб.
0 7 2
Дорогие эксперты,помогите пожалуйста с решением задачи.Заранее огромное спасибо=)
Составьте программу вычисления суммы трехзначных чисел в десятичной записи которых нет четных цифр

Обсуждение

давно
Специалист
246813
155
21.12.2009, 19:01
общий
это ответ
Здравствуйте, Масленникова Валерия.
Программа написана на Free Pascal.
Комментарии в программе.
Вопросы связанные с кодом программы задавать в мини-форум.
Код:
program q175491;
var i,j,k,l: Integer;
sum: Longint;
b:boolean;
begin
sum:=0;
WriteLn('Трехзначные числа, в которых нет четных цифр');
WriteLn('Ноль будет считаться за четное число:');
for i:=100 to 999 do {Перебираем все трехзначные числа}
begin
k:=i;
While (k>0) do
begin
l:=k mod 10;
if odd(l) then b:=true{Если цифра нечетная то логической
переменной ставим значение "истина"}
else begin {Иначе логическая переменная принимает значение "ложь"}
b:=false;
break; {Выход из цикла}
end;
k:=k div 10;
end;
if b then begin
Write(i:4);
sum:=sum+i;
end;
end;
WriteLn;
WriteLn('Сумма всех выше приведенных чисел: ',sum);
WriteLn('Для завершения нажмите ENTER...');
ReadLn;
end.
Рад был помочь!
Всего доброго!
5
Неизвестный
21.12.2009, 21:40
общий
23.12.2009, 12:18
это ответ
Здравствуйте, Валерия! Смотрите код в приложении. Желаю удачи!

Цитата: правильное условие задания
if (a mod 2=1) then s:=s+a;and
if (b mod 2=1) then s:=s+b;and
if (c mod 2=1) then s:=s+cn;


Приложение:
Program q175491;
Var n, a, b, c, s: integer;
Begin
s:=0;
For n:=100 to 999 do
begin
a:=n div 100;
b:=n div 10 mod 10;
c:=n mod 10;
if (a mod 2=1) then s:=s+a;
if (b mod 2=1) then s:=s+b;
if (c mod 2=1) then s:=s+c;
end;
Writeln ('s=',s);
readln;
End.
Неизвестный
22.12.2009, 06:45
общий
Аня Ласточка:
У вас ищется неправильная сумма - сумма нечетных цифр встречающихся среди трехзначных чисел.
Мне кажется Ваше условие суммирования должно быть примерно таким: if (a mod 2=0) and (b mod 2=0) and (c mod 2=0) then s:=s+n;
Попросите модераторов исправить ответ. А решение довольно элегантное.
давно
Старший Модератор
31795
6196
23.12.2009, 12:10
общий
LfiN:

Зачем так сложно и с лишними переменными:
Код:
While (k>0)and b do
begin
b:= odd(k);
k:=k div 10;
end;



Тимошенко Дмитрий:

Условие должно быть таким:
if (a mod 2=1) and (b mod 2=1) and (c mod 2=1) then s:=s+n
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
27.12.2009, 18:56
общий
LfiN:
Добрый вечер! Предлагаю "тупой вариант". Число итераций 5*5*5=125.
Код:
program q175491a;
var
i,j,k: Integer;
sum: Longint;
begin
sum:=0;
i:= 1;
while (i<=9) do begin { сотни }
j:= 1;
while (j<=9) do begin { десятки }
k:= 1;
while (k<=9) do begin { единицы }
sum := sum+(i*10+j)*10+k;
inc(k,2);
end;
inc(j,2);
end;
inc(i,2);
end;

WriteLn;
WriteLn('Сумма всех выше приведенных чисел: ',sum);
WriteLn('Для завершения нажмите ENTER...');
ReadLn;
end.

давно
Профессор
230118
3054
28.12.2009, 23:41
общий
lamed:
Можно еще так:
Код:

program q175491;
var i,j,k,l: Integer;
sum: Longint;
begin
sum:=0;
WriteLn('Трехзначные числа, в которых нет четных цифр');
l:=111;
for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
for k:=1 to 5 do
begin
Write(l:4);
sum:=sum+l;
l:=l+2;
end;
l:=l+10;
end;
l:=l+100;
end;
WriteLn;
WriteLn('Сумма всех выше приведенных чисел: ',sum);
WriteLn('Для завершения нажмите ENTER...');
ReadLn;
end.
Неизвестный
29.12.2009, 08:15
общий
Ashotn:
Красиво!
Форма ответа