IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Сортировка массива через модули
Dark Vova
сообщение 13.03.2007 22:59
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской
Реальное имя: Владимир

Репутация: -  0  +


Не получается подключить модули... Может кто поможет?
Условие задачи: Отсортировать одномерный массив линейным и пузырьковым способами. Каждый способ в отдельном модуле.

Вот что у меня получилось:
sort_1
Unit sort_1;
interface
Type
mas=array [1..10] of real;
var
m,k:integer;
b,d:mas;
procedure vvod_k (n:integer; var a:mas);
procedure obr_l (n:integer; a:mas; var c:mas);
procedure viv (n:integer; c:mas);

implementation
Uses Crt;

procedure vvod_k (n:integer; var a:mas);
var
i:integer;
begin
ClrScr;
For i:=1 to n do
ReadLn(a[i]);
end;

procedure obr_l (n:integer; a:mas; var c:mas);
var
i,j:integer;
x:real;
begin
ClrScr;
For i:=1 to n-1 do
For j:=i+1 to n do begin
If A[i]<A[j] then
begin
x:=a[i];
a[i]:=a[j];
a[j]:=x;
end;
c[i]:=a[i];
end;
end;

procedure viv (n:integer; c:mas);
var
i:integer;
begin
ClrScr;
For i:=1 to n do
WriteLn(c[i]);
end;

end.


sort_2
Unit sort_2;
interface
Type
mas=array [1..10] of real;
var
m,k:integer;
b,d:mas;
procedure vvod_r (n:integer; var a:mas);
procedure obr_p (n:integer; a:mas; var c:mas);
implementation
Uses Crt;

procedure vvod_r (n:integer; var a:mas);
var
i:integer;
begin
ClrScr;
Randomize;
For i:=1 to n do
begin
A[i]:=Random(100);
A[i]:=A[i]-Random(50);
A[i]:=A[i]/(Random(5)+1);
WriteLn(A[i]);
end;
end;

procedure obr_p (n:integer; a:mas; var c:mas);
var
i,j:integer;
x:real;
begin
For i:=2 to n do
For j:=n to i do begin
If A[j]>A[j-1] then
begin
x:=a[j-1];
a[j-1]:=a[j];
a[j]:=x;
end;
c[i]:=a[i];
end;
end;

end.


Сама программа:
Uses Crt, sort_1, sort_2;
begin
ClrScr;
Write('razmernost =');
ReadLn(m);
ClrScr;
Repeat
WriteLn('1 - vvod s klavi');
WriteLn('2 - vvod randomom');
WriteLn('3 - sort line');
WriteLn('4 - sort puz');
WriteLn('5 - vivod');
WriteLn('6 - vihod');
Write('Vash vibor... ');
ReadLn(k);
Case k of
1:vvod_k(m,b);
2:vvod_r(m,b);
3:obr_l(m,B,D);
4:orb_p(m,b,d);
5:viv(m,D);
6:halt;
end;
Until k>6;
ReadKey;
end.


Мне выдает ошибку на строчке
1:vvod_k(m,b);

Курсор на массиве b. Type mismatch.
Не понммаю в чем дело... Надеюсь на помощь.

Сообщение отредактировано: Dark Vova - 13.03.2007 23:00
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 13.03.2007 23:02
Сообщение #2


Гость






Тип
Цитата
mas=array [1..10] of real;
описан в двух модулях - формально эти 2 типа считаются разными и НЕсовместимыми... Вынеси это описание в третий модуль, и подключи его как к sort_1, так и к sort_2, тогда несовместимости типов не будет...
 К началу страницы 
+ Ответить 
Dark Vova
сообщение 13.03.2007 23:18
Сообщение #3





Группа: Пользователи
Сообщений: 8
Пол: Мужской
Реальное имя: Владимир

Репутация: -  0  +


Цитата
Вынеси это описание в третий модуль, и подключи его как к sort_1, так и к sort_2, тогда несовместимости типов не будет..

Сделал как ты сказал, всё равно то же самое...
Я правильно понял, что надо создать модуль modnew
Unit modnew;
interface
Type
mas=Array [1..10] of real;
implementation
end.

и просто подключить его в
implementation
Uses Crt, modnew;

?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 13.03.2007 23:20
Сообщение #4


Гость






Почему в Implementation? ты же пользуешься уже в Interface описанием этого типа..

А описание
mas=Array [1..10] of real;
из обоих модулей sort_1, sort_2 убрал? Или оставил? Надо убрать...

Добавлено через 4 мин.
То есть, модули будут выглядеть так:
Unit sort_1;
interface
uses newmod;
var
m,k:integer;
b,d:mas;

procedure vvod_k (n:integer; var a:mas);
procedure obr_l (n:integer; a:mas; var c:mas);
procedure viv (n:integer; c:mas);

Implementation
...
sort_2 по аналогии...
 К началу страницы 
+ Ответить 
Dark Vova
сообщение 13.03.2007 23:45
Сообщение #5





Группа: Пользователи
Сообщений: 8
Пол: Мужской
Реальное имя: Владимир

Репутация: -  0  +


Спасибо за помощь!! Разобрался wink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 18:12
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"