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

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

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

 
 Ответить  Открыть новую тему 
> Pascal_user
Terminator
сообщение 26.11.2004 15:30
Сообщение #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 
 К началу страницы 
+ Ответить 
Altair
сообщение 26.11.2004 15:36
Сообщение #2


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

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

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


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

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


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


-
****

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

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


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


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


Новичок
*

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

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


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


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


Новичок
*

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

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


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

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


--------------------
I'll be back
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 26.11.2004 15:53
Сообщение #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 - 26.11.2004 15:55
 К началу страницы 
+ Ответить 
Terminator
сообщение 26.11.2004 16:06
Сообщение #7


Новичок
*

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

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


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


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


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

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

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


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

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


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


Новичок
*

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

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


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


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


-
****

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

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


Код

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

Вроде так.


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


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

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

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


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


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

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

 



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