Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для mnffy
2 / 2 / 0
Регистрация: 26.12.2015
Сообщений: 64

Пояснения к коду

10.04.2016, 17:43. Показов 1379. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, Уважаемые)) Не могли бы помочь с объяснением кода?

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
type
  mas = array of integer;
 
var
  n: integer;
  F: file of integer;
 
procedure genfile(F: file of integer; n: integer);
var
  i: integer;
begin
  assign(F, 'FileData.dat');
  rewrite(F);
  for i := 1 to n do
    write(F, random(100));
  close(F)
end;
 
procedure QuickSort(var arr: mas; Left, Right: Integer);{Left - левая граница массива}
var
  I, J, Y: Integer;{Right - правая граница массива}
begin
  I := Left;
  J := Right;
  Y := arr[(Left + Right) div 2];
  repeat
    while arr[I] < Y do Inc(I);
    while Y < arr[J] do Dec(J);
    if I <= J then
    begin
      swap(arr[i], arr[j]);
      Inc(I);
      Dec(J);
    end;
  until I >= J;
  if Left < J then QuickSort(arr, Left, J);
  if I < Right then QuickSort(arr, I, Right);
end;
 
procedure showfile(F: file of integer);
var
  x: integer;
begin
  reset(F);
  while not eof(F) do
  begin
    read(F, x);
    write(x:4);
  end;
  writeln;
  close(F)
end;
 
procedure mastofile(arr: mas; F: file of integer);
var
  i: integer;
begin
  rewrite(F);
  for i := 0 to length(arr) - 1 do
    write(F, arr[i]);
  close(F)
end;
 
procedure filetomas(F: file of integer);
var
  i: integer; arr: mas;
begin
  reset(F);
  setlength(arr, filesize(F));
  for i := 0 to high(arr) do
    read(F, arr[i]);
  QuickSort(arr, 0, length(arr) - 1);
  mastofile(arr, F);
end;
 
procedure slivfile(F1, F2: file of integer; F: file of integer);
var
  x, y: integer;
begin
  reset(F1);
  reset(F2);
  rewrite(F);
  while not eof(F1) and not eof(F2)  do
  begin
    read(F1, x);
    read(F2, y);
    if x < y
    then
    begin
      write(F, x);
      seek(F2, FilePos(F2) - 1)
    end
    else
    begin
      write(F, y);
      seek(F1, FilePos(F1) - 1)
    end;
  end;
  if not eof(F1) or not eof(F2) then
  begin
    while not eof(F2) do
    begin
      read(F2, x);
      write(F, x)
    end;
    while not eof(F1) do
    begin
      read(F1, x);
      write(F, x)
    end;
  end;
  close(F);
  close(F1);
  close(F2)
end;
 
procedure sortfile(F: file of integer; name: string);
var
  x, n: integer; F1, F2: file of integer; name1, name2: string;
begin
  reset(F);
  if filesize(F) <= 10 
    then
    filetomas(F)
  else
  begin
    name1 := name + '1.dat';
    assign(F1, name1);
    rewrite(F1);
    name2 := name + '2.dat';
    assign(F2, name2);
    rewrite(F2);
    n := filesize(F) div 2;
    while not eof(F) do
      if FilePos(F) <= n
      then 
      begin
        read(F, x);
        write(F1, x)
      end
      else
      begin
        read(F, x);
        write(F2, x)
      end;
    close(F);
    sortfile(F1, name + '1');
    sortfile(F2, name + '2');
    slivfile(F1, F2, F);
  end;
  DeleteFile(name1);
  DeleteFile(name2)
end;
 
begin
  writeln('Введите длину массива:');
  readln(n);
  genfile(F, n);
  writeln('До сортировки:');
  showfile(F);
  sortfile(F, 'FileData');
  writeln('После сортировки:');
  showfile(F)
end.
Огромное спасибо за понимание!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.04.2016, 17:43
Ответы с готовыми решениями:

Удаление отрицательных элементов из массива (пояснения к коду)
удаляет отрицательные элементы из массива: var a: array of integer; i, k, m: byte; n:integer; begin readln(n);...

Дан текстовый файл,содержащий некоторые пояснения,заключенные в скобки. Убрать эти пояснения вместе со скобками
Дан текстовый файл,содержащий некоторые пояснения,заключенные в скобки. Убрать эти пояснения вместе со скобками. Выровнять ...

Пояснения по коду
Добрый день! Уважаемые, начинаю знакомство с ПЛИС. Нашла в интернете код цифрового фильтра, но никак не врублю в него. Не могли бы вы...

3
 Аватар для Cyber_Monster_
148 / 129 / 155
Регистрация: 22.03.2016
Сообщений: 502
11.04.2016, 00:23
mnffy, что именно вам надо объяснить?
0
 Аватар для mnffy
2 / 2 / 0
Регистрация: 26.12.2015
Сообщений: 64
11.04.2016, 00:26  [ТС]
Весь код, нужно сдать эту задачу, скоро пойду на защиту, но ничего не понимаю. Поможете?)
0
 Аватар для Cyber_Monster_
148 / 129 / 155
Регистрация: 22.03.2016
Сообщений: 502
11.04.2016, 01:06
Лучший ответ Сообщение было отмечено mnffy как решение

Решение

Ну смотри:
1) Программа начинается в 155 строке, после чего с клавиатуры читается переменная n - длина массива(переменная описана в 5 строке, тип int может принимать значения от -2147483648 до 2147483647) и вызывается подпрограмма генерации файла(158 строка) которая принимает формальный параметр(переменную f - целочисленный файл) и формальный параметр n, сама-же подпрограмма описана в 8 строке.
2) Подпрограмма genfile(F: file of integer; n: integer)
Вначале работы подпрограммы, при помощи стандартной процедуры Assign, связывается файловая переменная f, с файлом "FileData.dat".
Далее процедурой rewrite, файл открывается на перезапись и в него записываются случайные значения, сгенерированные при помощи функции rendom, значения имеют диапазон от 0 до 99. Далее в конце работы подпрограммы, файл f закрывается и управление возвращается обратно в основную программу.
3)Далее вызывается подпрограмма showfile(F: file of integer)
Процедура предназначена для вывода содержимого файла f на экран.
Файл открывается на чтение и внутри цикла читаются значения из файла и выводятся на экран. После завершения цикла, файл закрывается, управление возвращается обратно в основную программу.
4) Вызывается подпрограмма sortfile(F: file of integer; name: string)
Файл F открывается на чтение.
Далее в блоке If проверяется условие на размер файла, "Если размер файла <= 10, то вызывается подпрограмма filetomas(F: file of integer)", Иначе Выполняются следующие команды:
Создаются файлы: FileData1.dat и FileData2.dat
После чего половина файла FileData.dat записывается в файл FileData1.dat, а вторая половина в файл FileData2.dat
Далее каждый из файлов сортируется при помощи подпрограммы sortfile, после чего выполняется слияние файлов при помощи подпрограммы slivfile в файл FileData.dat
5) Подпрограмма filetomas(F: file of integer)
Подпрограмма читает содержимое файла в переменную - массив(arr) и сортирует его при помощи подпрограммы QuickSort(var arr: mas; Left, Right: Integer) и записывает массив в файл при помощи подпрограммыmastofile(arr: mas; F: file of integer)
6) QuickSort(var arr: mas; Left, Right: Integer)
Сортировка выполняется рекурсивно по методу быстрой сортировки: https://ru.wikipedia.org/wiki/... 0%BA%D0%B0
7) Подпрограмма mastofile(arr: mas; F: file of integer)
Открывает файл f на перезапись и заполняет его значениями массива arr
8) Завершение программы
После завершения подпрограммы sortfile, значения файла еще раз выводятся на экран.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.04.2016, 01:06
Помогаю со студенческими работами здесь

Требуются пояснения по коду
Приветствую. Штурмую тут методичку, и некоторые моменты не ясны: class person { int age; ... public: … void...

Комментарии к коду (пояснения)
namespace Palindrom { class Program { static void Main(string args) { int number = 0; ...

Дать пояснения к коду
я не понимаю выделенные моменты помогите пож-та #include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; ...

Пояснения к коду калькулятора
Здравствуйте! На руках имеется код калькулятора. Пожалуйста, подскажите, какая строчка кода что делает? В принципе я код понимаю, но...

Необходимы пояснения по коду
Здравствуйте знатоки C++. Прошу не бранить меня сильно за мои вопросы. Только начал изучать C++. Изучаю очереди. Нашел тут хороший топик -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru