Xwab
Форумыnavigate_nextДругие языки программирования

Pascal
Сообщения
Windtalkers

Кто может помочь решить? Дана прямоугольная матрица. Найти строку с наибольшей и наименьшей суммой элементов. Вывести на печать найденные строки и суммы их элементов.

22 Мар 2011, 8:13
IIyX

народ помогите - с 8 утра сижу над задачей)) вообще не понимаю как сделать - Дан массив записей, содержащих дату (число, месяц, год) и время (час, минута, секунда). Упорядочить этот массив в порядке «возрастания», т.е. от более ранних значений к более поздним.

вот листинг -
type
Data = record
Year: integer;
Month: 1..12;
Day: 1..31;
Hour: 0..11;
Minute: 0..59;
Second: 0..59;
end;

function F(value: Data): longint;
begin

with value do
F := (((((year - 2000) * 12 + month) * 31 + day) * 24 +
hour) * 60 + minute) * 60 + second;

end;

var
a: array [1..20] of data;
indexes: array[1 .. 20] of integer;
i, j, T: integer;

begin
randomize;
for i:=1 to 20 do begin
a[i].Year:=random(random(3))+2006;
a[i].Month:= random(random(11))+1;
a[i].Day:= random(30)+1;
a[i].Hour:= random(11)+1;
a[i].Minute:= random(58)+1;
a[i].Second:= random(58)+1;

indexes[i] := i;
end;


for i := 1 To 20 Do
for j := 20 DownTo i+1 Do
if F(a[indexes[j - 1]]) > F(a[indexes[j]]) then begin
T := indexes[j - 1]; indexes[j - 1] := indexes[j]; indexes[j] := T
end;

writeln('DO':20,'POSLE':45);
for i := 1 to 20 do begin
with a[i] do
write(Day:2, '/', Month:2, '/', Year:4, ' - ',
Hour:2, ':', Minute:2, ':', Second:2, ' ');
with a[indexes[i]] do
write(Day:2, '/', Month:2, '/', Year:4, ' - ',
Hour:2, ':', Minute:2, ':', Second:2);
writeln;
end;
readln;
end.

мне говорят что нужно сделать задачу проще - как проще я уже не понимаю... да и она у меня не сортирует даты в порядке возврастания(( голова кипит по полной))

29 Мар 2011, 10:29
M0rbid

IIyX, хм.. как вриант попробуй перевести все даты и время в некое подобие unix timestamp или какоето свое числовое представление. его уже и сортируй. результат выводи обратной функцией. так вроде проще, меньше парится. но не оптимальней

29 Мар 2011, 17:00
DarveL

IIyX, придется перебирать все записи и методом пузырька сортировать.
Вписывать в начало.

29 Мар 2011, 17:02
spamboo

что нужно для начала работы с паскалем?

29 Мар 2011, 17:03
M0rbid

DarveL, почему пузырька?
добавлено спустя 1 минуту:
spamboo, 8-10 класс среднеобразовательной не деревенской школы. на худой конец книга или онлайн-туториал

29 Мар 2011, 17:04
spamboo

M0rbid, туто что? Пс информатики у нас небыло,наш класс разрушил кабинет...

29 Мар 2011, 17:08
M0rbid

spamboo, tutorial от бурж. "Руководство"

29 Мар 2011, 17:10
Дмитрий

IIyX, я бы просто двигался от большего к меньшему. То есть сначала сортируем по году, затем по месяцу, числу, часу и.т.д. Сложность, конечно, приличная выходит, зато наверняка. Может и оптимальней можно.

29 Мар 2011, 17:10
IIyX

спасибо вам всем за советы...попробую))

29 Мар 2011, 18:10
Ответить на тему