Автор: setare 30.01.2005 22:59
Помогите пожалуйста!!! Задача очень простая, но я в ней запуталась. Есть файлб в нем в каждой строчке написана дата (дд/мм/гг). Строчек не больше 20. Нужно вывести даты на экран и сортировать их в порядке возрастания.
Ниже будет примерный код задачи, который я написала, но который не сортирует. Скажите, пожалуйста что где нужно добавить! Спасибо!
Код
program exam_my;
type
str20=string[20];
mas=array[1..20]of str20;
var
f:text;
i:byte;
flname:string[10];
x:mas;
y:string[20];
procedure vivod(var f:text;x:mas);
var
i:integer;
begin
for i:=1 to 20 do
writeln(x[i]);
end;
function minimum(const x:mas):integer;
var
i,min:integer;
begin
for i:=1 to 20 do
for min:=1 to 20 do
if x[i]<x[min] then
minimum:=i
else minimum:=min;
end;
procedure change(const x:mas);
var
i,min,z:integer;
begin
for i:=1 to 20 do
for min:=1 to 20 do
if x[i]<x[min] then
begin
z:=x[i];
x[i]:=x[min];
x[min]:=z;
end;
end;
procedure sort(var x:mas);
var
i:integer;
begin
for i:=1 to 20 do
minimum(x);
change(x);
end;
begin
writeln('ўўҐ¤ЁвҐ Ё¬п д ©« ');
readln(flname);
assign(f,flname);
{$I-}
reset(f);
{$I+}
if Ioresult=0 then
begin
for i:=1 to 20 do
readln(f,y);
sort(x);
vivod(f,x);
end
else
writeln('¤ л© д ©« Ґ бгйҐбвўгҐв');
readln;
end.
Автор: volvo 30.01.2005 23:33
setare
Попробуй вот так:
Код
program exam_my;
type
str20=string[20];
mas=array[1..20]of str20;
var
f:text;
i:byte;
flname:string[10];
x:mas;
procedure vivod(x: mas);
var
i:integer;
begin
for i:=1 to 20 do
writeln(x[i]);
end;
procedure sort(var x: mas);
function checkdata(s: string): string;
begin
checkdata := copy(s, 7, 4) + copy(s, 4, 2) + copy(s, 1, 2)
end;
var
i, j: integer;
T: str20;
begin
For i := 1 To 20 Do
For j := 20 DownTo i+1 Do
If checkdata(x[j-1]) > checkdata(x[j]) Then
Begin
T := x[j-1]; x[j-1] := x[j]; x[j] := T
End
end;
begin
writeln('ўўҐ¤ЁвҐ Ё¬п д ©« ');
readln(flname);
assign(f,flname);
{$I-}
reset(f);
{$I+}
if Ioresult=0 then
begin
i := 1;
while not eof(f) do
begin
readln(f,x[i]);
i := i + 1;
end;
sort(x);
vivod(x);
close(f)
end
else
writeln('¤ л© д ©« Ґ бгйҐбвўгҐв');
readln;
end.
По-моему, должно работать...
(Присоединенный файл - с исходными данными - для теста)
Прикрепленные файлы
TDT.TXT ( 240 байт )
Кол-во скачиваний: 300
Автор: setare 30.01.2005 23:38
Спасибо большое, сейчас попробую!
Автор: setare 30.01.2005 23:41
Большое вам спасибо!!!!!! Я разобралась!!!!!!!!!!!!!Спасибооо!
Автор: setare 30.01.2005 23:55
Извините! Но можно вам задать ещё один вопрос. А почему ма складываем копируемые символы? Я никак не могу понять. И извините, если вам кажутся мои вопросы глуппыми, просто мне не у кого спрашивать и в учебниках это особо не объясняется, а также я паскалем занимаюсь только 3 месяца, до этого не слышала даже про этот язык прграммирования, поэтому приходится беспокоить вас. Заранее благодарю.
Автор: APAL 31.01.2005 0:01
При складывании символов получается строка.
[OffTop]
setare, Ты он ли она?
Судя по сообщениям - "она"...
А судя по инфе в профиле - "он"...
[/OffTop]
Автор: setare 31.01.2005 0:06
Ещё раз, извините!!! А как отсортировать массив в обратном порядке. Я пользовалась поиском и faq , но к сожалению не нашла. Там везде сортировка в прямом порядке, а как в обратном.
Автор: volvo 31.01.2005 0:57
setare
В условии:
Код
If checkdata(x[j-1]) > checkdata(x[j]) Then
меняем знак с ">" на "<"
И все... ;)
Автор: Altair 31.01.2005 20:22
offtop
setare, я отредактировал ваш профиль - указал что вы "она"
end.