![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
serega204 |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 30 Пол: Мужской Реальное имя: serega Репутация: ![]() ![]() ![]() |
Добрый вечер вам уважаемые коллеги....у меня не получается сортировка, исходный масив записей выводится, а обратный выводится такой же но не отсортированный....помогите пожалуйста мне, очень надо
... Program LR_5; Uses Crt; Type St = String[15]; Struct = Record NF : String[15]; AI : String[17]; AD : String[32]; Tel : Longint; End; Fl = File Of Struct; Var i : integer; Z : Struct; Fi, Fr : Text; F : Fl; {Процедура вывода данных одной строки} Procedure P; Begin With Z do Writeln (Fr, NF, AI, AD, Tel); End; {Процедура сортировки методом последовательного слияния} Procedure Posl_Sl; Type TA = Array[1..10] Of Struct; PTA = ^TA; Var A, B : PTA; Dl, Dl_1, Dl_2, i1, i2, N1, N2, k, N : Integer; p1, p2 : Boolean; Label M1, M2, M3; {Пересылка очередного элемента в выходной массив} Procedure PS(Var i, NP : integer; Var p : Boolean); Begin B^[k] := A^[i]; i := i+1; If i > NP then p := False; End; BEGIN Reset(F); N := FileSize(F); GetMem(A, N*Sizeof(Struct)); Writeln(Fr, 'Массив до сортировки'); For i := 1 to N do Begin Read(F, Z); P; A^[I] := Z; End; For i := N DownTo 2 do Begin Dl := 1; M1 : Dl_1 := Dl_1-1; i1 := 1; M2 : N1 := i1+Dl_1; i2 := N1+1; N2 := i2+Dl_1; p1 := True; p2 := True; End; If N2 <= N Then GoTo M3; N2 := N; If i2 <= N then GoTo M3; p2 := False; If N1 > N then N1 := N; M3 : For k := i1 to N2 Do If P1 and p2 then If A^[i].NF < A^[i2].NF then PS(i1, N1, p1) else PS(i2, N2, p2) else If p1 then PS(i1, N1, p1) else PS(i2, N2, p2); If N2 < N then Begin i1 := N2+1; GoTo M2; End; A^ := B^; If Dl < (N+1) div 2 then Begin Dl := Dl*2; GoTo M1; End; Writeln(Fr, #10#13, 'Массив после сортировки'); Seek(F, 0); For i := 1 to N do Begin Z := A^[i]; Write(F, Z); P; End; Close(F); FreeMem(A, N*SizeOf(Struct)); END; {----- ОСНОВНАЯ ПРОГРАММА -----} Begin CLRSCR; Assign (F, 'lr8.typ'); Assign (Fr, ''); Rewrite (Fr); Writeln(' Туристические фирмы г.Москвы'); Writeln('Название Веб-сайт Адрес Телефон'); Writeln; Posl_Sl; Readln; Close (Fr); End. приведу даже вам текстовый файл Pegas_Touristic www.pegast.ru Ленинградский_Пр.д.53 9678142 LGM-Tour www.lgm-tour.ru Большая_Татарская_Ул.д.15 7451433 Vremia_Tour www.vremiatour.ru Столешников_Пер.д.11 7837570 TEZ-Tour www.teztour.ru Донская_Ул.д.13 1051050 Super_Nova www.s-nova.ru Гагаринский_Пер.д.19/3 9959822 Amarco_Tours www.amarco.ru 2-я_Тверская-Ямская_Ул.д.40/3 7880688 Miriada www.miriada.ru Трофимова_Ул.д.2/1 5070244 NTA_Travel www.ntatravel.ru Миусская_Пл.д.6/3 2506903 BSI_Group www.bsigroup.ru 2-ой_Щемиловский_Пер.д.4 7855535 Capital_Tour www.capital-tour Мира_Пр.д.22 9376444 Добавлено через 4 мин. Самое главное тему забыл написать...Дан массив типа запись. Запись содержит сведения о туристических фирмах и состоит из четырёх полей: название, адрес в интернете, физический адрес и телефон. Упорядочить элементы массива, используя сортировку методом последовательного слияния |
![]() ![]() |
![]() |
Текстовая версия | 20.06.2025 17:55 |