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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2010, 06:25   #1
DarkDeidara
Пользователь
 
Аватар для DarkDeidara
 
Регистрация: 30.11.2010
Сообщений: 18
Вопрос Найти особые элементы матрицы...

Дана матрица вещественных чисел размером MxN, её элементы ввести с клавиатуры. Определить k - количество "особых" элементов массива А, считая элемент особым, если он больше суммы всех остальных элементов матрицы.

Дак вот мне нужен цикл нахождения суммы всех остальных элементов столбца.

Сама задачка есть нехватает только этой суммы.
Код:
uses crt;
const n=3;m=3;
var a:array[1..n,1..m] of integer;
    i,j,k,sum:integer;
begin
     clrscr;
     for i:=1 to n do
     for j:=1 to m do
     begin
           write ('a[',i,',',j,']=');
           readln (a[i,j]);
     end;
     clrscr;
     writeln ('Введённая матрица:');
     for i:=1 to n do
     begin for j:=1 to m do
           write (a[i,j]:4);
           writeln;
     end;
     for j:=1 to m do
     begin
          sum:=0;
          k:=0;
          for i:=1 to n do
          sum:=..........
          if a[i,j]>sum then
          k:=k+1;
          writeln ('Количество особых элементов в ',j,' столбце = ',k);
          writeln ('Сумма элементов в ',j,' столбце = ',sum);
          writeln;
     end;
     readln;
     end.
Помогите кто чем может))
DarkDeidara вне форума Ответить с цитированием
Старый 02.12.2010, 06:53   #2
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Что является остальными элементами матрицы? Все элементы вообще или только столбца?

Цитата:
считая элемент особым, если он больше суммы всех остальных элементов матрицы.
или же
Цитата:
нужен цикл нахождения суммы всех остальных элементов столбца.
Вариант А
1 2 3 4
3 2 4 5
2 4 5 7
6 7 8 1
3 4 5 6


Вариант Б
1 2 3 4
3 2 4 5
2 4 5 7
6 7 8 1
3 4 5 6

И еще. Считается ли последний элемент особым, если он > 0.

-1 +3 +4
+2 -5 -1
-3 +1 +2

для элемента [3,3] = 2 сумма всех следующих элементов = 0. 2 > 0, следовательно [3,3] - особый элемент.

Добавлено --------------------------------------------------------------------------------
Есть еще заморочки
Цитата:
Дана матрица вещественных чисел
и тут же
Цитата:
Код:
var a:array[1..n,1..m] of integer;
Вот накидал то, что мне кажется верным
Код:
var
  i, j, k, m, n: Integer;
  sum: Real;
  a: array [1..100, 1..100] of Real;

BEGIN
  write ('Kol-vo strok: ');
  readln (m);
  write ('Kol-vo stolbcov: ');
  readln (n);

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

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

  writeln;
  for j := 1 to n do begin
    sum := 0;
    k := 0;
    for i := m downto 1 do begin
      if a[i,j] > sum then k := k + 1;
      sum := sum + a[i,j];
    end;
    writeln ('Stolbec ', j, ': k = ', k, '; sum = ', sum:6:3, ';');
  end;

  readln;
  readln;
END.
Для определения столбец/строка пользовался статьей Матрица (математика)

Последний раз редактировалось Sibedir; 02.12.2010 в 14:09.
Sibedir вне форума Ответить с цитированием
Старый 02.12.2010, 12:32   #3
DarkDeidara
Пользователь
 
Аватар для DarkDeidara
 
Регистрация: 30.11.2010
Сообщений: 18
По умолчанию

Особый элемент - это элемент, который больше суммы всех элементов столбца кроме него.
Вот мне нужно найти эту сумму остальных элементов В КАЖДОМ СТОЛБЦЕ.
DarkDeidara вне форума Ответить с цитированием
Старый 02.12.2010, 12:46   #4
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Ну дык пост #2

Последний раз редактировалось Sibedir; 02.12.2010 в 12:50.
Sibedir вне форума Ответить с цитированием
Старый 02.12.2010, 12:46   #5
Serebro
FORTRAN programmer
Форумчанин
 
Регистрация: 08.12.2009
Сообщений: 153
По умолчанию

