Помогите Пожалуйста решить задачу: С клавиатуры вводятся количество чисел N и сами эти числа. Разработайте приложение, которое помещает эти элементы в массив, а потом подсчитывает, с какой цифры чаще всего начинаются элементы массива, и сколько таких элементов (элементы массива – целые числа; желательно обойтись без вложенных циклов).
Lapp
17.05.2011 14:20
Цитата(Merhaba @ 17.05.2011 10:45)
С клавиатуры вводятся количество чисел N и сами эти числа. Разработайте приложение, которое помещает эти элементы в массив, а потом подсчитывает, с какой цифры чаще всего начинаются элементы массива, и сколько таких элементов (элементы массива – целые числа; желательно обойтись без вложенных циклов).
Вот тебе набросок. Добавь все, чего не хвататет.
var
a: array [1..100] of integer;
f: array [0..9] of integer;
...
readln(n);
for i:=1to n do readln(a[i]);
for i:=0to9do f[i]:=0;
for i:=1to n dobegin
d:= a[i];
while d>9do d:= d div10;
Inc(f[d])
end;
max:= 0;
for i:=1to9doif f[max]<f[i] then max:= i;
writeln('самая частая начальная цифра: ',max,', с нее начинается ',f[max],' элементов');
Merhaba
17.05.2011 18:55
Цитата(Lapp @ 17.05.2011 11:20)
Вот тебе набросок. Добавь все, чего не хвататет.
var
a: array [1..100] of integer;
f: array [0..9] of integer;
...
readln(n);
for i:=1to n do readln(a[i]);
for i:=0to9do f[i]:=0;
for i:=1to n dobegin
d:= a[i];
while d>9do d:= d div10;
Inc(f[d])
end;
max:= 0;
for i:=1to9doif f[max]<f[i] then max:= i;
writeln('самая частая начальная цифра: ',max,', с нее начинается ',f[max],' элементов');
Скажите Пожалуйста, а для чего тут нужно:
for i:=0to9do f[i]:=0;
и почему именно до 9?
TarasBer
17.05.2011 19:05
> и почему именно до 9?
for i:=Low(f) to High(f) do f[i]:=0;
Так понятнее?
Merhaba
17.05.2011 19:57
Цитата(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
17.05.2011 20:25
Эта строчка говорит компилятору,чтобы он выделил память под массив из 10 элементов в котором будут храниться целые числа и и ассоциироваться с именем,заданным тобой.
Меня поражают те вопросы,что ты задаеш,открой и прочти хотябы 1 книжку,хотябы 1 пособие и ооочень многие из тех вопросов,что ты задаеш отпадут сами сабой,ибо это самые азы. И пытайся решить сам,если не получается выкладывай,что сделал,а то я посмотрел 6 последних твоих тем,ты ниразу не выложил своего решения или попытки это сделать.Если ты думаеш,что ты будеш дальше кидать людям задачи,как кусок мяса,а они тебе ее будут решать,ты ошибаешся,им это надоест и тогда тебе никто не поможет.Некоторые выложенные тобой задачи не очень то и просты и подразумевают некоторых знаний,и врятли были даны без необходимой для их решения информации.Куда эта информация ушла и почему она не коснулась тебя,мне не известно и выводы делать не стану.
P.S.Я ни в коем разе никого не осуждаю,не подумай неправильно.
Lapp
18.05.2011 4:24
мужики, ну чего напали на чела? )) объясили б нормально..
Цитата(Merhaba @ 17.05.2011 15:55)
Скажите Пожалуйста, а для чего тут нужно:
for i:=0to9do f[i]:=0;
и почему именно до 9?
Массив f предназначен для подсчета количества элементов, начинающихся с цифры, равной номеру его элемента. Например, f[3] содержит (после подсчета) количество элементов массива a, начинающихся с цифры 3. Его диапазон от 0 до 9 потому, что цифры в десятичной системе счисления как раз от 0 до 9.
Технология подсчета такая. Сначала обнуляем этот массив (не доверяю автоматическому обнулению). Затем проходим по всему массиву a и смотрим первые цифры элементов. Если, например, первая цифра 5, то мы увеличиваем f[5] на 1, если 0 - то f[0] увеличиваем на один. То есть увеличиваем элдемент f с номером, равным цифре.
Название f я выбрал от слова frequency (частота), поскольку он представляет частоту встречи соответствующей цифры в начале числа.
Продолжай спрашивать, если что-то неясно.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.