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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2009, 19:19   #1
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию Сделать процедурами

Вот собственно код работающий задачи, ее надо переделать в процедуры.
Задана матрица A(n,m), найти вектор b(l), каждый элемент которого равен средне арефмитеч. элементов соответствующего столбца матрицы А.

1. Создание массива и ввод массива в процед, (ввод кол-ва строк, столбцов, и длинны массива в основн по)
2. Работа над массивом в процедуре.

Код:
program Project1;
  uses crt;
  var
  a:array[1..100,1..100] of integer;
  b:array[1..100] of real;
  i,j,c,n,m,e:integer;
  F:real;

begin
repeat
clrscr;
writeln ('BBedite kol-vo stolbcov');
readln(m);
writeln ('VVedite kol-vo ctrok');
readln (n);
writeln ('Vvedite elements');
for j := 1 to m do
  begin
     for i := 1 to n do
      begin
         readln(a[i,j]);
      end;
      writeln;
  end;
    for j:= 1 to m do
  begin
     for i:= 1 to n do
      begin
          c:=c+a[i,j];
      end;
      b[j]:=c/n;
      c:=0;
    end;
  for j:=1 to m do
  write (b[j]:6:2);
  writeln;
  writeln ('Xotite Prodol)I(itb da-1 Het-2');
  readln (e);
  until e=2;
  end.
Вот я сделал, но че-то не работает, подскажите где ошибки

Код:
program Project1;
type mas1=array [1..100,1..100] of integer;
type mas2=array [1..100] of integer;
 var
   i,j,c,n,m,e:integer;
  procedure mas (var a:mas1;m:integer;n:integer);
  begin
for j := 1 to m do
  begin
     for i := 1 to n do
      begin
         readln(a[i,j]);
      end;
      procedure obrab (var a:mas1;b:mas2;n:integer;m:integer);
      begin
      for j:= 1 to m do
  begin
     for i:= 1 to n do
begin
          c:=c+a[i,j];
      end;
      b[j]:=c/n;
      c:=0;
    end;
    procedure vivod (var b:mas2;m:integer);
  for j:=1 to m do
  write (b[j]:6:2);
  writeln;
end;
begin
writeln ('BBedite kol-vo stolbcov');
readln(m);
writeln ('VVedite kol-vo ctrok');
readln (n);
writeln ('Vvedite elements');
mas (a,n,m);
obrab (a,b,n,m);
vivod (b,m);
end.

Последний раз редактировалось Айдар; 01.12.2009 в 19:46.
Айдар вне форума Ответить с цитированием
Старый 01.12.2009, 19:41   #2
Xatr
Форумчанин
 
Аватар для Xatr
 
Регистрация: 17.09.2008
Сообщений: 349
По умолчанию

А можно условие задачи?
если чем помог, поставьте отзыв на весы
Xatr вне форума Ответить с цитированием
Старый 01.12.2009, 19:46   #3
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию

Да, конечно.
Задана матрица A(n,m), найти вектор b(l), каждый элемент которого равен средне арефмитеч. элементов соответствующего столбца матрицы А.
Айдар вне форума Ответить с цитированием
Старый 01.12.2009, 19:57   #4
Xatr
Форумчанин
 
Аватар для Xatr
 
Регистрация: 17.09.2008
Сообщений: 349
По умолчанию

Программа запускается:

Код:
program Project1;
type mas1=array [1..100,1..100] of integer;
type mas2=array [1..100] of real;
 var
   i,j,c,n,m:integer;
   a:mas1;
   b:mas2;
procedure mas (var a:mas1;m:integer;n:integer);
begin
for j := 1 to m do
     for i := 1 to n do
         readln(a[i,j]);
end;
procedure obrab (var a:mas1;b:mas2;n:integer;m:integer);
begin
     for j:= 1 to m do
     begin
          for i:= 1 to n do
              begin
                   c:=c+a[i,j];
              end;
      b[j]:=c/n;
      c:=0;
    end;
end;
    procedure vivod (var b:mas2;m:integer);
begin
  for j:=1 to m do writeln (b[j]);
  writeln;
end;
begin
writeln ('BBedite kol-vo stolbcov');
readln(m);
writeln ('VVedite kol-vo ctrok');
readln (n);
writeln ('Vvedite elements');
mas(a,n,m);
obrab (a,b,n,m);
vivod (b,m);
end.
Внесённые изменения:
1) Все begin заканчиваются end-ами
2) добавлены переменные a и b
3) убрана лишняя переменная e

Лично у меня выводит нули. Может я не правильные значения ввожу?
2 столбца
2 строки
Значения: 1 2 3 4
Где-то ещё ошибка.
если чем помог, поставьте отзыв на весы

Последний раз редактировалось Xatr; 01.12.2009 в 20:08. Причина: Форматирование текста
Xatr вне форума Ответить с цитированием
Старый 01.12.2009, 20:04   #5
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию

Да программа запустилась, но теперь выводит не правильные значени...
Айдар вне форума Ответить с цитированием
Старый 01.12.2009, 20:14   #6
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию

Блин, не могу найти ошибку(((
Айдар вне форума Ответить с цитированием
Старый 01.12.2009, 20:53   #7
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию

Ребят не ужели никто не нашел ошибку?
Айдар вне форума Ответить с цитированием
Старый 01.12.2009, 22:07   #8
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию

ну помогите, срочно до завтра
Айдар вне форума Ответить с цитированием
Старый 01.12.2009, 22:10   #9
anGeee
Пользователь
 
Аватар для anGeee
 
Регистрация: 18.11.2008
Сообщений: 94
По умолчанию

Замените
Код:
procedure obrab (var a:mas1;b:mas2;n:integer;m:integer);
на
Код:
procedure obrab (var a:mas1;var b:mas2;n:integer;m:integer);
Возможно, это и есть ошибка..
anGeee вне форума Ответить с цитированием
Старый 01.12.2009, 22:22   #10
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию

во заработало, ура ))))
Айдар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача с процедурами Серафимий Долговяз Помощь студентам 4 14.02.2009 18:55
Задача по одномерному массиву, сделать с процедурами deu4er Помощь студентам 6 13.11.2008 13:59
FastReport с 2-я процедурами Abay БД в Delphi 2 20.09.2007 06:23