С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 07.11.2018
Сообщений: 22

Поиск и сортировка строк из текстового файла

20.11.2018, 19:56. Показов 1637. Ответов 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
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
program lab3;
const Numbers = ['0'..'9']; nmax = 10; chars1 = ['A'..'Z','a'..'z']; chars2 = ['А'..'Я','а'..'я'];
type mas = array[1..10] of integer; sort = array[1..nmax] of integer;
 
procedure Strtomas(s: string; var a: mas);
var c: integer; i, k, err: integer;
begin
  for c := 1 to 10 do a[c] := 0;
  for i := 1 to length(s) do
    if s[i] in Numbers then begin
    val(s[i], k, err);
    inc(a[k]);
    end;
end;
 
procedure Mastostr(var a: mas; var r: sort; var res: string);
var c, n, i, x, j: integer;
begin
  i := 1;    
  for c := 1 to 10 do
    if a[c] > 0 then begin
      r[i] := a[c];
      i := i + 1;
    end;
    
  n := i;  
  for i := 2 to n do
  begin
    x := r[i];
    j := i - 1;
    while (j >= 1) and (r[j] < x) do
    begin
      r[j+1] := r[j];
      j := j - 1;
    end;
    r[j+1] := x;
  end;
  
  res := '';
  for i := 1 to n do 
    res := res + r[i];
end;
 
procedure Alg(var f1, f2: text);
var s, res: string; a: mas; r: sort;
begin
  reset(f1); rewrite(f2);
  while not eof(f1) do begin
    readln(f1, s);
    if s <> '' then begin
      Strtomas(s,a);
      Mastostr(a, r, res);
    end
    else res := '';
    writeln(f2, res);
  end;
  close(f1); close(f2);
end;
 
var f1, f2: text; fn1, fn2: string;
 
begin
  writeln('Задание: В исходном текстовом файле записаны строки, содержащие последовательность символов,');
  writeln('среди которых встречаются и цифры. Требуется написать программу, которая для каждой строки');
  writeln('исходного файла будет составлять и выводить в результирующий файл максимальное число из тех цифр,');
  writeln('которые встречаются во входных данных. При составлении итогового числа каждая цифра может быть');
  writeln('использована только один раз. Если во входных данных цифры не встречаются, то следует вывести "-1".');
  writeln();
  writeln('Введите имя исходного файла: '); readln(fn1);
  if FileExists(fn1) then begin
    writeln('Введите имя результирующего файла: '); readln(fn2);
    assign(f1, fn1); assign(f2, fn2);
    Alg(f1, f2);
  end
  else write('Такого файла не существует!');
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.11.2018, 19:56
Ответы с готовыми решениями:

Сортировка строк текстового файла
Итак. Вы задаете файлу имя 1.txt. Запускаете эту программу и она спросит у вас &quot;Сколько строк в вашем файле&quot;. Сообщите ей. ...

Сортировка строк текстового файла
Подсказали обратиться к специалистам этого раздела! Прошу помощи для хобби. Имеется текстовый файл. Представляет собой список....

Сортировка текстового файла по первым символам строк
Программа в консольном виде. Я открыл текстовый файл, но ещё необходимо отсортировать его по первым символам строк. Как это можно...

1
1 / 1 / 0
Регистрация: 07.11.2018
Сообщений: 22
10.12.2018, 21:00  [ТС]
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
program lab3;
const Numbers = ['0'..'9']; nmax = 10; chars1 = ['A'..'Z','a'..'z']; chars2 = ['А'..'Я','а'..'я'];
type mas = array[1..10] of integer; sort = array[1..nmax] of integer;
 
procedure Strtomas(s: string; var a: mas);
var c: integer; i, k, err: integer;
begin
  for k := 1 to 10 do a[k] := 0;
  for i := 1 to length(s) do
    if s[i] in Numbers then begin
    val(s[i], k, err);
    inc(a[k+1]);
    end;
end;
 
procedure Mastostr(var a: mas; var r: sort; var res: string);
var c, n, i, x, j, k: integer;
begin
  i := 1;
  for k := 1 to 10 do
    if a[k] > 0 then begin
      r[i] := k - 1;
      i := i + 1;
    end;
    
  n := i - 1;  
  for i := 2 to n do
  begin
    x := r[i];
    j := i - 1;
    while (j >= 1) and (r[j] < x) do
    begin
      r[j+1] := r[j];
      j := j - 1;
    end;
    r[j+1] := x;
  end;
  
  res := '';
  for i := 1 to n do 
    res := res + r[i];
  if res = '' then res := '-1';
end;
 
procedure Alg(var f1, f2: text);
var s, res: string; a: mas; r: sort;
begin
  reset(f1); rewrite(f2);
  while not eof(f1) do begin
    readln(f1, s);
    if s <> '' then begin
      Strtomas(s,a);
      Mastostr(a, r, res);
    end
    else res := '';
    writeln(f2, res);
  end;
  close(f1); close(f2);
end;
 
var f1, f2: text; fn1, fn2: string;
 
begin
  writeln('Задание: В исходном текстовом файле записаны строки, содержащие последовательность символов,');
  writeln('среди которых встречаются и цифры. Требуется написать программу, которая для каждой строки');
  writeln('исходного файла будет составлять и выводить в результирующий файл максимальное число из тех цифр,');
  writeln('которые встречаются во входных данных. При составлении итогового числа каждая цифра может быть');
  writeln('использована только один раз. Если во входных данных цифры не встречаются, то следует вывести "-1".');
  writeln();
  writeln('Введите имя исходного файла: '); readln(fn1);
  if FileExists(fn1) then begin
    writeln('Введите имя результирующего файла: '); readln(fn2);
    assign(f1, fn1); assign(f2, fn2);
    Alg(f1, f2);
  end
  else write('Такого файла не существует!');
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.12.2018, 21:00
Помогаю со студенческими работами здесь

Сортировка строк текстового файла в порядке уменьшения их длины
Готовое решение domains file=datafile list=string* predicates

Сортировка строк из текстового док. в Memo
Нашел на форуме уже готовую сортировку от товарища volvo, function myCompare (List : TStringList; Index1, Index2 : Integer) :...

Сортировка слов текстового файла путём слияния данных из файла и заданного внутреннего массива
Здравствуйте. Имеется задание, которое я ни в коем случае не прошу за меня сделать. Мне непонятно пару моментов, которые бы мне...

Разбиение текстового файла, содержащего четное количество строк, на два текстовых файла
1 разбиения текстового файла, содержащего четное количество строк, на два текстовых файла, в каждый из которых записать одинаковое...

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru