Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2015, 18:04   #1
Ostapov
Пользователь
 
Регистрация: 30.09.2015
Сообщений: 22
По умолчанию отсортировать элементы файла

Создать типизированный файл с записями, состоящими из названия города и численности его населения. Файл упорядочен по неубыванию численности. Преобразовать его так, чтобы города в файле были упорядочены по невозрастанию численности.
Ostapov вне форума Ответить с цитированием
Старый 06.12.2015, 19:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Попытки? Наработки?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.12.2015, 19:34   #3
Ostapov
Пользователь
 
Регистрация: 30.09.2015
Сообщений: 22
По умолчанию

их нет, я понимаю что нужно делать сортировку пузырьком, а как создать файл с записями в данной задаче не могу понять
Ostapov вне форума Ответить с цитированием
Старый 06.12.2015, 19:43   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А вот тут описание и пример по записям есть: http://pas1.ru/typed-file
Ознакомься и примени.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.12.2015, 17:24   #5
Ostapov
Пользователь
 
Регистрация: 30.09.2015
Сообщений: 22
По умолчанию

Код:
const
 r=100;
type
    t_goroda = record
      name: string[10];
      chislen: LongInt;
    end;
 arrg = array[1..r] of t_goroda;
 
var
    f: file of t_goroda;
    i,a: Integer;
    goroda:arrg;
begin
  Assign(f,'notebook.txt');
  Rewrite(f);
  for i:=1 to 2 do begin
    with goroda[i] do begin
      Write('Город: ');
      ReadLn(name);
      Write('Численность: ');
      ReadLn(chislen);
    end;
     
    if goroda[i].chislen <goroda[i+1].chislen then
     begin 
      a:=goroda[i].chislen;
      goroda[i].chislen:=goroda[i+1].chislen;
      goroda[i+1].chislen:=a;
     end;
     Write(f, goroda[i]);
  end;
  Close(f);
end.
что не так?
Ostapov вне форума Ответить с цитированием
Старый 07.12.2015, 18:25   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Write(f, goroda[i]); отнеси в цикл ввода данных ему в конец.
if goroda[i].chislen <goroda[i+1].chislen then со всем его содержимым вынеси в отдельный цикл считывания из файла
Код:
Reset(f); while not eof(f) do begin
...
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.12.2015, 18:31   #7
Ostapov
Пользователь
 
Регистрация: 30.09.2015
Сообщений: 22
По умолчанию

Код:
const
 r=100;
type
    t_goroda = record
      name: string[10];
      chislen:integer;
    end;
 arrg = array[1..r] of t_goroda;
 
var
    f,f1: file of t_goroda;
    i,a: Integer;
    goroda:arrg;
begin
  Assign(f,'notebook.txt');
  Rewrite(f);
  for i:=1 to 2 do
  begin
    with goroda[i] do 
    begin
      Write('Город: ');
      ReadLn(name);
      Write('Численность: ');
      ReadLn(chislen);
    end;
     Write(f1, goroda[i]);
 end;
        reset(f);
        while not eof(F) do
        begin
    if goroda[i].chislen <goroda[i+1].chislen then
     begin 
      a:=goroda[i].chislen;
      goroda[i].chislen:=goroda[i+1].chislen;
      goroda[i+1].chislen:=a;
     end;
  end;
  Close(f);
end.
так?
Ostapov вне форума Ответить с цитированием
Старый 07.12.2015, 19:24   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Почти )
Внутри цикла нужно делать считывание из файла.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.12.2015, 19:25   #9
Ostapov
Пользователь
 
Регистрация: 30.09.2015
Сообщений: 22
По умолчанию

каааак? можешь написать код?

рабочей программы, а то у меня какие-то куски)

Последний раз редактировалось Stilet; 07.12.2015 в 20:02.
Ostapov вне форума Ответить с цитированием
Старый 07.12.2015, 20:04   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Что, все настолько плохо?
Код:
i:=1;
        while not eof(F) do        begin read(f,goroda[i]); inc(i); end;
Тут сортируем goroda
И снова закатываем в файл
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отсортировать элементы массива wolf05632 Microsoft Office Word 7 24.04.2011 22:10
Отсортировать элементы (язык Pelles C) Kotik Wasil Помощь студентам 1 17.01.2011 20:56
1.Найти в матрице первую строку, все элементы которой отрицательны 2.отсортировать элементы массива по в w0lf16 Помощь студентам 2 22.11.2009 15:47
Отсортировать отрицательные элементы Cdevelop Общие вопросы C/C++ 5 18.03.2009 22:31