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

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

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

 
 Ответить  Открыть новую тему 
> Uint - cannot run..... ((
сообщение
Сообщение #1


Новичок
*

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

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


ТЕкст модуля, пишет, что не может выполнить, (но компилит, и файл создаёт!!!)
unit R10_UNIT;
interface
type masiv=array[1..50,1..50] of integer;
procedure maso(n:integer; m:masiv; var m1:masiv);
implementation
procedure maso;
var y,i:integer;
begin
for i:=1 to n do
for y:=1 to n do
if m[i,y]<0 then m[i,y]:=0;
for i:=1 to n do
for y:=1 to n do
m[i,y]:=m1[i,y];
end;
end.


А вот прога, где я этот модуль использую: (в месте обращения к процедуре пишет несоответствие типов)
uses R10_UNIT;
type masiv=array[1..100,1..100] of integer;
var nn:integer; mm1,mm:masiv; {array[1..100,1..100] of integer;}
ii,yy:integer; {nn:integer;} {mm:array[1..100,1..100] of integer; }
begin
writeln('введите размерность квадратной матрицы(одно число): ');
readln(nn);
{********************************************************}
writeln('вводите элементы матрицы: ');
{ввод элементов в память}
for ii:=1 to nn do
for yy:=1 to nn do
readln(mm[ii,yy]);
{конец - ввод элементов в память}

{вывод шапки с n столбцами}
write(#201);
for ii:=1 to nn do begin
write(#205,#205,#205,#205,#205);
if ii<>nn then write(#203);
end;
writeln(#187);
{конец - вывод шапки с n столбцами}

{вывод середины матрмцы}
for ii:=1 to nn do begin
for yy:=1 to nn do begin
write(#186,mm[ii,yy]:5);

end;
writeln(#186);
if ii<>nn then write(#204);
{if (ii<>nn) then begin}
if ii<>nn then
for yy:=1 to nn do begin
write(#205,#205,#205,#205,#205);
if yy=nn then writeln(#185) else write(#206)
end;
{end;}
{if ii=nn then writeln(#185) else writeln;}
end;
{конец - вывод середины матрмцы}

{вывод шапки(снизу) с n столбцами}
write(#200);
for ii:=1 to nn do begin
write(#205,#205,#205,#205,#205);
if ii<>nn then write(#202);
end;
writeln(#188);
{конец - вывод шапки(снизу) с n столбцами}
maso(nn,mm,mm1); {***************ЗДЕСЬ ВЫВОДИТ ОШИБКУ*******************}
readln;
end.
ПОДСКАЖИТЕ В ЧЁМ ОШИБКА И КАК ЕЁ ИСПРАВИТЬ?
З.Ы. В проге много лишнего, вырезаного (ненужное), но алгоритм цел.

М
Используй не цитатные теги, а паскалевские (в меню CODE). Лопарь

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
В ЧЁМ ОШИБКА И КАК ЕЁ ИСПРАВИТЬ?

У тебя описан masiv в модуле - это матрица 50*50, и masiv в программе - это матрица 100*100. Переменные имеют тип 100*100, хотя модуль ждет другого размера. Убери описание
type masiv=array[1..100,1..100] of integer;
из основной программы, и пользуйся тем, что есть в модуле...

Добавлено через 1 мин.
Ну, или
mm1,mm:r10_unit.masiv;
, если хочется поизвращаться...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Сначала пробовал, не получилось..... пришлось извращаться!!! Получилось!!!
На всякий случай выкладываю модуль и прграмму здесь:
МОДУЛЬ:
unit R10_UNIT;
interface
type masiv=array[1..50,1..50] of integer;
procedure maso(n:integer; m:masiv; var m1:masiv);
implementation
procedure maso;
var y,i:integer;
begin
for i:=1 to n do
for y:=1 to n do
if m[i,y]<0 then m[i,y]:=0;
for i:=1 to n do
for y:=1 to n do
m1[i,y]:=m[i,y];
end;
end.



ПРОГА:
{Программа выводит введенную квадратную матрицу в рамке}
uses R10_UNIT,crt;
type masiv=array[1..50,1..50] of integer;
procedure mtable(nn:integer; mm:r10_unit.masiv);
var ii,yy:integer;
begin
{вывод шапки с n столбцами}
write(#201);
for ii:=1 to nn do begin
write(#205,#205,#205,#205,#205);
if ii<>nn then write(#203);
end;
writeln(#187);
{конец - вывод шапки с n столбцами}
{вывод середины матрмцы}
for ii:=1 to nn do begin
for yy:=1 to nn do begin
write(#186,mm[ii,yy]:5);
end;
writeln(#186);
if ii<>nn then write(#204);
{if (ii<>nn) then begin}
if ii<>nn then
for yy:=1 to nn do begin
write(#205,#205,#205,#205,#205);
if yy=nn then writeln(#185) else write(#206)
end;
{end;}
{if ii=nn then writeln(#185) else writeln;}
end;
{конец - вывод середины матрмцы}
{вывод шапки(снизу) с n столбцами}
write(#200);
for ii:=1 to nn do begin
write(#205,#205,#205,#205,#205);
if ii<>nn then write(#202);
end;
writeln(#188);
{конец - вывод шапки(снизу) с n столбцами}
end; {mtable}
{********************************************************}
var nn:integer; mm1,mm:r10_unit.masiv;
ii,yy:integer;
begin
clrscr;
writeln('введите размерность квадратной матрицы(одно число): ');
readln(nn);
writeln('вводите элементы матрицы: ');
{ввод элементов в память}
for ii:=1 to nn do
for yy:=1 to nn do
readln(mm[ii,yy]);
{конец - ввод элементов в память}
writeln('Введенная матрица: ');
mtable(nn,mm);
maso(nn,mm,mm1);
writeln('Отформативанная матрица: ');
mtable(nn,mm1);
readln; end.



{навсякий случай напишу:
Откомпелированный файл *.TPU скопировал в папку units и в паскале в Options -> directories и указал в полях "unit directories" и "resource directories" указал путь к папке UNITS, например C:\BP\UNITS }

А вот так вышлядит сгенерированная таблица:Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 29.03.2024 6:04
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name