На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Сообщение: 14
ссылка на сообщение  Отправлено: 06.05.17 11:16. Заголовок: 27-70 (Д. Муфаззалов, Уфа)


Здравствуйте.
Есть вопросы по условию задачи и по ее решению.

Условие:
На вход программы поступает последовательность из N натуральных чисел, каждое из которых не больше 1000. Требуется вывести цифры, встречающиеся в эти числах, в порядке неубывания частоты их появления. Если какие-то цифры встречаются одинаковое число раз, они выводятся в порядке убывания.
Входные данные:
На вход программе подаётся натуральное число N (N <= 1000), а затем N натуральных чисел, каждое из которых не превышает 10000.

В решении этой задачи определяется "общее количество цифр во вводимых числах," а после выполняется цикл столько раз, сколько нашлось всего цифр. Но разве их не может быть очень много? Значит и цикл будет выполняться очень много раз?

Я составила свой вариант решения этой задачи. И хотелось бы узнать, могут ли за нее поставить 4 балла.
 
var
a: array[0..9] of word;
j, n, i, num, s, min, h: integer;
begin
readln(n);

for i:=0 to 9 do a[i ]:=0;

for i := 1 to n do begin
readln(num);
while num > 0 do begin
s:= num mod 10;
a[s ] := a[s ] + 1;
num := num div 10;
end
end;

for i := 0 to 9 do
if a[i ] <> 0 then begin
s:= i; break;
end;
for i := s to 9 do begin
min:= s;
while (a[min] = 0) and (min < 9) do
min:= min + 1;
if a[min] = 0 then break;
for j:= min to 9 do
if (a[j]<>0) and (a[j] < a[min]) then min:=j;
for h:= 9 downto s do
if (a[min] = a[h]) and (a[h] <> 0) then begin
write(h, ' ');
a[h]:= 0;
end;
end;
end.


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 23 , стр: 1 2 All [только новые]


Ответов - 23 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 429
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет