Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2008, 10:31   #1
Zaz
 
Регистрация: 24.06.2008
Сообщений: 8
Вопрос Пожалуйста помогите решить задачку, оочень нужно.

Нужно написать программу подсчёта числа чётных цифр, используемых в записи N-значного числа M.

Спс.
Zaz вне форума Ответить с цитированием
Старый 25.06.2008, 10:32   #2
Zaz
 
Регистрация: 24.06.2008
Сообщений: 8
По умолчанию

.....Pascal
Zaz вне форума Ответить с цитированием
Старый 25.06.2008, 10:48   #3
master_root
Пользователь
 
Регистрация: 18.05.2008
Сообщений: 30
По умолчанию

Функция фозвращает число чётных цифр в числе передаваемого в качестве параметра функции:
Код:
function func(num: integer): integer;
var
  digit: integer;//анализируемая цифра
  res: integer;//число чётных цифр в числе
begin
  res:=0;
  while num <> 0 do
  begin
    digit:=num mod 10;//выделяем одну цифру из числа, начиная с конца
    if ((digit mod 2) = 0) and (digit<>0) then//если цифра чётна и не является нулём
      res:=res+1;//то увеличиваем число чётных цифр на 1
    num:=num div 10;//убираем эту цифру из числа
  end;
  result:=res;//выводим результат
end;
Не знаю насколько вы осведомленны в программировании под Borland Delphi Studio 2006, поэтому напишу сразу как использовать эту функцию в консольном приложении. Вот полный листинг программы:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
function func(num: integer): integer;
var
  digit, res: integer;
begin
  res:=0;
  while num <> 0 do
  begin
    digit:=num mod 10;
    if ((digit mod 2) = 0) and (digit<>0) then
      res:=res+1;
    num:=num div 10;
  end;
  result:=res;
end;
begin
  writeln(func(12333364567890));//Здесь пишем любое число в скобках, которое нужно проанализировать
  readln;
end.
В Pascal всё тоже самое, только не нужно писать строки:
{$APPTYPE CONSOLE}
uses
SysUtils;

Хотя точно не могу сказать. Нет возможности проверить этот код под Pascal. Попробуйте сами.

Последний раз редактировалось master_root; 25.06.2008 в 10:54.
master_root вне форума Ответить с цитированием
Старый 25.06.2008, 12:17   #4
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
function func(num: integer): integer;
Цитата:
writeln(func(12333364567890))
для интежер'а число слишком большое - используйте longint например, но до числа не больше 12 млрд.

Если число записать как строку, то можно увеличить диапазон до 255-значного числа
Код:
var
  m_, s: string;
  i, k, q, chet: integer;
...
readln(m_);
for i:=1 to length(m_) do begin
  s:=copy(m_, i, 1); //выделяем цифру из всего числа (s-строка)
  val(s, k, q); //преобразуем строку s в число k (q-код ошибки)
  if (k mod 2 = 0) and (k<>0) then ink(chet)
end;
write('Otvet ', chet)
eoln вне форума Ответить с цитированием
Старый 25.06.2008, 13:28   #5
Zaz
 
Регистрация: 24.06.2008
Сообщений: 8
По умолчанию

master_root, eoln, большое спасибо.
Zaz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите пожалуйста, оочень нужно( BAH Помощь студентам 1 21.06.2008 05:07
Помогите решить задачку пожалуйста Никитка89 Паскаль, Turbo Pascal, PascalABC.NET 5 25.05.2008 22:33
помогите, пожалуйста, решить задачку vol1 Паскаль, Turbo Pascal, PascalABC.NET 3 08.01.2008 21:09
Пожалуйста, помогите решить задачку. Cizen Помощь студентам 9 03.07.2007 08:27