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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2009, 18:29   #1
Cyanide
 
Аватар для Cyanide
 
Регистрация: 05.04.2009
Сообщений: 6
По умолчанию Помогите с задачей на матрицу(pascal)

Условие:в матрице имеются строка и столбец,содержащие только элементы равные нулю.заполните эту строку средними арифметическими по столбцам,а столбец-средними арифметическими по строкам.(задача с внешним файлом).
Попытка решения:
Код:
Program zadanie8;
Uses crt;
Var
a:array[1..5,1..5] of real;
 f:text;
 s,sr,s1,sr1:real; 
 i,j:integer;
 begin 
clrscr; 
assign(f,’z8.txt’);
reset(f);
for i:=1 to 5 do 
for j:=1 to 5 do 
read(f,a[i,j]); 
close(f); 
for i:=1 to 5 do 
begin s:=0; 
s:=s+a[1,j]; 
sr:=s/5; 
if a[i,j]=0 then 
a[i,j]:=sr; 
end; 
for j:=1 to 5 do begin 
s:=0; 
s1:=s+a[i,1]; 
sr1:=s1/5; 
if a[i,j]=0 then 
a[i,j]:=sr1; 
end; 
for i:=1 to 5 do begin 
for j:=1 to 5 do 
write(a[i,j]:4); 
writeln; 
end; 
readkey; 
end.
Программа работает,но считает не правильно.Помогите пожалуйста исправить ошибки!

Последний раз редактировалось Stilet; 06.04.2009 в 10:27.
Cyanide вне форума Ответить с цитированием
Старый 05.04.2009, 18:53   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Как я понял, кроме нулевой строки и столбца больше нулей нет?
Тогда так:
Код:
Program zadanie8;
Uses crt;
Var
a:array[1..5,1..5] of real;
f:text;
s : real;
i,j,k,z : integer;

begin 
clrscr; 
assign(f,'z8.txt');
reset(f);
for i:=1 to 5 do 
 for j:=1 to 5 do
  read(f,a[i,j]);
close(f); 

for i:=1 to 5 do 
 begin
 s:=0;
 k := -1;
 for j:=1 to 5 do
  if a[i,j]=0 then
   k := j
  else s := s + a[i,j];
 a[i,k] := s/5;
 end;

z := k;
for j:=1 to 5 do
 begin
 s:=0;
 k := -1;
 for i:=1 to 5 do
  if a[i,j]=0 then
   k := i
  else if j<>z then
   s := s + a[i,j];
 a[k,j] := s/5;
 end;

for i:=1 to 5 do
 begin
 for j:=1 to 5 do
  write(a[i,j]:4:1);
 writeln;
 end;

readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.04.2009, 21:32   #3
Cyanide
 
Аватар для Cyanide
 
Регистрация: 05.04.2009
Сообщений: 6
По умолчанию

Да. Спасибо большое,выручили)
Cyanide вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите плз с задачей в Pascal DmitryChuvashin Помощь студентам 1 04.03.2009 22:26
Помогите с задачей(Pascal) КуДрЯ Помощь студентам 4 25.01.2009 22:04
Помогите с задачей по Pascal!!! oblachko Паскаль, Turbo Pascal, PascalABC.NET 3 15.01.2009 18:11
Помогите с задачей на pascal sdinaras Помощь студентам 3 05.10.2008 10:06
помогите плиззз с задачей на Pascal rer Помощь студентам 1 24.06.2008 16:31