Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 23.11.2014, 01:53   #1 (permalink)
Madara
Member
 
Регистрация: 29.11.2013
Сообщений: 50
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Паскаль, задача с матрицей

Здравствуйте.
Нужна маленькая помощь...

Задание:
Если среднее арифметическое матрицы А положительно, задать элементам С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
То вообще не понятно чего выводит

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

Старый 23.11.2014, 01:53
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Не ленитесь и прочитайте похожие топики, это очень помогает в решении проблем

Задача паскаль
Задача Паскаль
Задача. Паскаль

Старый 23.11.2014, 09:00   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Madara Посмотреть сообщение
Прошу вас помочь мне разобраться с этой проблемой.
Легко.
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;
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.