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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2011, 15:33   #1
GaRRRiK
 
Регистрация: 16.04.2011
Сообщений: 6
По умолчанию [Delphi] Сортировка

В общем есть задание, надо разработать программу формирования ведомости об успеваемости студентов. Каждая запись этой ведомости должна содержать: номер группы, Ф.И.О. студента, оценки за последнюю сессию. Вывести списки студентов по группам. В каждой группе Ф.И.О. студентов должны быть расположены в порядке убывания среднего балла.

У меня все есть, но не пашет сортировка, надо отсортировать группы, а в самиз группах сортировка по первой букве фамилии

Код:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;
    Type
  TStudent = record
    FIO: string[40];			// Поле ф.и.о.
    otc: integer;		// Поле массива оценок
    gr : string[10]; 			// поле группы
    end;

 Var
  Fz  : file of  Tstudent;		// Файл типа запись
  Ft  : TextFile;			// Текстовой файл
  Stud : array[1..100] of Tstudent;	// Массив записей
  nzap : integer;			// Номер записи
  FileNameZ, FileNameT : string; 	// Имя файла




var
  Form1: TForm1;

implementation

{$R *.dfm}




procedure TForm1.Button2Click(Sender: TObject);
begin
begin
   OpenDialog1.Title :='Создать новый файл'; 	// Изменение заголовка окна диалога
 if OpenDialog1.Execute then  // Выполнение стандартного диалога выбора имени файла
   begin
    FileNameZ:= OpenDialog1.FileName; // Возвращение имени дискового файла 
    AssignFile(Fz, FileNameZ);  // Связывание файловой переменной Fz c именем файла
     Rewrite(Fz);                         // Создание нового файла
   end;
    Button1.Show;                      // Сделать видимой кнопку "Ввести запись"
end;
end;
/////////
procedure TForm1.Button3Click(Sender: TObject);
begin
 if OpenDialog1.Execute then  // Выполнение стандартного диалога выбора имени файла
   begin
    FileNameZ:= OpenDialog1.FileName; // Возвращение имени дискового файла 
    AssignFile(Fz, FileNameZ);    // Связывание файловой переменной Fz c именем файла
     Reset(Fz);                                // Открытие существующего файла
   end;
  while not eof(fz) do begin       
   nzap:=nzap+1;
     Read(fz,stud[nzap]);                // Чтение записи из файла
         with stud[nzap] do
     Memo1.Lines.Add(fio+'  '+IntToStr(otc)+'  '+gr);
                                 end;
     Button1.Show;                        // Сделать видимой кнопку "Ввести запись"
end;
procedure TForm1.Button4Click(Sender: TObject);
////////////////Cортиовка///////
 var i,j,a,b :  word;
       st : TStudent;
begin
 for i:=1 to nzap-1 do                   // Сортировка массива записей
 for j:=i+1 to nzap do

   if Stud[i].gr < Stud[j].gr then begin
          st:=Stud[i];
         Stud[i]:=Stud[j];
         Stud[j]:=st;
   end;
   for i:=1 to nzap-1 do                   // Сортировка массива записей
   for j:=i+1 to nzap do
     if Stud[i].fio > Stud[j].fio then begin
          st:=Stud[i];
         Stud[i]:=Stud[j];
         Stud[j]:=st;
          end;
      Memo1.Clear;
  for i:=1 to nzap do                    // Вывод в окно Memo1 отсортированных записей
          with stud[i] do
     Memo1.Lines.Add(IntToStr(i) + ' ' + gr + '  '+fio);
end;
//////////

procedure TForm1.Button5Click(Sender: TObject);
begin
close;
end;

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

/////////////
procedure TForm1.FormCreate(Sender: TObject);
begin
   Edit1.Text:='';
   Edit2.Text:='';
   Edit3.Text:='';
   Memo1.Clear;
    nzap:=0;
end;
////////////
procedure TForm1.Button1Click(Sender: TObject);
begin
    nzap:=nzap+1;
  with stud[nzap] do begin
           FIO:=Edit1.Text;
           otc:=StrToInt(Edit3.Text);
           gr:= Edit2.Text;
  Memo1.Lines.Add (fio+'  '+IntToStr(otc)+'  '+ gr);
                                end;
   Write(fz,Stud[nzap]);	// Запись в файл
   Edit1.Text:='';
   Edit2.Text:='';
   Edit3.Text:='';
   ShowMessage('Запись произведена успешно');
end;
///////////////////
end.
Буду оч благодарен
GaRRRiK вне форума Ответить с цитированием
Старый 16.05.2011, 15:47   #2
GaRRRiK
 
Регистрация: 16.04.2011
Сообщений: 6
По умолчанию

вот скрин, если поможет
И вместо цифры в начале которая, нужно вывести баллы (их сортировать не надо)
Изображения
Тип файла: png 123.PNG (10.9 Кб, 66 просмотров)
GaRRRiK вне форума Ответить с цитированием
Старый 17.05.2011, 15:27   #3
GaRRRiK
 
Регистрация: 16.04.2011
Сообщений: 6
По умолчанию

Ребят отзовитесь
GaRRRiK вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi Сортировка ДваДваВо7 Помощь студентам 2 08.12.2010 19:19
Сортировка В delphi Bimmer71 Помощь студентам 6 10.12.2009 22:21
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32
Сортировка Delphi Apollion Помощь студентам 0 30.04.2009 17:55
Сортировка в Delphi Mango Помощь студентам 5 07.01.2009 05:47