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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2009, 20:21   #1
Style00001
Пользователь
 
Регистрация: 03.05.2009
Сообщений: 14
Радость Всё те же матрицы!

Собственно сабж! Написал программу к задачке, но что то не то. Знания про паскаль не оч((( Плз если кто может помогите найти ошибку и исправить её.
Само задание звучит так: Задана матрица A(n,m), в каждом столбце которой минимальный элемент необходимо заменить суммой положительных элементов этого же столбца.


У меня получилось :

Цитата:
Код:
program GTO;
const
n=4;
m=5;
type
matrica=array[1..n,1..m] of real;
var
index:array[1..n] of integer;
A:matrica;
i,j:integer;
min,s:real;
nmin: byte;

begin
for i:=1 to n do
for j:=1 to m do
begin
write('a[',i,',',j,']=');
readln(a[i,j])
end;

for j:=1 to m do
begin
min:=a[i,j];
nmin:=1;
for i:=2 to n do
if a[i,j]<min then
s:=0;
for j:=1 to m do
s:=s+a[i,j];
a[i,j]:=min;
index[i]:=j;
end;

begin
if a[i,j]>0 then s:=s+a[i,j];
end;

writeln;
for i:=1 to n do
begin
for j:=1 to m do
write (a[i,j]:8:3,'');
writeln
end; 
end.

Последний раз редактировалось Style00001; 12.05.2009 в 20:24.
Style00001 вне форума Ответить с цитированием
Старый 12.05.2009, 22:42   #2
VadEr
Форумчанин
 
Аватар для VadEr
 
Регистрация: 24.03.2009
Сообщений: 375
По умолчанию

Попробуй так:

Код:
program GTO;
const
  n=4; m=5;
var
A :array[1..n,1..m] of real;
index   :array[1..m] of byte;
i, j    :byte;
min, s  :real;

begin
for j:=1 to m do
  for i:=1 to n do
    begin
      write('matrica[',j,',',i,']=');
      readln(A[i,j])
    end;

Writeln; Writeln('Before:');
{Выводим на экран матрицу}
for i:=1 to n do
    for j:=1 to m do
        begin
             write(A[i,j]:8:3,' ');
             if j=m then writeln
        end;
{Ищем min элемент массива и запоминаем его положение в столбце}
for j:=1 to m do
    begin
         min := A[1,j];
         for i:=2 to n do
             if A[i,j] < min then
                begin
                     min := A[i,j];
                     index[j] := i
                end
    end;
{Производим замену min элемента на сумму положительных}
for j:=1 to m do
    begin
         s := 0;
         for i:=1 to n do
             if A[i,j] >= 0 then s := s + A[i,j];
         A[index[j],j] := s
    end;

Writeln; Writeln('After:');
{Выводим результат}
for i:=1 to n do
    for j:=1 to m do
        begin
          Write(A[i,j]:8:3,' ');
          if j=m then writeln
        end;
Readln
end.
VadEr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обращение матрицы методом союзной матрицы dofmat Помощь студентам 6 03.10.2011 15:01
Знать ВСЁ... Манжосов Денис :) Свободное общение 14 11.09.2008 04:39
Так всё начиналось JTG Софт 2 11.08.2008 14:34
Всё о клавиатуре Freek Win Api 5 25.06.2007 08:48