Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 12.03.2014, 11:53   #1 (permalink)
Anton5475
Member
 
Регистрация: 12.03.2014
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Delphi, тип, запись

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

сам не справляюсь, с формами у меня плохо( нужна помощь, буду очень благодарен!!
Anton5475 вне форума   Ответить с цитированием

Старый 12.03.2014, 11:53
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Рекомендую почитать содержимое этих топиков

Запись BD-R
DELPHI
Delphi

Старый 12.03.2014, 17:01   #2 (permalink)
poiu
Member
 
Регистрация: 05.03.2014
Сообщений: 200
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 834
По умолчанию

с типом запись и массивом все понятно. куда в программе ввести? куда вывести сортировку???
poiu вне форума   Ответить с цитированием
Старый 12.03.2014, 18:28   #3 (permalink)
Anton5475
Member
 
Регистрация: 12.03.2014
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

ну как я понял уже готовое приложение должно работать примерно так:

пользователю предлагается ввести данные о 10 машинах (марка машины, год выпуска, цвет, дата продажи, цена.) и программа должна отсортировать например bmw с bmw, лада с ладой. и вывести в таком виде, как я понимаю это делается с помощью Memo, хотя я никогда не работал с типом записи
Anton5475 вне форума   Ответить с цитированием
Старый 13.03.2014, 04:34   #4 (permalink)
Debianer
Member
 
Регистрация: 07.08.2012
Адрес: Находка, Приморский край
Сообщений: 336
Сказал(а) спасибо: 14
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1671
По умолчанию

Только не Memo - этот компонент представляет из себя, по сути, аналог Блокнота в Windows.
Вот так можно определить запись:
type
TAuto = Record
Firm : string;
Year : ShortInt;
Color : string;
SellDate : TDate;
Price : integer;
end;

А так объявляем массив:
var
AutoAr: array[0..9] of TAuto;

После ввода всех элементов массива сортировку можно сделать несколькими способами. Вот один из вариантов: на форму кидаем TStringGrid, пишем в него данные из массива и потом уже сортируем. Вот процедура сортировки StringGrid по указанному столбцу:
procedure SgSort(aSg : TStringGrid; const aCol : Integer);
var
SlSort, SlRow : TStringList;
i, j : Integer;
begin
//Сортируемый список.
SlSort := TStringList.Create;
//Добавляем в сортируемый список пары: "строка - объект".
//В качестве строки будем записывать значения ячеек того
//столбца, по которому надо провести сортировку. Будем брать те ячейки, которые
//не принадлежат фиксированным строкам - чтобы не подвергнуть сортировке
//шапку таблицы, если она есть.
//А в качестве объекта будем присоединять копии соответствующих строк таблицы.
for i := aSg.FixedRows to aSg.RowCount - 1 do begin
//Создаём контейнер для копии строки таблицы.
SlRow := TStringList.Create;
//Копируем строку таблицы в контейнер.
SlRow.Assign(aSg.Rows[i]);
//Добавляем в сортируемый список пару:
//строка: строка из ячейки целевого столбца;
//объект: контейнер, содержащий копию строки таблицы.
SlSort.AddObject(aSg.Cells[aCol, i], SlRow);
end;
//Сортируем столбец.
SlSort.Sort;
//Возвращаем в таблицу строки, отсортированные по столбцу с номером aCol.
j := 0;
for i := aSg.FixedRows to aSg.RowCount - 1 do begin
//Берём очередной контейнер.
SlRow := SlSort.Objects[j] as TStringList;
//Записываем содержимое контейнера в строку таблицы.
aSg.Rows[i].Assign(SlRow);
//Уничтожаем контейнер.
SlRow.Free;
//Следующий индекс списка.
Inc(j);
end;
//Уничтожаем сортируемый список.
SlSort.Free;
end;
Debianer вне форума   Ответить с цитированием
Старый 13.03.2014, 09:40   #5 (permalink)
poiu
Member
 
Регистрация: 05.03.2014
Сообщений: 200
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 834
По умолчанию

ага. как то так. а щас еще окажется, что тема в школе (универе) - работа с компонентами BDE и надо было писать данные в таблицу Table и сортировать уже в ней при помощи Query и выводить в DBGrid =)


Предупреждение:
Чем зазря клавиши истирать, лучше бы предложили ваш вариант решения. Ваш модератор.
poiu вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 13.03.2014, 20:27   #6 (permalink)
Евгений
Member
 
Аватар для Евгений
 
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
По умолчанию

Const CSize= 10;
type Tmass= record
mBrand: string;
mYear: integer;
mColor: string;
mDate: string;
mPrice: integer;
end;
TCar= array[1..CSize] of Tmass;
var Car: TCar;
procedure BubbleSort(var arg: TCar);
var i,j: integer;
t: Tmass;
begin
for i:=1 to CSize-1 do
for j:=1 to CSize-1 do
if arg[j]. mBrand > arg[j+1]. mBrand then begin
t:= arg[j];
arg[j]:= arg[j+1];
arg[j+1]:= t;
end;
end;
var i: integer;
begin
for i:=1 to CSize do begin
Write('Brand: '); Readln(Car[i]. mBrand);
Write('Year: '); Readln(Car[i]. mYear);
Write('Color: '); Readln(Car[i]. mColor);
Write('Date: '); Readln(Car[i]. mDate);
Write('Price: '); Readln(Car[i]. mPrice);
end;
BubbleSort(Car);
Writeln(' Brand Year Color Date Price');
for i:=1 to CSize do
Writeln(Car[i]. mBrand:2,Car[i]. mYear: (14-Length(Car[i]. mBrand)),
Car[i]. mColor:10,Car[i]. mDate:14,Car[i]. mPrice:10);
Readln;
end.

Последний раз редактировалось Евгений; 13.03.2014 в 20:32
Евгений вне форума   Ответить с цитированием
Старый 14.03.2014, 01:56   #7 (permalink)
Anton5475
Member
 
Регистрация: 12.03.2014
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

спасибо всем огромное, сейчас буду разбираться, еще отпищусь)
Anton5475 вне форума   Ответить с цитированием
Старый 14.03.2014, 02:47   #8 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

Цитата:
Сообщение от Anton5475 Посмотреть сообщение
спасибо всем огромное, сейчас буду разбираться, еще отпищусь)
Можешь посмотреть БД подобные сделанные по школе и ученикам, коих на форуме куча.
Если будут вопросы, могу помочь с БД.
Gruvi вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

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

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




Часовой пояс GMT +4, время: 17:38.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.