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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2011, 17:13   #1
Faxford
Новичок
Джуниор
 
Регистрация: 17.03.2011
Сообщений: 2
По умолчанию Элемент массива с максимальным кол-вом чётных цифр.

Нужно найти элелемент массива с максимальным количеством чётных цифр. Вывести его и его индекс. Индекс вроде выводится нормально, а вот сам элемент не получается.

Код:
unit Unit4;

interface
uses
  SysUtils, Unit2;

  function mass_s(var a:arr; count:integer; el_s:integer):integer;
implementation

function mass_s(var a:arr; count:integer; el_s:integer):integer;
var
  i,max,m,elem:integer;
begin
  count:=0;
  elem:=a[1];
  max:=0;
  for i:=1 to el_s do
    begin
      count:=0;
      while a[i]<>0 do
        begin
          if not odd(a[i] mod 10) then
            inc(count);
          a[i]:=a[i] div 10;
        end;
      if count>max then
        begin
          max:=count;
          m:=i;
          elem:=a[m];
        end;
    end;
  result:=elem;
end;

end.
Сам массив вроде нормальный. :)

Последний раз редактировалось Faxford; 20.06.2011 в 17:16.
Faxford вне форума Ответить с цитированием
Старый 20.06.2011, 18:22   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

дык! Вы же элементы массива зануляете в процессе подсчёта цифр!

заведите дополнительную переменную и её и терзайте..
вместо
Цитата:
Код:
while a[i]<>0 do
        begin
          if not odd(a[i] mod 10) then
            inc(count);
          a[i]:=a[i] div 10;
        end;
напишите так:
Код:
Num :=  a[i];
while Num<>0 do
        begin
          if not odd(Num mod 10) then
            inc(count);
          Num:=Num div 10;
        end;
но это ещё полбеды.
Вам по условиям задачи надо и индекс этого элемента вывести!
А где Вы это делаете?!!

а что это за фокусы с переменной m ???!
Код:
          m:=i;
          elem:=a[m];
Вы же её больше нигде не используете!
Так почему бы не сделать просто
Код:
elem:=a[i];
ну и последнее.
А зачем Вы возвращаете переменную Count - там будет значение равное количеству чётных чисел только в ПОСЛЕДНЕМ элементе массива! Оно Вам надо?!?!
а вообще, я бы из функции возвращал не значение нужного элемента, а его индекс. А значение по индексу легко получить где угодно!

примерно так:
Код:
{функция вернёт номер элемента массива с максимальным числом чётных цифр}
function mass_s_index(a:arr; el_s:integer):integer;
var
  i, maxCount, Num, count, s_index : integer;
begin
  maxCount:=0;
  s_index := -1; 
      {результат -1 будет означать, что таких чисел в массиве вообще нет!}

  for i:=1 to el_s do
    begin
      count:=0;
      Num := a[i];
      while Num<>0 do
        begin
          if not odd(Num mod 10) then
               inc(count);
          Num:=Num div 10;
        end;
      if count>maxCount then
        begin
          maxCount:=count;
          s_index := i;
        end;
    end;
  result:= s_index;
end;

Последний раз редактировалось Serge_Bliznykov; 20.06.2011 в 18:26.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.06.2011, 19:19   #3
Faxford
Новичок
Джуниор
 
Регистрация: 17.03.2011
Сообщений: 2
По умолчанию

Спасибо, выручил. :)
Faxford вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поставить мин. элемент вначало массива, а макс.-в конец dima-intro Помощь студентам 7 19.12.2010 18:23
Создание отчёта с определённым кол-вом полей gamaiunov_alex Microsoft Office Access 2 20.09.2010 21:13
Найти слова с четным кол-вом символов. Си. Terror Общие вопросы C/C++ 2 28.04.2010 16:50
Как работать с очень большим кол-вом чисел?? Umnik1 Общие вопросы Delphi 16 25.11.2008 19:22
поиск кратчайшей сортировки, с минимальным кол-вом перестановок sad8c Помощь студентам 9 14.12.2007 10:23