Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/63: Рейтинг темы: голосов - 63, средняя оценка - 4.57
1 / 1 / 0
Регистрация: 22.01.2011
Сообщений: 7

Вывести цифры, встречающиеся в последовательности, в порядке увеличения частоты их встречаемости

14.10.2012, 19:38. Показов 12073. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На вход программе подается последовательность цифр, заканчивающаяся точкой (другие символы, кроме цифр и точки, отсутствуют). Требуется написать программуЮ которая вывощлит цифры, встречающиеся во входной последовательности, в порядке увеличения частоты их встречаемости. Если какие-то цифры встречаются одинаковое число раз, они выводятся в порядке возрастания. Например, если исходная последовательность была такая:
123124456
то результат должен быть следующий:
356124


Прошу, великодушные люди, решите, школьник двойку не хочет, а срок сдачи - сегодня..
Учтите также, что решить нужно на уровне школьных знаний (без слишком сложных операторов, которые точно в школе не проходят.
Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.10.2012, 19:38
Ответы с готовыми решениями:

Программа вывода последовательности цифр в порядке увеличения частоты их встречаемости
Болел два месяца — не знаю, что делать. На самом деле тут работы на две минуты: скопипастил всё что нужно, осталось доработать...

Напечатать буквы в порядке увеличения частоты их встречаемости. Исправить ошибку
Помогите исправить ошибку.... На вход программы подаются строчные английские буквы. Ввод этих букв заканчивается точкой (другие символы,...

Вывести порядковые номера наименьших чисел последовательности в порядке увеличения их номеров
очередь Ввести последовательность целых чисел. Не сохраняя всей последовательности в памяти, вывести порядковые номера наименьших чисел...

7
 Аватар для NurlashKO
168 / 90 / 80
Регистрация: 07.10.2012
Сообщений: 145
14.10.2012, 20:22
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var
    s :string;
    d, p :array[0 .. 1000] of longint;
    i, c, j :longint;
begin
    read(s);
 
    for i := 1 to length(s) do
        inc(d[ord(s[i]) - 48]);
 
    for i := 0 to 9 do
        p[i] := i;
 
    for i := 1 to 100 do
        for j := 0 to 8 do
            if (d[p[j]] > d[p[j + 1]]) then begin
                c := p[j];
                p[j] := p[j + 1];
                p[j + 1] := c;
            end;
 
    for i := 0 to 9 do
        if (d[p[i]] <> 0) then 
            write(p[i]);
        
end.
2
1 / 1 / 0
Регистрация: 22.01.2011
Сообщений: 7
14.10.2012, 20:37  [ТС]
NurlashKO, Не могли бы вы объяснить ход решения задачи, чтобы я мог подобную решить?
0
 Аватар для NurlashKO
168 / 90 / 80
Регистрация: 07.10.2012
Сообщений: 145
14.10.2012, 20:41
1)Считаю количество 0, 1, 2 ... 9 в отдельный массив d.
2)Сортирую массив d по возрастанию.
3)Вывожу отсортированный массив.
1
 Аватар для Стрелок
43 / 43 / 27
Регистрация: 29.02.2012
Сообщений: 73
14.10.2012, 20:53
Еще одно решение, может пригодиться
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
program zz;
Uses
    Crt;
var
   i,g,q,k:integer;
   s,s1:string;
   a:array[1..10] of integer;
begin
readln(s);
k:=10;
 for i:=1 to length(s) do
  begin
   val(s[i], g, q);
   a[g]:=a[g]+1;
  end;
 
s:='';
 
 for i:=1 to 10 do
  begin
   if (a[i] < k) and (a[i] <> 0) then k:=a[i];
  end;
 
g:=1;
 
 for i:=1 to 10 do
  begin
   if (a[i] = k) then
    begin
     str(i, s1);
     s:=s+s1;
    end;
  end;
 
 for g:=1 to 100 do
  begin
   for i:=1 to 10 do
    begin
     if (a[i]=g) and (a[i]<>k) then
      begin
       str(i, s1);
       s:=s+s1;
      end;
    end;
  end;
 
writeln(s);
readkey;
end.
1
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 6
27.10.2014, 14:22
Цитата Сообщение от NurlashKO Посмотреть сообщение
inc(d[ord(s[i]) - 48]);
Не могли бы объяснить, что происходит в этой строчке?

Добавлено через 12 минут
NurlashKO,
Цитата Сообщение от NurlashKO Посмотреть сообщение
inc(d[ord(s[i]) - 48]);
Не могли бы объяснить, что происходит в этой строчке?
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
27.10.2014, 15:04
Пусть s[i]='9'//символ цифры 9, ее код(ord(si]))=57, вычитаем 48, получаем число 9.
Увеличиваем значение в ячейке d[9] на 1 (inc(d[9]))
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
27.10.2014, 15:28
GalinaMihankova,
в этих строчках увеличивается (inc) элемент массива d по индексу ord(s[i])-48, само это выражение для символов от '0' до '9' дает числа от 0 до 9 соответственно, так как Ord('0') равно 48, коды последующих цифр отличаются на 1.

Однако, от подобного ручного пересчёта легко избавиться, переложив заботу об этом на компилятор:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const
  d: array ['0'..'9'] of Char = '0123456789';
var
  c: array ['0'..'9'] of Integer;
  s: String;
  i, ti: Integer;
  j, tc: Char;
begin
  Write('Введите последовательность цифр: '); ReadLn(s);
  for i:=1 to Length(s) do
    if s[i] in ['0'..'9'] then Inc(c[s[i]])
    else Break;
  repeat
    i:=0;
    for j:='0' to '8' do
      if (c[j]>c[succ(j)]) or (c[j]=c[succ(j)]) and (d[j]>d[succ(j)])
      then begin
        ti:=c[j]; c[j]:=c[succ(j)]; c[succ(j)]:=ti;
        tc:=d[j]; d[j]:=d[succ(j)]; d[succ(j)]:=tc;
        Inc(i);
      end;
  until i=0;
  for j:='0' to '9' do if c[j]>0 then Write(d[j]); WriteLn;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.10.2014, 15:28
Помогаю со студенческими работами здесь

Дан непустой массив из цифр А [1.10]. Вывести на экран цифры, по убыванию встречаемости их в массиве
Дан непустой массив из цифр А . Вывести на экран цифры, по убыванию встречаемости их в массиве.

построить и напечатать множество, элементами которого являются встречающиеся в последовательности: цифры от '0' до '9'
Дана непустая последовательность символов. Требуется построить и напе- чатать множество, элементами которого являются встречающиеся в...

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

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

Построить и напечатать множество, элементами которого являются встречающиеся в последовательности цифры
Дана непустая последовательность символов. Требуется построить и напечатать множество, элементами которого являются встречающиеся в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru