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

Программа вывода последовательности цифр в порядке увеличения частоты их встречаемости

26.12.2016, 17:50. Показов 1388. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Болел два месяца — не знаю, что делать.

На самом деле тут работы на две минуты: скопипастил всё что нужно, осталось доработать (согласовать куски кода скопированные из разных источников).

ЗАДАНИЕ
В исходном текстовом файле записаны строки, содержащие цифры в произвольном порядке, возможно разделенные другими символами. Требуется написать программу, которая для каждой строки исходного файла будет выводить в результирующий файл последовательность цифр ('0','1'..'9') из входной последовательности в порядке увеличения частоты их встречаемости. Каждая цифра при этом должна быть распечатана один раз. Если какие-то цифры встречаются одинаковое число раз, то они выводятся по возрастанию.
Например, пусть в одной из строк исходного файла содержатся следующие символы:
12324#32
в результирующем файле должно быть:
1432



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
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
program Lab3;
 
uses
  crt;
 
const
  FILE1 = 'C:\Users\user\Desktop\Lab3\fname1.txt';
  FILE2 = 'C:\Users\user\Desktop\Lab3\fname2.txt';
 
type
  mas = array[1..10] of integer;
  matr = array[1..10] of mas;
 
procedure About;
begin
  writeln('Л***');
  writeln('В***');
  writeln;
  
  writeln('Г***');
  writeln('К***');
  writeln;
  
  writeln('Задание.');
  writeln('Требуется написать программу, которая для каждой строки исходного файла');
  writeln('будет выводить в результирующий файл последовательность цифр из входной');
  writeln('последовательности в порядке увеличения частоты их встречаемости.');
  writeln('Примечание.');
  writeln('* Каждая цифра при этом должна быть распечатана один раз.');
  writeln('* Если какие-то цифры встречаются одинаковое число раз,');
  writeln('то они выводятся по возрастанию.');
  writeln('Например.');
  writeln('Пусть в одной из строк исходного файла содержатся следующие символы:');
  writeln('123**24#32');
  writeln('В результирующем файле должно быть:');
  writeln('1432');
end;
 
//----
procedure Alg;
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;
//--- нашёл в интернете
  
procedure FileToFile(var f1, f2: text);
var
  s, t: string;
begin
  reset(f1); rewrite(f2); // открываем файл 1, перезаписываем файл 2
  while not eof(f1) do // подсчитываем количество символов
  begin               
    readln(f1, s);    
    if (s <> '') then Alg(s, t)
    else (t := '');
    writeln(f2, t);
    end;
    close(f1); close(f2);
    end;
    
procedure FileNew(var fname1, fname2: string; f1, f2: text);
begin
  writeln('Введите имя исходного файла:'); // запрашиваем C:\Users\user\Desktop\Lab3\fname1.txt
  readln(fname1);
  fname1 := FILE1;
  if FileExists(fname1) then
  begin
    writeln('Введите имя результирующего файла'); // запрашиваем C:\Users\user\Desktop\Lab3\fname2.txt
    readln(fname2);
    fname2 := FILE2;
    assign(f1, fname1); assign(f2, fname2); 
    FileToFile(f1, f2);
  end
  else writeln('Файл с таким именем не существует.');
  close(f1); close(f2); // закрываем файл
  readln;
end;
 
var
  fname1, fname2: string; f1, f2: text; 
 
begin
  About;
  FileNew(fname1, fname2, f1, f2);
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2016, 17:50
Ответы с готовыми решениями:

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

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

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

Вывести цифры, встречающиеся в последовательности, в порядке увеличения частоты их встречаемости (Pascal -> C++)
Условие задачи: На вход программе подается последовательность цифр, заканчивающаяся точкой (другие...

1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7769 / 4598 / 2823
Регистрация: 22.11.2013
Сообщений: 13,077
Записей в блоге: 1
27.12.2016, 16:38 2
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
var
  s: String;
  b, c: array [0..9] of Integer;
  i, p, q, t: Integer;
begin
  while not EoF do begin
    ReadLn(s);
    for i:=0 to 9 do b[i]:=i;
    for i:=0 to 9 do c[i]:=0;
    for i:=1 to Length(s) do
      if s[i] in ['0'..'9'] then Inc(c[Ord(s[i])-Ord('0')]);
    q:=High(b);
    repeat
      p:=q; q:=0;
      for i:=0 to p-1 do
        if (c[i+1]<c[i]) or (c[i+1]=c[i]) and (b[i+1]<b[i]) then begin
          q:=i;
          t:=b[i]; b[i]:=b[i+1]; b[i+1]:=t;
          t:=c[i]; c[i]:=c[i+1]; c[i+1]:=t;
        end;
    until q=0;
    for i:=0 to 9 do if c[i]<>0 then Write(b[i]); WriteLn;
  end;
end.
Добавлено через 5 минут
Цитата Сообщение от vladimir1488 Посмотреть сообщение
скопипастил всё что нужно
Вы чрезмерно оптимистичны.
1
27.12.2016, 16:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2016, 16:38
Помогаю со студенческими работами здесь

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

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

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

Числа входного потока в порядке увеличения частоты встречаемости вывести в файл
Написать программу, которая цифры встречающеюся во входной записи, в порядке увеличения частоты...


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

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