Показать сообщение отдельно
Старый 16.11.2013, 11:39   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ну вот первая.
Некоторые пояснения.
1. Вы не указали тип Паскаля. Если это мерзкий АВС, то LongInt замените на Integer.
2. Обратите внимание, что сравнение произведения нечетных цифр следует производить НЕ с исходным числом, а с некоторым другим наперед заданным числом. В программе оно обозначено С.
3. Отрабатывается ситуация, когда введенное число вообще не содержит нечетных цифр. Для этого в функцию введен булевский флажок b, и в конце программы в этом случае выдается сообщение о том, что нечетных цифр нет.
Код:
Var
 A,C:LongInt;

Function Odd_Dig(R:LongInt):LongInt;
var
 i,m:Byte;
 S,P,d:LongInt;
 b:boolean;
begin
 S:=R;
 P:=1;
 b:=false;
 Repeat
  d:=S div 10;
  m:=S mod 10;
  if (m mod 2)=1 then
   begin
    P:=P*m;
    b:=true;
   end;
  S:=d;
 Until d=0;
 If b then Odd_Dig:=P else Odd_Dig:=0;
end;

Begin
 Write('A = ');
 Readln(A);
 Write('C = ');
 Readln(C);
 If Odd_Dig(A)=0 then
  Writeln('No odd digits!')
 else
  Writeln(Odd_Dig(A)<C);
 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070