• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Delphi, тип, запись

Anton5475

Новые
Регистрация
12 Мар 2014
Сообщения
13
Реакции
0
Баллы
0
Delphi, тип, запись

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

сам не справляюсь, с формами у меня плохо( нужна помощь, буду очень благодарен!!
 
с типом запись и массивом все понятно. куда в программе ввести? куда вывести сортировку???
 
ну как я понял уже готовое приложение должно работать примерно так:

пользователю предлагается ввести данные о 10 машинах (марка машины, год выпуска, цвет, дата продажи, цена.) и программа должна отсортировать например bmw с bmw, лада с ладой. и вывести в таком виде, как я понимаю это делается с помощью Memo, хотя я никогда не работал с типом записи
 
Только не 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);
//Добавляем в сортируемый список пару:
//строка: строка из ячейки целевого столбца;
//объект: контейнер, содержащий копию строки таблицы.
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.Assign(SlRow);
//Уничтожаем контейнер.
SlRow.Free;
//Следующий индекс списка.
Inc(j);
end;
//Уничтожаем сортируемый список.
SlSort.Free;
end;
 
ага. как то так. а щас еще окажется, что тема в школе (универе) - работа с компонентами BDE и надо было писать данные в таблицу Table и сортировать уже в ней при помощи Query и выводить в DBGrid =)


[mod]Чем зазря клавиши истирать, лучше бы предложили ваш вариант решения. Ваш модератор.[/mod]
 
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. mBrand);
Write('Year: '); Readln(Car. mYear);
Write('Color: '); Readln(Car. mColor);
Write('Date: '); Readln(Car. mDate);
Write('Price: '); Readln(Car. mPrice);
end;
BubbleSort(Car);
Writeln(' Brand Year Color Date Price');
for i:=1 to CSize do
Writeln(Car. mBrand:2,Car. mYear: (14-Length(Car. mBrand)),
Car. mColor:10,Car. mDate:14,Car. mPrice:10);
Readln;
end.
 
Последнее редактирование:
спасибо всем огромное, сейчас буду разбираться, еще отпищусь)
 
спасибо всем огромное, сейчас буду разбираться, еще отпищусь)

Можешь посмотреть БД подобные сделанные по школе и ученикам, коих на форуме куча.
Если будут вопросы, могу помочь с БД.
 
Назад
Сверху