0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 13
1

Определить наиболее часто встречающееся число

12.02.2014, 13:37. Показов 1938. Ответов 1

Author24 — интернет-сервис помощи студентам
Создать стек из случайных чисел в диапазоне от 1 до 10 и определить наиболее часто встречающееся число.Помогите пожалуйста)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2014, 13:37
Ответы с готовыми решениями:

Часто встречающееся число
Вот задача Дан непустой массив из цифр. Вывести на экран цифру, наиболее часто встречающуюся в...

В Stringgrid найти и вывести самое часто встречающееся число
Подскажите пожалуйста. Вот заполняю stringgrid случайными числами и нужно в одном столбце найти и...

Получить 5 наиболее часто встречающихся слов и число их появлений
Добрый вечер не могли бы помочь написать программу на Turbo Delphi в консольном режиме. Заранее...

Определить наиболее часто встречающийся символ в строке
Определить наиболее часто встречающийся символ в строке.

1
13105 / 5886 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
13.02.2014, 01:15 2
Лучший ответ Сообщение было отмечено Мотвикс как решение

Решение

В виде консольного приложения.
Delphi
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, Windows;
 
type
  {Основные данные элемента стека.}
  TData = Integer;
  {Указатель на элемент стека.}
  TPElem = ^TElem;
  {Элемент стека.}
  TElem = record
    Data : TData;   {Основные данные.}
    PNext : TPElem; {Указатель на следующий элемент стека.}
  end;
  {Для стека отдельный тип можно не создавать. Стек будет представлен в виде
  указателя на элемент, расположенный на вершине стека. Поэтому, переменная
  представляющая стек, будет иметь тип TPElem.}
 
{Добавление элемента на вершину стека.}
procedure Push(var aPSt : TPElem; const aData : TData);
var
  PElem : TPElem;
begin
  New(PElem);
  PElem^.Data := aData;
  PElem^.PNext := aPSt;
  aPSt := PElem;
end;
 
{Изъятие элемента с вершины стека.
Если стек не пуст, то с вершины стека изымается элемент и его значение
(основные данные) возвращается через параметр aData. В этом случае функция
возвращает значение True. Если стек пуст, то операция отменяется, а функция
возвращает значение False.}
function Pop(var aPSt : TPElem; var aData : TData) : Boolean;
var
  PElem : TPElem;
begin
  Result := False;
  if aPSt = nil then
    Exit;
 
  PElem := aPSt;
  aPSt := PElem^.PNext;
  aData := PElem^.Data;
  Dispose(PElem);
  Result := True;
end;
 
{Распечатка элементов стека в направлении вершина - дно.}
procedure StWriteln(aPSt : TPElem);
var
  i : Integer;
begin
  if aPSt = nil then
    Writeln('Стек пуст.')
  else
  begin
    i := 0;
    while aPSt <> nil do
    begin
      Inc(i);
      if i > 1 then
        Write(', ');
      Write(aPSt^.Data);
      aPSt := aPSt^.PNext;
    end;
    Writeln;
  end;
end;
 
{Освобождение памяти, выделенной для стека (очистка стека).}
procedure StFree(var aPSt : TPElem);
var
  Data : TData;
begin
  while Pop(aPSt, Data) do;
end;
 
var
  PSt1, PSt2, PSt3, P : TPElem;
  Data, A : TData;
  i, Code, Cnt, CntMax : Integer;
  S : String;
