Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Технологии > Помощь студентам
Регистрация

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

Ответ
 
Опции темы
Старый 13.02.2018, 23:12   #1
porubilo
Новичок
 
Регистрация: 13.02.2018
Сообщений: 1
Репутация: 10
По умолчанию Отсортировать записи файла по алфавиту.

Помогите решить задачу: Дан файл, записи которого содержат наименования и цены деталей. Отсортировать записи файла по алфавиту. ( С++ / Delphi )
porubilo вне форума   Ответить с цитированием
Старый 13.02.2018, 23:34   #2
digitalis
Участник клуба
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 809
Репутация: 346
По умолчанию

С++ и Delphi - это кэгбэ немножко разные минералы, ну да ладно. Какие проблемы ? Считываешь файл в массив структур, сортируешь любым методом, хотя бы тем же "пузырьком" (не путать с чекушкой), и записываешь файл обратно. Чтобы не таскать туда-сюда структуры, можно сделать индексный массив и обменивать местами индексы.
Можно по другому. Находишь минимальный элемент, заносишь в выходной массив, затем следующий и т.д. - если задача допускает два массива.
digitalis вне форума   Ответить с цитированием
Старый 15.02.2018, 12:46   #3
digitalis
Участник клуба
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 809
Репутация: 346
По умолчанию

Ладно, я сегодня добрый. Приблизно так:
Код:

type
    Price_rec = record
      name : string[64] ;
      price : string[12] ;
    end;
    TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure FormActivate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1  ;
  A1: array[0..1000] of Price_Rec ;
  F1,F2: File of  Price_Rec ;
  N_C: integer ;
  File1_Name,File2_Name: string ;

implementation

{$R *.dfm}


procedure TForm1.FormActivate(Sender: TObject);
begin
   Memo1.Clear 
end;

procedure TForm1.Button1Click(Sender: TObject);
var i,j,k : integer ;
tmp: Price_rec ;
stro: string ;
begin
// Чтение
      AssignFile (F1,File1_Name) ;
      {$I-}
      Reset (F1) ;
      {$I+}
      if IOResult <>0 then
        begin Memo1.Lines.Add('No file') ; Exit end
      else
// Сортировка
        begin
           N_C := 0 ;
           while not Eof(F1) do
             begin
               Read(F1,A1[N_C]);
               Inc (N_C)
             end ;
           for i := 0 to N_C-1 do
             for j := 0 to N_C-i-1 do
               if A1[j+1].name < A1[j].name then
                begin
                 tmp := A1[j] ;
                 A1[j] := A1[j+1] ;
                 A1[j+1] := tmp
                end ;
           for i := 0 to N_C do
              Memo1.Lines.Add(A1[i].name + A1[i].price) ;
// Запись
           AssignFile (F2,File2_Name) ; // ! ! ! !
           {$I-}
           Rewrite (F2) ;
           {$I+}
           if IOResult <>0 then
              begin
                N_C := IOResult ;
                Memo1.Lines.Add('Error' + IntToStr(N_C))
              end ;
           for i := 0 to N_C do Write (F2,A1[i]) ;
           CloseFile (F2) ;
        end ;
end;

end.

И в результате легкого клика мыши файл

Самогонка 5.65
Соленый огурчик 0.60
Коньяк 9.80
Семечки арбузные 0.24
Ноутбук ASUS1200 456.00
Дыня чарджовская 0.99


превращается файл в

Дыня чарджовская 0.99
Коньяк 9.80
Ноутбук ASUS1200 456.00
Самогонка 5.65
Семечки арбузные 0.24
Соленый огурчик 0.60

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

А вообще никогда не нужно не то, что отвечать, а даже читать сообщения автора-одно_постовика, который создал аккаунт с единственной целью - получить на халяву решение. Потому что за решение проставить сухонькое однокурснику, у которого голова из правильного места растет - жаба душит.

Последний раз редактировалось digitalis; 16.02.2018 в 12:03.
digitalis вне форума   Ответить с цитированием
Старый 17.02.2018, 11:37   #4
digitalis
Участник клуба
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 809
Репутация: 346
По умолчанию

А ему это и на фиг не нужно было...
digitalis вне форума   Ответить с цитированием
Старый 17.02.2018, 12:22   #5
eoln
Профессионал
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,690
Репутация: 2215

icq: 421277094
По умолчанию

Если тупо текст, то можно
Код:

StringList.LoadFromFile 
StringList.Sort
StringList.SaveToFile

В шарпе аналогично

А если не текст, то почти также )

Последний раз редактировалось eoln; 17.02.2018 в 12:24.
eoln вне форума   Ответить с цитированием
Старый 17.02.2018, 21:39   #6
digitalis
Участник клуба
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 809
Репутация: 346
По умолчанию

Ну тут вроде как не однострочный текст, а каждая запись - : string - float или string - string. Впрочем, можно было и в одной строке с разделителями. Но т.к. это студент (да?), то ему 3-строчный вариант не годится, нужно шоб "много и подробно", I think.
digitalis вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отсортировать файл по алфавиту Dimafeel Общие вопросы C/C++ 0 16.12.2015 01:42
Отсортировать числа по алфавиту Scorpil Общие вопросы C/C++ 3 18.10.2008 01:32
Отсортировать по алфавиту Rio309 Помощь студентам 2 09.03.2008 23:52
Отсортировать по алфавиту asale Microsoft Office Excel 5 19.11.2007 23:01


02:07.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru