Помощь - Поиск - Пользователи - Календарь
Полная версия: С какой цифры чаще всего начинаются элементы массива
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Merhaba
Помогите Пожалуйста решить задачу:
С клавиатуры вводятся количество чисел N и сами эти числа. Разработайте приложение, которое помещает эти элементы в массив, а потом подсчитывает, с какой цифры чаще всего начинаются элементы массива, и сколько таких элементов (элементы массива – целые числа; желательно обойтись без вложенных циклов).
Lapp
Цитата(Merhaba @ 17.05.2011 10:45) *
С клавиатуры вводятся количество чисел N и сами эти числа. Разработайте приложение, которое помещает эти элементы в массив, а потом подсчитывает, с какой цифры чаще всего начинаются элементы массива, и сколько таких элементов (элементы массива – целые числа; желательно обойтись без вложенных циклов).

Вот тебе набросок. Добавь все, чего не хвататет.
var
  a: array [1..100] of integer;
  f: array [0..9] of integer;
...

  readln(n);
  for i:=1 to n do readln(a[i]);
  for i:=0 to 9 do f[i]:=0;
  for i:=1 to n do begin
    d:= a[i];
    while d>9 do d:= d div 10;
    Inc(f[d])
  end;
  max:= 0;
  for i:=1 to 9 do if f[max]<f[i] then max:= i;
  writeln('самая частая начальная цифра: ',max,', с нее начинается ',f[max],' элементов');
Merhaba
Цитата(Lapp @ 17.05.2011 11:20) *

Вот тебе набросок. Добавь все, чего не хвататет.
var
  a: array [1..100] of integer;
  f: array [0..9] of integer;
...

  readln(n);
  for i:=1 to n do readln(a[i]);
  for i:=0 to 9 do f[i]:=0;
  for i:=1 to n do begin
    d:= a[i];
    while d>9 do d:= d div 10;
    Inc(f[d])
  end;
  max:= 0;
  for i:=1 to 9 do if f[max]<f[i] then max:= i;
  writeln('самая частая начальная цифра: ',max,', с нее начинается ',f[max],' элементов');


Скажите Пожалуйста, а для чего тут нужно:
for i:=0 to 9 do f[i]:=0;
и почему именно до 9?
TarasBer
> и почему именно до 9?

for i:=Low(f) to High(f) do f[i]:=0;

Так понятнее?
Merhaba
Цитата(TarasBer @ 17.05.2011 16:05) *

> и почему именно до 9?

for i:=Low(f) to High(f) do f[i]:=0;

Так понятнее?


А для чего вообще было введено f: array [0..9] of integer; ?
Для чего предназначается?
Krjuger
Эта строчка говорит компилятору,чтобы он выделил память под массив из 10 элементов в котором будут храниться целые числа и и ассоциироваться с именем,заданным тобой.

Меня поражают те вопросы,что ты задаеш,открой и прочти хотябы 1 книжку,хотябы 1 пособие и ооочень многие из тех вопросов,что ты задаеш отпадут сами сабой,ибо это самые азы.
И пытайся решить сам,если не получается выкладывай,что сделал,а то я посмотрел 6 последних твоих тем,ты ниразу не выложил своего решения или попытки это сделать.Если ты думаеш,что ты будеш дальше кидать людям задачи,как кусок мяса,а они тебе ее будут решать,ты ошибаешся,им это надоест и тогда тебе никто не поможет.Некоторые выложенные тобой задачи не очень то и просты и подразумевают некоторых знаний,и врятли были даны без необходимой для их решения информации.Куда эта информация ушла и почему она не коснулась тебя,мне не известно и выводы делать не стану.

P.S.Я ни в коем разе никого не осуждаю,не подумай неправильно.
Lapp
мужики, ну чего напали на чела? )) объясили б нормально..

Цитата(Merhaba @ 17.05.2011 15:55) *
Скажите Пожалуйста, а для чего тут нужно:
for i:=0 to 9 do f[i]:=0;
и почему именно до 9?
Массив f предназначен для подсчета количества элементов, начинающихся с цифры, равной номеру его элемента. Например, f[3] содержит (после подсчета) количество элементов массива a, начинающихся с цифры 3. Его диапазон от 0 до 9 потому, что цифры в десятичной системе счисления как раз от 0 до 9.

Технология подсчета такая. Сначала обнуляем этот массив (не доверяю автоматическому обнулению). Затем проходим по всему массиву a и смотрим первые цифры элементов. Если, например, первая цифра 5, то мы увеличиваем f[5] на 1, если 0 - то f[0] увеличиваем на один. То есть увеличиваем элдемент f с номером, равным цифре.

Название f я выбрал от слова frequency (частота), поскольку он представляет частоту встречи соответствующей цифры в начале числа.

Продолжай спрашивать, если что-то неясно.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.