Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 11.10.2016
Сообщений: 1
1

Матрица 5 на 5. Вывести строку или столбец в зависимости наличия положительных или нулевых элементов

11.10.2016, 20:07. Показов 557. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана квадратная матрица порядка n(n=5). Если все строки упорядочены по возрастанию, то в вектор x записать элементы столбца, содержащего наименьшее количество положительных элементов, а иначе элементы строки, содержащей наибольшее количество нулевых элементов.

То, что пытался сам:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
program lab_6;
{$R-}
var x:array[1..5,1..5] of integer;
    i,j,k,f,m,n,b:integer;
begin
k:=0;
m:=0;
n:=0;
b:=0;
 for i:=1 to 5 do
  for j:=1 to 5 do begin
   writeln('vvedi x',i,j);
   readln(x[i,j]);
  end;
 for i:=1 to 5 do
  for j:=1 to 5 do begin
   if x[i,j]>x[i+1,j] then begin
    b:=1;
    if x[j,i]>0 then begin
     if i=1 then begin 
     m:=0;
     n:=0;
     end;
     m:=m+1;
     if n>m then begin 
     n:=m;
     k:=j;
     end;
    end;
  end else begin
   if x[i,j]=0 then begin
     if j=1 then m:=0;
     n:=m;
     m:=m+1;
     if n<m then k:=i;
    end;
  end;
  end;
  if b=1 then begin write('[');
  for f:=1 to 5 do writeln(x[f,k]);
  write(']');
  end else   begin write('[');
  for f:=1 to 5 do write(x[k,f]);
  write(']');
end;
 readln;
end.
Суть в том, что выводит, не то, что нужно. В 90% случаев это 4 столбец, хоть и выполнилось условие для вывода строки.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2016, 20:07
Ответы с готовыми решениями:

Есть ли в данной матрице строка (столбец), состоящая только из положительных или нулевых элементов?
определить, есть ли в данном массиве строка (столбец), состоящая только из положительных или...

Определить, есть ли в данном массиве строка (столбец), состоящая только из положительных или нулевых элементов
Определить, есть ли в данном массиве строка (столбец), состоящая только из положительных или...

Количество нулевых, или положительных, или отрицательных элементов в двумерном массиве
Здравствуйте. Мне нужно составить программу, которая подсчитывает или количество нулевых, или...

Двумерные массивы. Используя булеву функцию определить, состоит ли массив только из положительных или нулевых элементов
Добрый день) Помогите, пожалуйста, решить задачи) 3.Используя функцию булева типа определить:...

1
охотник
1011 / 535 / 650
Регистрация: 29.09.2014
Сообщений: 1,083
12.10.2016, 05:37 2
Кликните здесь для просмотра всего текста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
const n=5;
type mas=array[1..n]of integer;
     matr=array[1..n]of mas;
var a:matr;x:mas;
    i,j:integer;
    
{задание и вывод массива}    
procedure vv_matr(var x:matr;s:string;f:boolean);
var i,j:integer;
begin
 randomize;
 writeln(s);
 for i:=1 to n do
  begin
   for j:=1 to n do
    begin
     if f then x[i,j]:=-5+random(11);{j-i-2}
     write(x[i,j]:4)
    end;
   writeln
  end 
end;
 
{возвращает true если строка упорядочена по возрастанию}
function po_vozr_mas(xx:mas):boolean;
    var i:integer;ff:boolean;
     begin
      i:=1;ff:=true;
      while ff and (i<=n-1) do
       begin
        if xx[i]>=xx[i+1]
         then ff:=false;
        inc(i)
       end;
      po_vozr_mas:=ff 
     end;
     
{возвращает true если все строки в матрице упорядочены по возрастанию}     
function po_vozr_matr(x:matr):boolean;
 var i:integer;fl:boolean;   
  begin
   i:=1;fl:=true;
   while fl and (i<=n) do
    begin
     if not po_vozr_mas(x[i])
      then fl:=false;
     inc(i) 
    end;
   po_vozr_matr:=fl
  end;
  
 {количество 0 в строке} 
 function kol_0_mas(xx:mas):integer;
 var i,k:integer;
 begin
  k:=0;
  for i:=1 to n do if xx[i]=0 then inc(k);
  kol_0_mas:=k 
 end;
 
 {возвращает номер строки с наибольшим количеством 0 или -1, если нет строк с нулевыми элементами}
 function kol_0_matr(x:matr):integer;
 var i,k:integer; 
 begin
  k:=-1;
  for i:=1 to n do if (kol_0_mas(x[i])>0)and(kol_0_mas(x[i])>k) then k:=i;
  kol_0_matr:=k
 end;
 
 {количество положительных элементов в столбце}
 function k_pol_st(x:matr;j:integer):integer;
 var i,k:integer;
 begin
  k:=0;
  for i:=1 to n do if a[i,j]>0 then inc(k);
  k_pol_st:=k
 end;
 
 {возвращает номер столбца,содержащего наименьшее количество положительных элементов, или -1, если нет положительных элементов в матрице}
 function min_pol_st_matr(xx:matr):integer;
 var j,k,st,tmp:integer;
 begin
  k:=n+1;st:=-1;
  for j:=1 to n do 
   begin
    tmp:=k_pol_st(xx,j);
    if (tmp>0)and(tmp<k) then begin k:=tmp; st:=j end;
   end;
  min_pol_st_matr:=st
 end;
 
begin
 vv_matr(a,'A:',true);
 if po_vozr_matr(a)
  then
   begin
    writeln('все строки упорядочены по возрастанию');
    if min_pol_st_matr(a)=-1
     then writeln('нет столбцов с положительными элементами')
     else
      begin
       writeln('X:');
       j:=min_pol_st_matr(a);
       for i:=1 to n do begin x[i]:=a[i,j]; write(x[i]:3) end
      end
   end
  else
   begin
    writeln('не все строки упорядочены по возрастанию');
    if kol_0_matr(a)=-1
     then writeln('нет строк с нулевыми элементами')
     else 
      begin
       writeln('X:');
       i:=kol_0_matr(a);
       for j:=1 to n do begin x[j]:=a[i,j]; write(x[j]:3) end
      end
   end;
end.
1
12.10.2016, 05:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2016, 05:37
Помогаю со студенческими работами здесь

Продублировать строку или столбец матрицы, содержащую min или max элемент
Дана матрица 4х9. Нужно продублировать строку или столбец матрицы, содержащую min или max элемент.....

Вставка или обновление в зависимости от наличия записи в БД
Доброго времени суток! Помогите пожалуйста, решить проблемку: Получаю данные из JSON файла,...

С клавиатуры вводится матрица 2*2, В зависимости от переключателя вычисляется сумма элементов или определитель
Товарищи, помогите, пожалуйста, скоро экзамен по Делфи, а мы его совсем не изучали, задачи не...

Вывести на экран 1 или 0 в зависимости от того, имеют три заданных целых числа одинаковую четность или нет
Вывести на экран 1 или 0 в зависимости от того, имеют три заданных целых числа одинаковую четность...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru