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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.04.2007, 17:08   #1
Оля
 
Регистрация: 08.04.2007
Сообщений: 4
По умолчанию Задача по StringGrid

ни кто не хочет мне помочь, а???? ну срочно надо!!!!!!!
ну так вот:
надо написать программу, работающую в режимах:
1) ввод списка участников легкоатлетических соревнований( фамилия и страна).
2)Ввод результатов, показанных каждым из спортсменов в соревновании.
3) вывод в таблице stringgrid списка участников в порядке занятых мест с указанием страны и результата.
4) сохранение результатов работы программы в файле с возможностью повторного вывода.


Пожалуйста!!!!!!!
Оля вне форума
Старый 09.04.2007, 01:01   #2
01001
Заблокирован
 
Регистрация: 08.04.2007
Сообщений: 4
Радость

//Программа вычислит общее количество медалей, завоеванное спортсменами каждой страны и количество набранных баллов. Затем список команд будет переупорядочен в соответствие с количеством набранных баллов.

//////////////////////////////////////////////////////////////////////////////////

Код:
unit olimp_;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls;
type
TForm1 = class(TForm)
Tabl: TStringGrid;
Button1: TButton;
Label1: TLabel;
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Label1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
 
procedure TForm1.FormActivate(Sender: TObject);
begin
tabl.Cells[0,0]:='Страна';
tabl.Cells[1,0]:='Золотых';
tabl.Cells[2,0]:='Серебряных';
tabl.Cells[3,0]:='Бронзовых';
tabl.Cells[4,0]:='Всего';
tabl.Cells[5,0]:='Баллов';
tabl.Cells[0,1]:='Австралия';
tabl.Cells[0,2]:='Белоруссия';
tabl.Cells[0,3]:='Великобритания';
tabl.Cells[0,4]:='Германия';
tabl.Cells[0,5]:='Италия';
tabl.Cells[0,6]:='Китай';
tabl.Cells[0,7]:='Корея';
tabl.Cells[0,8]:='Куба';
tabl.Cells[0,9]:='Нидерланды';
tabl.Cells[0,10]:='Россия';
tabl.Cells[0,11]:='США';
tabl.Cells[0,12]:='Франция';
tabl.Cells[0,13]:='Япония';
end;
procedure TForm1.Button1Click(Sender: TObject);
var
c,r:integer; // номер колонки и строки таблицы
s:integer; // всего медалей у команды
p:integer; // очков у команды
m:integer; // номер строки с максимальным количеством очков
buf:array[0..5] of string; // буфер для обмена строк
i:integer; // номер строки используется во время сортировки
begin
for r:=1 to tabl.rowcount do // обработать все строки
begin
s:=0;
// вычисляем общее кол-во медалей
for c:=1 to 3 do
if tabl.cells[c,r] <> ''
then s:=s+StrToInt(tabl.cells[c,r])
else tabl.cells[c,r]:='0';
// вычисляем количество очков
p:=7*StrToInt(tabl.cells[1,r])+
6*StrToInt(tabl.cells[2,r])+
5*StrToInt(tabl.cells[3,r]);
// вывод результата
tabl.cells[4,r]:=IntToStr(s); // всего медалей
tabl.cells[5,r]:=IntToStr(p); // очков
end;
// сортировка таблицы по убыванию в соответствие
// с количеством баллов (по содержимому 5-ого столбца)
// сортировка методом выбора
for r:=1 to tabl.rowcount-1 do
begin
m:=r; // максимальный элемент - в r-ой строке
for i:=r to tabl.rowcount-1 do
if StrToInt(tabl.cells[5,i])>StrToInt(tabl.cells[5,m])
then m:=i;
if r <> m then
begin // обменяем r-ую и m-ую строки таблицы
for c:=0 to 5 do
begin
buf[c]:=tabl.Cells[c,r];
tabl.Cells[c,r]:=tabl.Cells[c,m];
tabl.Cells[c,m]:=buf[c];
end;
end;
end;
end;
end.

