Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Паскаль, задача с матрицей (http://www.tehnari.ru/f41/t99687/)

Madara 23.11.2014 01:53

Паскаль, задача с матрицей
 
Здравствуйте.
Нужна маленькая помощь...

Задание:
Если среднее арифметическое матрицы А положительно, задать элементам С1, С2,...,С[i] значения тех элементов матрицы А, которое больше среднего арифметического этой матрицы.

Вот я написал код:
PHP код:

Program MatrToMass;
Const 
n=3;
Var
 
j,i:integer;
 
A:array[1..nof array[1..nof real;
 
S,K:real;
 
C:array[1..n*nof real;
Begin
  S
:=0;
  for 
i:=1 to n do
  for 
j:=1 to n do
    
Begin 
     Write
('A[',i,',',j,']=');
     
Readln(A[i,j]);
     
S:=S+A[i,j];
    
end
  
K:=S/sqr(N);
  if 
K>0 then
   Begin
    
for i:=1 to n do
    for 
j:=1 to n do
      
Begin
        
if A[i,j]>k then C[i]:=A[i,j];
        
end;
      
Writeln('Среднее арифметическое матрицы А = ',K:0:1);  
      
Write('Полученный массив C = ');
      for 
i:=1 to n*do
       
Begin
        
if C[i]<>0  then
        Write
(C[i],' ');
       
end;   
   
end;
END

Если например ввести матрицу А:
|4 6 20|
|1 5 0|
|30 6 1|
То все вроде верно, выдаёт
Среднее арифметическое матрицы А = 8.1
Полученный массив C = 20 30

Но если например ввести матрицу А:
|25 24 25|
|25 25 25|
|25 25 25|
То по должно выдать С= 25 25 25 25 25 25 25 25 (8 раз)
Но выдаёт
Среднее арифметическое матрицы А = 24.9
Полученный массив C = 25 25 25 (3 раза)

На самом деле я не уверен что это верно, т.к. вывожу я не совсем массив, как сказано в задании...

Но если написать так:
PHP код:

Program g_2_5_3_6;
Const 
n=3;
Var
 
j,i:integer;
 
A:array[1..n,1..nof real;
 
S,K:real;
 
C:array[1..n*nof real;
Begin
  S
:=0;
  for 
i:=1 to n do
  for 
j:=1 to n do
    
Begin
      Write
('a[',i,',',j,']=');
      
readln(A[i,j]);
      
S:=S+A[i,j];
    
end;
  
K:=S/sqr(n);
  for 
i:=1 to n do
  for 
j:=1 to n do
     
Begin
      
if A[i,j]>K then C[i]:=A[i,j];
      
write(C[i], ' ');
     
end;
END

То вообще не понятно чего выводит

Прошу вас помочь мне разобраться с этой проблемой.

Vladimir_S 23.11.2014 09:00

Цитата:

Сообщение от Madara (Сообщение 1081992)
Прошу вас помочь мне разобраться с этой проблемой.

Легко.
1. Вводим еще одну переменную формата Integer, напр. q.
2. Вместо
Код:

  for i:=1 to n do
  for j:=1 to n do
    begin
    if A[i,j]>K then C[i]:=A[i,j];
    write(C[i], ' ');
    end;

пишем
Код:

  q:=0; 
  for i:=1 to n do
  for j:=1 to n do
    if A[i,j]>K then
    begin
      q:=q+1;
      C[q]:=A[i,j];
      write(C[q], ' ');
    end;



Часовой пояс GMT +4, время: 06:02.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.