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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2009, 17:44   #1
ul_m
 
Регистрация: 09.01.2009
Сообщений: 5
По умолчанию Необходимо переделать процедуру ooo.sum_m в функцию определения наличия отрицательных элементов

Необходимо переделать процедуру ooo.sum_m в функцию определения наличия отрицательных элементов и в процедуру определения суммы столбцов. Как это сделать?

вот листинг:
Код:
Program pr7;
uses crt;
type matr=array [1..10,1..10] of integer;
ooo = object
m,n: byte;
a:matr;
procedure Vvod(size_n,size_m: byte);  //исправила
procedure vivod;
procedure sum_m;
end;

var x,y,z:ooo;

procedure ooo.vvod;
var i,j:byte;
begin
 n:=size_n;
 m:=size_m;
 for i:=1 to n do
  for J:=1 to m do
  a[i,j]:=random(20)-5;
end;

procedure ooo.vivod;
var i,j:byte;
begin
for i:=1 to n do
 begin writeln;
  for j:=1 to m do
  write(a[i,j]:6);
 end;
writeln;
end;

procedure ooo.sum_m;
var
  i, j: byte;
  Summ: integer;
  IsNegative: boolean;
begin

  for j := 1 to m do
  begin
    IsNegative := false;
    Summ := 0;
    i := 1;
    while (i <= n) and not IsNegative do
    begin
      if a[i,j] > 0 then
        Summ := Summ + a[i,j]
      else
        IsNegative := true;
      inc(i);
    end;
    if not IsNegative then write(Summ:6);
  end;
  writeln;
end;

begin
  clrscr;
  randomize;
  x.vvod(5,6);
  y.vvod(10,8);
  z.vvod(8,7);
  x.vivod;
  y.vivod;
  z.vivod;
  x.sum_m;
  y.sum_m;
  z.sum_m;
  readln;
end.
ul_m вне форума Ответить с цитированием
Старый 10.01.2009, 19:21   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Что-то похоже я уже ремонтировал эту программу. Если не понравилось, могли бы ко мне и обратиться через личные сообщения.
Вот еще раз переделал, не понравится, пишите в этой же теме, не создавайте новую, я узнаю.
Код:
Program pr7;
uses crt;
type matr=array [1..10,1..10] of integer;
ooo = object
a:matr;
procedure Vvod(n,m:byte);
procedure Vivod(n,m:byte);
function Negative(n,col:byte):boolean;
procedure sum_m(n,m:byte;var sum:integer);
end;
procedure ooo.vvod;
var i,j:byte;
begin
 for i:=1 to n do
  for J:=1 to m do
  a[i,j]:=random(20)-2;
end;

procedure ooo.vivod;
var i,j:byte;
begin
for i:=1 to n do
 begin
  for j:=1 to m do
  write(a[i,j]:4);
  writeln;
 end;
end;

function ooo.Negative; {функция ищет отрицательные элементы в столбцах}
var i,k:byte;
begin
k:=0;
for i:=1 to n do
if a[i,col]<0 then k:=k+1;
if k=0 then Negative:=true
else Negative:=false;
end;

procedure ooo.sum_m;{процедура подсчета суммы элементов в столбцах, где нет отрицательных}
var i,j:byte;
begin
sum:=0;
for i:=1 to n do
for j:=1 to m do
if Negative(n,j) then sum:=sum+a[i,j];{если нет отрицательных}
end;

var x,y,z:ooo;
    sm:integer;
begin
clrscr;
x.vvod(5,6);
y.vvod(10,8);
z.vvod(8,7);
writeln('Matrica X:');
x.vivod(5,6);
x.sum_m(5,6,sm);
writeln('Summa v stolbcah bez otricatelnyh elementov=',sm);
readln;
writeln('Matrica Y:');
y.vivod(10,8);
y.sum_m(10,8,sm);
writeln('Summa v stolbcah bez otricatelnyh elementov=',sm);
readln;
writeln('Matrica Z:');
z.vivod(8,7);
z.sum_m(8,7,sm);
writeln('Summa v stolbcah bez otricatelnyh elementov=',sm);
readln
end.
puporev вне форума Ответить с цитированием
Старый 10.01.2009, 19:44   #3
ul_m
 
Регистрация: 09.01.2009
Сообщений: 5
По умолчанию

хм, а можно с выведением суммы по каждому столбцу? и без параметров в скобочках в процедурах, кроме первой?
ul_m вне форума Ответить с цитированием
Старый 10.01.2009, 19:49   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
а можно с выведением суммы по каждому столбцу?
А где Вы об этом писали? В Вашем коде, который Вы выкладывали в первой теме считалась сумма по всем столбцам. Помните? Не помните, загляните в тему. А без параметров нельзя, потому что у Вас три матрицы разных размеров и тогда надо делать много лишней писанины, а именно писать ввод размеров для каждой матрицы, и чем интересно Вам мешают параметры?. Но если очень хочется усложнить программу, то можно.
puporev вне форума Ответить с цитированием
Старый 10.01.2009, 20:32   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот с суммой по каждому столбцу, но параметры без веских на то причин убирать не буду, жаль времени на идиотскую работу.
Код:
Program pr7;
uses crt;
type matr=array [1..10,1..10] of integer;
ooo = object
a:matr;
procedure Vvod(n,m:byte);
procedure Vivod(n,m:byte);
function Negative(n,col:byte):boolean;
procedure sum_m(n,m:byte;var col:byte;var sum:integer);
end;
procedure ooo.vvod;
var i,j:byte;
begin
 for i:=1 to n do
  for J:=1 to m do
  a[i,j]:=random(20)-2;
end;

procedure ooo.vivod;
var i,j:byte;
begin
for i:=1 to n do
 begin
  for j:=1 to m do
  write(a[i,j]:4);
  writeln;
 end;
end;

function ooo.Negative;
var i,k:byte;
begin
k:=0;
for i:=1 to n do
if a[i,col]<0 then k:=k+1;
if k=0 then Negative:=true
else Negative:=false;
end;

procedure ooo.sum_m;
var i,j,k:byte;
begin
for j:=1 to m do
if Negative(n,j) then
  begin
    k:=1;
    sum:=0;
    for i:=1 to n do
    sum:=sum+a[i,j];
    writeln('Summa v stolbce ',j,'=',sum);
  end;
if k=0 then writeln('Takih stolbcov net!');
end;
var x,y,z:ooo;
    sm:integer;
    stb:byte;
begin
clrscr;
randomize;
x.vvod(5,6);
y.vvod(10,8);
z.vvod(8,7);
writeln('Matrica X:');
x.vivod(5,6);
x.sum_m(5,6,stb,sm);
readln;
writeln('Matrica Y:');
y.vivod(10,8);
y.sum_m(10,8,stb,sm);
readln;
writeln('Matrica Z:');
z.vivod(8,7);
z.sum_m(8,7,stb,sm);
readln
end.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедуру и функцию помогите составить плиз Oleg36 Помощь студентам 2 26.12.2008 11:27
Вычислить и запомнить количество отрицательных элементов каждого столбца для матрицы A(10,10) , B (15,20) bitmania Помощь студентам 3 15.10.2008 01:06
Переделать процедуру AidarBik Общие вопросы Delphi 12 22.05.2008 14:59
Как создать процедуру и функцию? Absent Общие вопросы Delphi 1 18.11.2007 17:36
вычислить сумму отрицательных элементов в массиве only_win Паскаль, Turbo Pascal, PascalABC.NET 2 25.09.2007 15:22