Самый простой способ - это предварительно вычислить сумму всех элементов столбца (или матрицы), и после вычитать из этой суммы выбранный элемент столбца (или матрицы).
Serebro вне форума Ответить с цитированием
Старый 02.12.2010, 12:49   #6
DarkDeidara
Пользователь
 
Аватар для DarkDeidara
 
Регистрация: 30.11.2010
Сообщений: 18
По умолчанию

способ то простой, но для него обязательно нужно знать размерность матрицы и для каждого элемента искать сумму и вычитать его из неё
DarkDeidara вне форума Ответить с цитированием
Старый 02.12.2010, 12:52   #7
DarkDeidara
Пользователь
 
Аватар для DarkDeidara
 
Регистрация: 30.11.2010
Сообщений: 18
По умолчанию

Sibedir ты похоже не можешь понять какую сумму мне надо найти)) твой вариант решения я и сам написал в нём одно нужно найти СУММУ ЭЛЕМЕНТОВ СТОЛБЦА исключая каждый раз один из них)) а потом сравнивать каждый элемент столбца с этой суммой
DarkDeidara вне форума Ответить с цитированием
Старый 02.12.2010, 13:07   #8
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Код:
  for j := 1 to n do begin
    sum[j] := 0;
    for i := 1 to m do
      sum[j] := sum[j] + a[i,j];
  end;

  writeln;
  for j := 1 to n do begin
    k := 0;
    for i := m downto 1 do begin
      if a[i,j] > (sum[j] - a[i,j]) then k := k + 1;
    end;
    writeln ('Stolbec ', j, ': k = ', k, '; sum = ', sum[j]:6:3, ';');
  end;
Цитата:
Sibedir ты похоже не можешь понять какую сумму мне надо найти))
Ну дык я спрашивал, ты не ответил.
Цитата:
но для него обязательно нужно знать размерность матрицы
Это не тайна
Цитата:
для каждого элемента искать сумму и вычитать его из неё
А что мешает?

Последний раз редактировалось Sibedir; 02.12.2010 в 14:15.
Sibedir вне форума Ответить с цитированием
Старый 02.12.2010, 15:02   #9
DarkDeidara
Пользователь
 
Аватар для DarkDeidara
 
Регистрация: 30.11.2010
Сообщений: 18
По умолчанию

А почему он пишет недопустимый спецификатор (invalid qualifier)

Цитата:
Сообщение от Sibedir Посмотреть сообщение
Код:
  for j := 1 to n do begin
    sum[j] := 0;
DarkDeidara вне форума Ответить с цитированием
Старый 02.12.2010, 15:06   #10
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Цитата:
Дак вот мне нужен цикл нахождения суммы всех остальных элементов столбца
найти сумму столбца минус текущий элемент. Сумму столбца рекомендую вынести в отдельную функцию(оставил вам))
Код:
uses crt;

var
  i, j, k, m, n,p: Integer;
  sum: Real;
  a: array [1..100, 1..100] of Real;
  temp:real;

BEGIN
readln(m,n);
clrscr;
for i:=1 to m do
 begin
 for j:=1 to n do
  begin
   a[i,j]:=random(i*10);
   write(a[i,j]:3:0);
  end;
  writeln;
 end;

k:=0;
for i:=1 to m do
 for j:=1 to n do
  begin
   temp:=0;
   for p:=1 to m do
   temp:=temp+a[p,j];
   if a[i,j]>(temp-a[i,j]) then inc(k)
  end;
Writeln('=================');
Writeln(k);
END.
Нормальное состояние техники - нерабочее, все остальное частный случай.

Последний раз редактировалось alex_fcsm; 02.12.2010 в 15:17.
alex_fcsm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти наименьшие элементы в каждой строке матрицы и номер максимального из них fort-_-minor Общие вопросы C/C++ 3 22.05.2013 15:44
Pascal - Найти сумму всех ее отрицательных элементов и заменить ею все диагональные элементы этой матрицы NewBi Паскаль, Turbo Pascal, PascalABC.NET 2 24.04.2010 09:15
двумерный массив, особые элементы Puffy Помощь студентам 2 25.05.2008 10:46
Как найти max и min элементы матрицы????? ЕвгениуS Помощь студентам 19 02.03.2008 19:47
найти минимальный элемент в каждой строке матрицы и записать все минимальные элементы в отдельный массив W_P Помощь студентам 6 28.12.2007 00:24