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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2010, 17:58   #1
nolx
Пользователь
 
Регистрация: 29.03.2010
Сообщений: 21
По умолчанию подпрограммы

1.вычисление количества положительных элементов в четных строках матрицы через функцию
2.вычисление сумм положительных и отрицательных элементов и количество отдельных элементов матриц через процедуру
nolx вне форума Ответить с цитированием
Старый 30.11.2010, 19:01   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

1.вычисление количества положительных элементов в четных строках матрицы через функцию
Код:
Function KolPologit(i,KolStolb:Byte):Byte
Var
   j,Kol:Byte;
Begin
   Kol:=0; 
   For j:=1 to KolStolb do
   If Matr[i,j] > 0 then Inc(Kol);
   KolPologit:=Kol
End;
Begin
  For i:=1 to 5 do
  Begin
     For j:=1 to 5 do
     If (i mod 2 = 0) then
     Writeln('Число положительных элементов в ',i,' строке = ',KolPologit(i,5))
  End;
  Readln
End.
Не проверял
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 30.11.2010, 19:45   #3
nolx
Пользователь
 
Регистрация: 29.03.2010
Сообщений: 21
По умолчанию

program podprog;
var
a:array[1..20,1..20]of integer;
i,j,n,m,p,r:integer;
procedure pr(const b:a;r,p:integer);
var
b:a
i,j: integer;
begin
p:=0;
r:=0;
for i:=1 to 10 do
for j:=1 to 10 do
begin if a[i,j]>0 then p:=p+a[i,j];
if a[i,j]<0 then r:=r+a[i,j];
end;
end;
function fu (const a:integer):integer;
var
p,i,j:integer;
begin
p:=0;
for i:=1 to 10 do
for j:=1 to 10 do
if i mod 2=0 then
if a[i,j]>0 then
p:=p+a[i,j];
fu:=p;
end;
begin
write('N M ? ');
readln(n,m);
randomize;
for i:=1 to n do
for j:=1 to m do
a[i,j]:=random(199)-99;
for i:=1 to n do
begin
for j:=1 to m
do write(a[i,j]:4);
writeln
end;
writeln('positiv: ',fu);
pr;
Writeln('sum positiv: ',p,' sum negativ: ',r,' number: ',m*n);
readln
end.
подкаректировать
nolx вне форума Ответить с цитированием
Старый 30.11.2010, 20:16   #4
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Подредактировал как мог. Вам осталось найти количество отдельных элементов матриц
Код:
Type
Mas=array[1..20,1..20]of integer;
Var
a:Mas;
i,j,SumPologit,SumOtric,N,M:integer;
procedure pr(Var b:Mas; Var p,r:integer; m,n:byte);
var
  i,j: integer;
begin
  p:=0;
  r:=0;
  For i:=1 to m do
  Begin
    for j:=1 to n do
    if b[i,j]>0 then p:=p+b[i,j]
    Else
    if b[i,j]<0 then r:=r+b[i,j];
  end;
end;
Function KolPologit(i,KolStolb:Byte):Byte;
Var
   j,Kol:Byte;
Begin
   Kol:=0;
   For j:=1 to KolStolb do
   If (A[i,j] > 0 )then Inc(Kol);
   KolPologit:=Kol
end;
begin
  write('N M ? ');
  readln(n,m);
  randomize;
  for i:=1 to n do
  for j:=1 to m do
  a[i,j]:=random(199)-99;
  for i:=1 to n do
  begin
    for j:=1 to m do 
   write(a[i,j]:4);
   writeln
  end;
  Pr(A,SumPologit,SumOtric,n,m);
  Writeln('sum positiv: ',SumPologit,' sum negativ: ',SumOtric);
  Writeln;
  For i:=1 to M do
  Begin
    If (i mod 2 = 0) then Writeln('Kol Pologit v ',i,' stroke = ',KolPoloGit(I,N))
  End;
  readln
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 30.11.2010, 20:30   #5
nolx
Пользователь
 
Регистрация: 29.03.2010
Сообщений: 21
По умолчанию

при вводе N,M ошибка что писать тут!?
nolx вне форума Ответить с цитированием
Старый 30.11.2010, 20:40   #6
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Цитата:
при вводе N,M ошибка что писать тут!?
Какая ошибка? и переделайте вот так
Код:
  For i:=1 to N do
  Begin
    If (i mod 2 = 0) then Writeln('Kol Pologit v ',i,' stroke = ',KolPoloGit(I,M))
  End;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 30.11.2010, 20:46   #7
nolx
Пользователь
 
Регистрация: 29.03.2010
Сообщений: 21
По умолчанию

вводим 2 числа
например 4 и 6
он пишет runtime error.215
nolx вне форума Ответить с цитированием
Старый 30.11.2010, 21:16   #8
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Не знаю чем вам помочь. У меня все работает. Проверьте еще раз правильность написания кода.
Вот так попробуйте переделать
Код:
procedure pr(Var b:Mas; Var p,r:integer; n,m:byte);
var
  i,j: integer;
begin
  p:=0;
  r:=0;
  For i:=1 to N do
  Begin
    for j:=1 to m do
    if b[i,j]>0 then p:=p+b[i,j]
    Else
    if b[i,j]<0 then r:=r+b[i,j];
  end;
end;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681

Последний раз редактировалось GetMax; 30.11.2010 в 21:21.
GetMax вне форума Ответить с цитированием
Старый 15.02.2011, 18:08   #9
Егор93
 
Регистрация: 02.12.2010
Сообщений: 5
По умолчанию

Доделайте с подпрограммами

Дан массив записей с фамилиями сотрудников, годами их рождения и годами поступления в учреждение. Вывести фамилии сотрудников моложе 30 лет и проработавших не менее 5 лет.

PHP код:
Program Firma;
Uses Crt;
Type
Sotrudnik
=record
      Fam 
string[15];
      
YearRog integer;
      
YearPos integer;
    
end;
Var
  
y,i,n:integer;
  
Massiv:array[1..100of Sotrudnik;
Begin
  ClrScr
;
  
write('Vvedite Year ->');
  
read(y);
  
writeln;
  
write('Vvedite kol-vo sotrudnikov -> ');
  
read(n);
  for 
i:=1 to n do
    
begin
      writeln
('Vvedite v stolbec Familiiy, Year Rogdenia , Year Postuplenia');
      
with massiv[i] do
          
readln(Fam,YearRog,YearPos);
    
end;
  
writeln('Familia  Year rogdenia  Year postuplenia');
  
writeln('---------------------------------');
  for 
i:=1 to n do
    if (
massiv[i].YearRog>(y-30)) and (massiv[i].YearPos<=(y-5))
      
then
        with massiv
[i] do
    
writeln(Fam:15,'   ',YearRog:4,'   ',YearPos:4);
  
ReadKey;
End
Егор93 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подпрограммы dusya9992 Паскаль, Turbo Pascal, PascalABC.NET 1 18.07.2010 15:31
Подпрограммы-процедуры, подпрограммы-функции в Pascal rishikesh Помощь студентам 19 18.05.2010 23:05
Подпрограммы Журенова Катя Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 05.05.2009 22:21
Подпрограммы Есения Помощь студентам 4 20.12.2008 02:47