Последний раз редактировалось RSLoader; 24.04.2007 в 14:29.
01001 вне форума
Старый 09.04.2007, 01:03   #3
RSLoader
_________
Пользователь
 
Аватар для RSLoader
 
Регистрация: 27.03.2007
Сообщений: 69
По умолчанию

Код:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Edit1: TEdit;        //Ввод числа участников
    Button1: TButton;    //Создание таблицы участников для заполнения
    Button2: TButton;    //Сортировка участников по их местам
    Button3: TButton;    //Запись в файл
    Button4: TButton;    //Чтение из файла
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type
  //Запись "участник"
  TSport=record
           Name:String[20];
           Country:String[20];
           Place:Integer;
         end;
var
  Form1: TForm1;
  Sport:array[1..100]of TSport; //Массив участников
  fSport:file of TSport;        //Файл с данными участников
  Count:Integer;                //Число участников
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
  StringGrid1.FixedRows:=0;
  StringGrid1.FixedCols:=0;
  StringGrid1.Options:=[goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,
                        goRangeSelect,goEditing,goTabs,goAlwaysShowEditor];
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  Count:=StrToInt(Edit1.Text);
  StringGrid1.RowCount:=Count;
  StringGrid1.ColCount:=3;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
  i,j:integer;
  s:TSport;
begin
  //Заполнение массива участников
  for i:=1 to Count do
  begin
    Sport[i].Name:=StringGrid1.Cells[0,i-1];
    Sport[i].Country:=StringGrid1.Cells[1,i-1];
    Sport[i].Place:=StrToInt(StringGrid1.Cells[2,i-1]);
  end;
  //Сортировка массива
  for j:=Count downto 1 do
  for i:=1 to j-1 do
  if Sport[i].Place<Sport[i+1].Place then
  begin
    s:=Sport[i];
    Sport[i]:=Sport[i+1];
    Sport[i+1]:=s;
  end;
  //Заполнение таблицы отсортированным массивом
  for i:=1 to Count do
  begin
    StringGrid1.Cells[0,i-1]:=Sport[i].Name;
    StringGrid1.Cells[1,i-1]:=Sport[i].Country;
    StringGrid1.Cells[2,i-1]:=IntToStr(Sport[i].Place);
  end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
  i:Integer;
begin
  AssignFile(fSport,'Sport.txt');
  Rewrite(fSport);
  for i:=1 to Count do Write(fSport,Sport[i]);
  CloseFile(fSport);
end;
procedure TForm1.Button4Click(Sender: TObject);
var
  i:Integer;
begin
  //Чтение из файла массива Sport
  AssignFile(fSport,'Sport.txt');
  Reset(fSport);
  Count:=0;
  while not EOF(fSport) do
  begin
    Inc(Count);
    Read(fSport,Sport[Count]);
  end;
  CloseFile(fSport);
  //Заполнение таблицы массивом
  for i:=1 to Count do
  begin
    StringGrid1.Cells[0,i-1]:=Sport[i].Name;
    StringGrid1.Cells[1,i-1]:=Sport[i].Country;
    StringGrid1.Cells[2,i-1]:=IntToStr(Sport[i].Place);
  end;
end;
end.
RSLoader вне форума
Старый 21.04.2007, 13:49   #4
Оля
 
Регистрация: 08.04.2007
Сообщений: 4
По умолчанию

спасибо всем огромное!!!!!! может что-нибудь получится!!!)))
Оля вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StringGrid Witaliy Общие вопросы Delphi 4 05.04.2012 11:57
StringGrid Devikss Общие вопросы Delphi 8 25.05.2008 16:14
StringGrid dj jo Компоненты Delphi 2 15.02.2007 07:47
Код 13 и stringGrid Alar Общие вопросы Delphi 1 08.02.2007 22:44