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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2012, 19:17   #1
Vlad0n
Пользователь
 
Регистрация: 15.09.2012
Сообщений: 26
По умолчанию Двухмерный массив...

Задана вещественная матрица размером NxM. Для каждой строки заменить все элементы матрицы меньшие среднего арифметического этой строки на нулевое значение.
Я в своей программе не могу додумать что там с циклами сделать надо, вобщем вот мой код:
Код:
uses crt;
const n1=10; m1=10;

type mas = array[1..n1,1..m1] of real;
var a:mas;
sum:real; i,j,m,n: integer ;

begin
writeln ('введите кол-во строк');
readln (n);
writeln ('введите кол-во столбцов');
readln (m);
writeln('введите элементы массива');
 for i:=1 to n do
  for j:=1 to m do
  begin
     Write ('Введите А[',i,',',j, ']: ');
     ReadLn (A[i,j])
  end;
writeln('полученный массив') ;
for i:=1 to M do
begin
Sum:=0;
for j:=1 to N do
begin
Sum:=sum+a[i,J]/n;

if sum > a[i,j] then a[i,j]:=0;
end;
writeln('среднее арифмитическое ',i,' строки : ',Sum);
end;
For i:=1 to n  do
  begin
   For j:=1 to m  do
    Write (A[i,j],' ');
    WriteLn
  end;
   END.

Последний раз редактировалось Vlad0n; 10.11.2012 в 19:24.
Vlad0n вне форума Ответить с цитированием
Старый 10.11.2012, 19:54   #2
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Код:
uses crt;
const n1=10; m1=10;

type mas = array[1..n1,1..m1] of real;
     mass2 = array [1..n1] of real;
var a:mas;
    b: mass2;
sum:real; i,j,m,n: integer ;

begin
writeln ('введите кол-во строк');
readln (n);
writeln ('введите кол-во столбцов');
readln (m);
writeln('введите элементы массива');
 for i:=1 to n do
  for j:=1 to m do
  begin
     Write ('Введите А[',i,',',j, ']: ');
     ReadLn (A[i,j])
  end;
writeln('полученный массив') ;
for i:=1 to M do
begin
  Sum:=0;
  for j:=1 to N do
  begin
    Sum:=sum+a[i,J]/n;
  end;
b[i] := sum; // сохраняем среднее арифметическое во второй массив
writeln('среднее арифмитическое ',i,' строки : ',Sum);
end;
// изменение массива
for i := 1 to n do
begin
  for j := 1 to n do
    if b[i] > a[i,j] then a[i,j]:=0;
end;
For i:=1 to n  do
  begin
   For j:=1 to m  do
    Write (A[i,j],' ');
    WriteLn
  end;
   END.
Твоя ошибка в том, что ты не до конца нашёл среднее арифметическое, а уже пытаешься менять элемент на 0. Я тебе в другой теме писал уже.
Код:
for i:=1 to M do
begin
Sum:=0;
for j:=1 to N do
begin
Sum:=sum+a[i,J]/n;

if sum > a[i,j] then a[i,j]:=0;
end;
вод представь, у тебя первая строчка массива 2 3 7. после первого прохода среднее арифметическое 2/1=2. После второго (2+3)/2 = 2.5. Тут ты сравниваешь 2.5>3 - нет. Значит не меняешь на 0. А вот на следующем проходе среднее (2+3+7)/3=4 . Оно стало больше чем на прошлом проходе. Т.е числа 2 и 3 нужно поменять на 0. А ты новое среднее сравниваешь уже только с 7-кой
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 11.11.2012, 01:13   #3
Vlad0n
Пользователь
 
Регистрация: 15.09.2012
Сообщений: 26
По умолчанию

Спасибо большое, только вот не могу додумать, как тут с одномерным массивом-то...

Последний раз редактировалось Vlad0n; 11.11.2012 в 14:06.
Vlad0n вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
двухмерный массив (СИ) Cas01 Общие вопросы C/C++ 7 23.10.2011 22:13
Двухмерный массив. 666Pupsik666 Общие вопросы C/C++ 4 16.01.2011 12:27
Двухмерный массив briko Паскаль, Turbo Pascal, PascalABC.NET 6 01.06.2010 09:45
Двухмерный массив... L_Killer Помощь студентам 4 28.05.2010 01:46
двухмерный массив varyat Помощь студентам 0 23.05.2010 17:44