Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
awl
1 / 1 / 0
Регистрация: 28.02.2012
Сообщений: 26
1

В текстовом файле отсортировать строки по возрастанию их длин.

05.03.2012, 07:48. Просмотров 2123. Ответов 5
Метки нет (Все метки)

В текстовом файле отсортировать строки по возрастанию их длин.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2012, 07:48
Ответы с готовыми решениями:

(Массивы слов, строк) Выделить из текста слова, содержащие попарно различные буквы, отсортировать их по возрастанию их длин.
Строка текста - слова, пробелы, знаки препинания. Текст размещен в одной или нескольких строках без...

В текстовом файле упорядочить элементы по возрастанию их кодов
Даны текстовый файл. Упорядочить элементы по возрастанию их кодов. Буду благодарна за помощь.

Отсортировать слова в текстовом файле по популярности, вместе с количеством
Дан текстовый файл в котором не менее 1000 слов. Нужно посчитать количество слов и сохранить эти...

Отсортировать массив в файле по возрастанию первой цифры
В файле input.txt записаны числа (в столбик), известно, что их не более 100. Отсортировать на...

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

5
qnak
58 / 58 / 45
Регистрация: 19.02.2012
Сообщений: 118
05.03.2012, 17:12 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
25
26
27
28
29
program og;
const con =50;
var f,fo:text; 
a:array[1..con] of string[60];
     c,s:string[60]; i,k,j,minL:integer; 
     begin
 
         assign(f,'H:\inp.txt'); reset(f);
         assign(fo,'H:\out.txt');rewrite(fo);
         i:=1;
 while not eof(f) do begin
readln(f,a[i]);
 i:=i+1;end;
 
for j:=1 to i do 
writeln(a[j]);
 
for k:=1 to i-1 do begin
for j:=1 to i-k do 
if length(a[j])> length(a[j+1]) then begin c:=a[j]; a[j]:=a[j+1]; a[j+1]:=c end;
end;
//выводим в файл fo отсортированный массив по возрастанию длин строк
for j:=1 to i do 
writeln(fo,a[j]);
 
              close(f);close(fo);
         
              
     end.
1
TirSlark
1 / 1 / 1
Регистрация: 05.05.2013
Сообщений: 17
05.06.2013, 11:07 3
qnak, А можешь около каждого шага расписать подробности, для чего и почему так это делается ?
0
Striker
SausageFlat
241 / 220 / 154
Регистрация: 19.08.2012
Сообщений: 499
Записей в блоге: 1
05.06.2013, 11:12 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
program og;
 
const
  con = 50;
 
var
  f, fo: text; 
  a: array[1..con] of string[60];
  c, s: string[60]; i, k, j, minL: integer;
 
begin
  
  assign(f, '1.txt'); reset(f); //Инициализация входного файла.
  assign(fo, '2.txt');rewrite(fo);//Инициализация файла вывода.
  i := 1;
  while not eof(f) do //Считываем данные из файла в массив.
  begin
    readln(f, a[i]);
    i := i + 1; end;
  
  for j := 1 to i do //Вывод данных из файла на экран
    writeln(a[j]);
  
  for k := 1 to i - 1 do //Сортируем строки по возрастанию.
  begin
    for j := 1 to i - k do 
      if length(a[j]) > length(a[j + 1]) then begin c := a[j]; a[j] := a[j + 1]; a[j + 1] := c end;
  end;
  //выводим в файл fo отсортированный массив по возрастанию длин строк.
  for j := 1 to i do 
    writeln(fo, a[j]);
  close(f);close(fo);
end.
1
Viki_Meow
0 / 0 / 0
Регистрация: 24.11.2015
Сообщений: 50
11.05.2016, 22:03 5
Попробовала сделать свою задачу так как Вы написали - не вышло. Я могу записать и вывести на экран содержимое файла (расширение файла еще плюс надо другое, не txt), а вот потом, подставляя Ваш код, ничего не выходит. Если Вам не сложно, то можете помочь? (Задача: Создать файл, содержащий произвольные строки. Отсортируйте файл по возрастанию длин строк. Вывести на экран содержимое первоначального и измененного файлов)

Мой ввод и вывод.

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
Program FileString;
Uses
Crt;
const nmax=50;
Var
   f: file of string; {переменная файлового типа}
   str : string;  {строка, содержащая имена файла}
   A:array[1..nmax] of string;
   i,j,n:byte;
   t:string;
Begin
   ClrScr;
   assign(f,'F:\ОП\Практическая работа 32-33\PR_fils_vvod.DAT');  {связь имени файла и переменной}
   rewrite(f);    {открытие файла для записи}
   repeat
       writeln('Введите строку и нажмите ENTER, для окончания ввода - пробел ENTER'); {предложение ввести текст в файл}
       readln(str);
       write(f,str);
   until str=' ';
   close(f);  {закрытие файла}
   assign(f,'F:\ОП\Практическая работа 32-33\PR_fils_vvod.DAT');
   reset(f);   {открываем файл для чтения}
    while not eof(f) do  {просматриваем файл до конца}
       begin
           read(f,str);   {считываем из файла очередной элемент в переменную str}
           writeln(str);  {выводим переменную str}
       end;
   close(f); {закрытие файла}
   End.
0
Striker
SausageFlat
241 / 220 / 154
Регистрация: 19.08.2012
Сообщений: 499
Записей в блоге: 1
12.05.2016, 09:32 6
Цитата Сообщение от Viki_Meow Посмотреть сообщение
Задача: Создать файл, содержащий произвольные строки. Отсортируйте файл по возрастанию длин строк. Вывести на экран содержимое первоначального и измененного файлов
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 FileString;
 
const
  nmax = 50;
  path = 'C:\***';
 
var
  f: text;
  str: string;
  A: array[1..nmax] of string;
  i, j, k: byte;
  c: string;
 
begin
  assign(f, path);
  rewrite(f);
  repeat
    writeln('Введите строку и нажмите ENTER, для окончания ввода - пробел ENTER');
    readln(str);
    if(str <> ' ') then    
    begin
      writeln(f, str);       
    end;
  until str = ' ';
  close(f);
  reset(f);
  i := 1;  
  while not eof(f) do
  begin
    readln(f, str);
    writeln(str);
    a[i] := str;
    inc(i);
  end;
  
  for k := 1 to i - 1 do
  begin
    for j := 1 to i - k do 
      if length(a[j]) > length(a[j + 1]) then begin c := a[j];a[j] := a[j + 1];a[j + 1] := c end;
  end;
  close(f);
  rewrite(f);
  for j := 1 to i do 
  begin
    writeln(f, a[j]);
    writeln(a[j]);
  end;
  close(f);
end.
0
12.05.2016, 09:32
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2016, 09:32

Отсортировать строки матрицы по возрастанию сумм положительных элементов каждой строки
Дана прямоугольная матрица размером n x m, содержащая вещественные числа. Определить сумму...

Отсортировать строки двумерного массива по возрастанию первого элемента строки
Прошу помощи. Отсортировать строки двумерного массива по возрастанию первого элемента строки....

В текстовом файле отсортировать строки по возрастанию их длин
В текстовом файле отсортировать строки по возрастанию их длин... Delphi - это печально как то))) ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.