begin
  {Переключение окна консоли на кодовую страницу CP1251 (Win-1251).
  Если после переключения русские буквы показываются неверно,
  следует открыть системное меню консольного окна - щелчком мыши в левом
  верхнем углу окна консоли и выбрать:
  Свойства - закладка "Шрифт" - выбрать шрифт: "Lucida Console".}
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
 
  {Начальная инициализация стеков.}
  PSt1 := nil;
  PSt2 := nil;
  PSt3 := nil;
 
  repeat
    {Добавление в стек элементов со случайными значениями.}
    Randomize; {Инициализация генератора случайных чисел.}
    for i := 1 to 10 do
      Push(PSt1, Random(4)); {Значения из диапазона 0..3.}
    
    {Распечатка стека.}
    Writeln('Содержимое стека:');
    StWriteln(PSt1);
 
    {Решение задачи.
    Здесь мы будем действовать так. Возьмём элемент с вершины стека PSt1
    - обозначим значение этого элемента "А". И подсчитаем сколько раз такое
    значение встречается в стеке. Для этого станем переливать элементы из стека
    PSt1 в стек PSt2 и при этом каждый раз, когда встретится элемент со значением,
    равным "А", мы будем его подсчитывать, но в стек PSt2 его записывать не будем.
    Таким образом, когда завершится переливание, мы будем знать сколько раз
    значение, равное "А", встретилось в стеке. Кроме этого, в стеке PSt2 окажутся
    все исходные элементы, кроме тех, которые равны "А".
    Если подсчитанное количество равно текущему наибольшему, то записываем элемент
    со значением "А" в результирующий стек PSt3. Если количество оказалось
    больше, чем текущее наибольшее, то принимаем его за текущее наибольшее.
    А все элементы, которые ранее нами были приняты, как наиболее частые,
    таковыми, значит, не являются. Поэтому мы их из результирующего списка
    (это стек PSt3) удаляем (т. е., очищаем стек PSt3) и записываем в PSt3
    элемент со значением "А".
    Потом меняем местами указатели на стеки PSt1 и PSt2 и повторяем те же самые
    действия. Так действуем до момента, когда все элементы окажутся удалёнными.
    В результате получим значение нибольшего количества. А в стеке PSt3 у нас
    будет набор элементов, которые встречалсь наибольее часто.}
    CntMax := 0;
    Cnt := 0;
    while Pop(PSt1, Data) do
    begin
      {Подсчёт количества присутствий элементов со значением "А".}
      A := Data;
      repeat
        if Data = A then
          Inc(Cnt) {Подсчёт очередного элемента, равного "А".}
        else
          Push(PSt2, Data); {Запись в стек PSt2 элементов, которые не равны "А".}
      until not Pop(PSt1, Data);
      {Уточнение текущего наибольшего количества присутствий и уточнение
      списка элементов, которые присутствуют наиболее часто.}
      if Cnt > CntMax then
      begin
        CntMax := Cnt;
        while Pop(PSt3, Data) do;
        Push(PSt3, A);
      end
      else if Cnt = CntMax then
        Push(PSt3, Data);
      {Меняем местами указатели на стеки.}
      P := PSt1;
      PSt1 := PSt2;
      PSt2 := P;
      {Сброс счётчика.}
      Cnt := 0;
    end;
 
    {Ответ.}
    Writeln('Наибольшее количество присутствий: ', CntMax);
    Writeln('Перечень элементов, которые встречаются наиболее часто:');
    StWriteln(PSt3);
 
    {Освобождение памяти, выделенной для стеков.}
    StFree(PSt1);
    StFree(PSt2);
    StFree(PSt3);
    Writeln('Память, выделенная для стеков, освобождена.');
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
0
13.02.2014, 01:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2014, 01:15
Помогаю со студенческими работами здесь

Для заданного целого числа N определить цифру а, наиболее часто встречающуюся в числе
Для заданного целого числа N определить цифру а, наиболее часто встречающуюся в числе ...

Вывести наиболее часто встречающийся элемент массива
Задача: Вывести наиболее часто встречающийся элемент массива. Delphi(Console). Добавлено...

Вывести цифру, наиболее часто встречающуюся в массиве
Дан непустой массив из цифр. Вывести цифру наиболее часто встречающуюся в этом массиве. Создала...

В строке символов найти наиболее часто повторяющуюся цифру
В строке символов, введенных в StringGrid(1строка), найти наиболее часто повторяющуюся цифру я...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru