Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2011, 00:45   #1
Olya1
 
Регистрация: 04.07.2011
Сообщений: 6
По умолчанию Разделение программы на отдельные модули (Паскаль)

Доброй ночи, программисты
Очень нужна ваша консультация: я оформляю задачу (даны 2 файла с упорядоченными числами и слить их в 3ий файл). Задачу необходимо разбить на части. Вот я попыталась разбить её, но, наверное, не правильно это сделала Проверьте пожалуйста.

ОСНОВНАЯ ПРОГРАММА(выполняется слияние)

Код:
Program leto;
Uses crt, opis, sozd;
Begin
Clrscr;
Soz;
Reset(F1);
i := 0;
while not Eof(F1) do begin
i := i + 1;
Read(F1, Arr[i]);
end;
Reset(F2);
while not Eof(F2) do begin
Readln(F2, Num);
j := 1;
while (j <= i) and (Arr[j] < Num) do begin
j := j + 1;
end;


asm
 mov  bx,j
 cmp  bx,i
 ja   @Ex
 mov  cx,i
 mov  bx,cx
 shl  bx,1
@loop:
 cmp  cx,j
 jb   @Ex
 mov  ax,word ptr Arr[bx-2]
 mov  word ptr Arr[bx],ax
 sub  bx,2
 dec  cx
 jmp  @loop
@Ex:
 mov  ax,Num
 mov  bx,j
 shl  bx,1
 mov  word ptr Arr[bx-2],ax
end;


i := i + 1;
end;
Rewrite(F3);
for j := 1 to i do begin
if j > 1 then Writeln(F3);
Write(F3, Arr[j]);
end;
Flush(F3);
reset(f3);
Writeln('rezultat raboti v F3:');
while not eof(f3) do begin
read (f3, i);
write(i:3);
end;
Close(F1);
Close(F2);
Close(F3);
writeln;
Writeln('Rezultati sohraneni:');
Writeln(Fn1, ', ', Fn2, ', ', Fn3);
Readln;
end.
МОДУЛЬ ОПИСАНИЯ
Код:
Unit opis;
Interface
Const
Fn1 = 'file1.txt';
Fn2 = 'file2.txt';
Fn3 = 'file3.txt';
N = 100;
var
F1, F2, F3 : Text;
i, j, k, Num, g : Integer;
Arr : array[1..N] of Integer;
Implementation
End.
Модуль создания 2ух файлов с упорядоченными числами

Код:
Unit sozd;
Interface 
Uses crt, opis;
Procedure soz;
Implementation
Procedure soz;
Begin
Assign(F1, Fn1);
Assign(F2, Fn2);
Assign(F3, Fn3);
Rewrite(F1);
i := 0;
while i <= 10 do begin
if i > 0 then Writeln(F1);
Write(F1, i);
i := i + 2;
end;
Flush(F1);
Rewrite(F2);
i := 1;
while i <= 10 do begin
if i > 1 then Writeln(F2);
Write(F2, i);
i := i + 2;
end;
Flush(F2);
End;
End.
Olya1 вне форума Ответить с цитированием
Старый 08.07.2011, 11:25   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

ИМХО модуль opis здесь не нужен. Вы описали в нем переменные. И что дальше? В этом модуле ничего не реализуется. Я бы сделал так. В первый модуль поместил создание 2х исходных файлов и сортировку массива на ассемблере. Во втором модуле реализовал слияние 2х исходных файлов в третий. А в основной программе просто вызвал необходимые процедуры.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбиение программы на модули Neolit1819 Общие вопросы C/C++ 4 11.04.2011 19:14
разделение программы на файлы и последующая компиляция little_greg Visual C++ 8 21.01.2011 21:46
разбиение программы на модули SUDALV Помощь студентам 1 22.06.2010 22:01
разделение программы world12_tk Помощь студентам 2 30.03.2009 20:05