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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2012, 16:09   #1
mimit
Пользователь
 
Регистрация: 18.10.2012
Сообщений: 49
По умолчанию Двумерные массивы

Дан двумерный массив целых чисел:
1)Для каждой строки выяснить имеются ли в ней разные элементы.
2)Определить есть ли в нем столбец, состоящий только из отрицательных элементов
3)Определить: является ли он единичной матрицей.
Код:
const n=5;m=5;
var a:array [1..n,1..m] of integer;i,j:integer;

begin
  randomize;
  for i:=1 to n do
  for j:=1 to m do
  a[i,j]:=random(10);
  for i:=1 to n do
  begin
  for j:=1 to m do
  write(a[i,j]:3);
  writeln;
  end;
  readln;
end.
mimit вне форума Ответить с цитированием
Старый 30.11.2012, 13:23   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Если то что приведено здесь создавали сами,то
Код:
Определить: является ли он единичной матрицей.
очень просто
в цикле перебираем элементы массива главной диагонали и сравниваем их с 1, если встретим хотя бы одно неравенство, то два пути решения:
1 сообщаем, что матрица не единичная и выходим из цикла
2 Устанавливаем признак, что матрица не единична, доходим до конца цикла, после выхода анализируем флаг и выводим соответствующие сообщения.
Если флаг остался нулевым, то аналогично анализируем на 0 все остальные элементы.
Неприятности приходят и уходят, а жизнь продолжается!

Последний раз редактировалось Sweta; 30.11.2012 в 14:14.
Sweta вне форума Ответить с цитированием
Старый 30.11.2012, 14:01   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Sweta, Вы сами решили, что такое единичная матрица?

рекомендую ознакомится с определением на вики: Единичная матрица:
Цитата:
Едини́чная ма́трица — квадратная матрица, элементы главной диагонали которой равны единице поля, а остальные равны нулю.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.11.2012, 14:15   #4
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Хомутонула.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 30.11.2012, 18:09   #5
mimit
Пользователь
 
Регистрация: 18.10.2012
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Sweta, Вы сами решили, что такое единичная матрица?

рекомендую ознакомится с определением на вики: Единичная матрица:
Ну я знаю что такое Единичная матрица. Как правильно задачу решить? Сначала проверяю главную диагональ что она равна 1 а потом остальные элементы которые должны быть равны 0. На теории легко не знаю как код правильно написать. Главную диагональ я могу проверить
Код:
For i:=1 to n do
for j:=1 to n do
if a[i,i]=1 then
mimit вне форума Ответить с цитированием
Старый 30.11.2012, 18:36   #6
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Введите в программе некоторую пременную fl которая может принимать значение 0 или 1, т.е true или false и присвойте ей в начале значение 0 - false.
if a[i,i]=1 then продолжаем цикл, иначе fl присваиваем 1, по окончанию данного цикла анализ fl , если 1, то матрица не единичная, если 0, проверяем оставшиеся элементы на 0, аналогично проверке центральной диагонали. Я не знаю Паскаля.
Это должно выглядить так
Цикл1 От i= 1 до n
Цикл2 От j= 1 до n
Если элемент главной диагонали !=1 то fl =1
конец цикла 2
конец цикла 1
Если fl =1 то матрица не единичная
иначе
Цикл1 От i= 1 до n
Цикл2 От j= 1 до n
Если остальные элементы !=0 то fl =1
конец цикла 2
конец цикла 1
Если fl =1 то матрица не единичная


Остальные элементы !=0 это (a[i][j]!=0 & j!=i)
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 30.11.2012, 18:49   #7
mimit
Пользователь
 
Регистрация: 18.10.2012
Сообщений: 49
По умолчанию

Я решил 2 задачу с остальными пока не могу разобраться
Код:
const N=5;
var a:array[1..N,1..N] of integer;
i,j,k1,k2:integer;
begin
randomize;
for i:=1 to N do
for j:=1 to N do
begin
a[i,j]:=(-100)+random(200);
write(a[i,j]:4);
if j=N then writeln;
end;
for j:=1 to N do
for i:=1 to N do
begin
if a[i,j]<0 then inc(k1);
if (i=N) and (k1<N) then k1:=0 else
if (i=N) and (k1=N) then
begin
k2:=k2+1;
k1:=0;
end;
end;
if k2>0 then writeln('Takih stolbcov ',k2)
else writeln('Takih stolbcov net');
end.
mimit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 21:48
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 19:51
Двумерные массивы Downtown Паскаль, Turbo Pascal, PascalABC.NET 0 06.04.2011 13:35
Двумерные массивы Тигран001 Паскаль, Turbo Pascal, PascalABC.NET 17 16.04.2010 22:46