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

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

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

 
 Ответить  Открыть новую тему 
> Pascal_user
сообщение
Сообщение #1


Новичок
*

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

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


Есть такая задачка:

Даны натур. число n, действительная квадратная матрица порядка n.
Построить последовательность b1...bn из нулей и единиц, в которой b[i]=1 тогда и только тогда,
когда в i-й строке матрицы есть хотя бы один отриц. элемент. Прогр. должна содержать не менее 3-х функций и процедур.

Вроде написал, но нужно, чтобы имела место передача массива как параметра процедуры
Код

program matrix;
uses crt;
const m=10;
     space='---------';
var    n:byte;
    y:real;{veschestvennye chisla}
    i,j:integer;{Tseloye}
    x:word;{Naturalnoye chislo}
    znak:byte;
    a: array [1..m,1..m] of real;
    b: array [1..m] of word;


{}
procedure header;
begin
clrscr;
write(space); textcolor(4); write(' copyright '); textcolor(7); writeln(space); writeln;
end;
{}
procedure zapros;
begin
Write('Введите размер матрицы :');
Read(n);
end;

procedure vvod;
var i, j: integer;

begin

{nachalo vneshnego tsikla}
    for j:=1 to n do begin

    {nachalo vnutrennego tsikla}
 for i:=1 to n do begin

 Write('Введите элемент ',i,'-й строки ',j,'-го столбца :');
 Readln(a[i,j]);

 end;
    {konets vnutrennego tsikla}
    writeln;


end;
{konets vneshnego tsikla}

end;
{}
procedure screen;
begin
clrscr;
textcolor(white);
end;
{}
function massiv: word;
begin

end;


procedure input;
begin

end;


procedure rand;
var q,r: real;
begin


{nachalo vneshnego tsikla}
    for j:=1 to n do begin

    {nachalo vnutrennego tsikla}
 for i:=1 to n do begin

 q:=Random(100);
 r:=Random(Random(round(n*n)));

 if r=0 then q:=0-q;

 a[i,j]:=q;
 writeln('b[',i,',',j,']=',a[i,j]);
 end;

    {konets vnutrennego tsikla}

    writeln;Readln;


end;
{konets vneshnego tsikla}

end;

{}
function sequence: word;
begin
writeln;
for i:=1 to n do
begin
    for j:=1 to n do
    begin
 if a[i,j]<0 then
 begin
 b[i]:=1;
 break;
 end;
    end;
end;
end;
{}

begin


header;
while (n>100) or (n<=0) do zapros;
massiv;
if n<5 then vvod else rand;
sequence;




for i:=1 to n do
begin
writeln('b[',i,']=',b[i]);
delay(10000);
end;

writeln;
write('Press Enter');
readln;

end.


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


Ищущий истину
******

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

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


Ужас какой...
ужас в том, что зачем было сразу использовать процедуры если все переменные глобальные у вас?

Просто после индефикатора процедцр, следует указать пеерменные передающиеся в процедуру...


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


-
****

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

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


а ещё нужен тип для массива, чтоб его можно было как параметр пихать в процедуру


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


Новичок
*

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

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


Прогр. должна содержать не менее 3-х функций и процедур.


--------------------
I'll be back
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


Короче, как исправить эту программу, чтобы имела место передача массива как параметра процедуры

Сообщение отредактировано: volvo -


--------------------
I'll be back
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Terminator
А может вместо
Код

for i:=1 to n do
begin
writeln('b[',i,']=',b[i]);
delay(10000);
end;


сделать так
Код

Procedure PrintArr(x: array of word; n: integer);
var i: integer;
begin
 for i:=1 to n do
 begin
   writeln('b[',i,']=',x[i]);
   delay(10000);
 end;
end;
...

{ вызов }
PrintArr(b, n);


И спокойнее, пожалуйста!!! angry.gif

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


Если честно нужно, чтобы "матрица передавалась в процедуру rand", что это значит - не спрашивайте.


--------------------
I'll be back
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Ищущий истину
******

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

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


Цитата
чтобы "матрица передавалась в процедуру rand", что это значит - не спрашивайте.

Это значит что матрица должна передаваться в процедуцу по ссылке а не по значению smile.gif
;)
То есть через слово VAR


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

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

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


Цитата
по ссылке
- это goto?


--------------------
I'll be back
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


-
****

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

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


Код

type
arrs = array[1..m,1..m] of real;
...
procedure rand(var b:arrs; n:byte);
...

Вроде так.


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


Ищущий истину
******

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

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


Терминатор,
Нет.... по ссылке передавать параметры это значит через слово VAR, например:
procedure ADD(VAR a:integer);
Здесь параметр a передан по ссылке.
а вот так по значению:
procedure ADD(a:integer)


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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