0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 32
1

из двумерного массива удалить столбцы, в которых все элементы меньше нуля

17.06.2010, 19:12. Показов 1967. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
у нас схожие задания, из двумерного массива удалить столбцы, в которых все элементы меньше нуля
эта программа удаляет столбцы по какому-то другому принципу, вот она

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
uses crt;
type
mas=array[1..50,1..50]of integer;
var n,m,i,j:integer;
a: mas;
 
procedure inp( n,m: integer; var a: mas);
var i, j: integer;
begin
randomize;
for i:=1 to n do
for j:=1 to m do
a[i,j]:=random(50)-40;
end;
 
procedure print( n,m: integer; var a: mas);
var i, j: integer;
begin
for i:=1 to n do
 begin
  for j:=1 to m do
  write(a[i,j]:4);
  writeln;
end;
writeln;
end;
 
procedure del (n:integer;var m:integer;var a:mas);
var i, j,k,p: integer;
begin
for j:=m downto 1 do
 begin
  k:=0;
  for i:=1 to m do
  if a[i,j]<0 then k:=k+1;
  if k=n then{если в столбце все отрицательные}
   begin
    if j=m then m:=m-1{если столбец последний}
    else{иначе}
     begin
      for i:=1 to n do
      for p:=1 to m-1 do
      a[i,p]:=a[i,p+1];
      m:=m-1;
     end;
    end;
  end;
end;
begin
clrscr;
write('Kolichestvo strok n=');readln(n);
write('Kolichestvo stolbcov m=');readln(m);
writeln('      Ishodnaya matrica');
inp(n,m,a);
print(n,m,A);
del(n,m,A);
writeln('      Udalenie stolbcov');
print(n,m,A);
readln
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2010, 19:12
Ответы с готовыми решениями:

Удалить все столбцы двумерного массива, в которых нет нулевых элементов
Удалить все столбцы двумерного массива которых нет нулевых элементов...

удалить все столбцы, в которых нет нуля.
удалить все столбцы, в которых нет нуля.

Удалить из массива столбцы, содержащие элементы, меньше 10
Сформировать двумерный массив t(4;4) по правилу t(i,j)=5(i+j)-j. Удалить из него...

Из массива структур "Авто" удалить все элементы, у которых год выпуска меньше заданного
помогите как можно удалить все элементы, у которых год выпуска меньше заданного? #include...

16
Почетный модератор
64287 / 47586 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
17.06.2010, 19:42 2
Вопрос
из двумерного массива удалить столбцы, в которых все элементы меньше нуля
эта программа удаляет столбцы по какому-то другому принципу, вот она
Комментарий к программе
36. if k=n then{если в столбце все отрицательные}
begin
Как говорится найди 10 отличий....
0
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 32
17.06.2010, 19:45  [ТС] 3
не понял, чес слово...
0
Почетный модератор
64287 / 47586 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
17.06.2010, 19:46 4
t35, Все элементы меньше ноля=все элементы отрицательеые
0
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 32
17.06.2010, 19:51  [ТС] 5
если, знаете что нужно сделать, так скажите, если не сложно, конечно

Добавлено через 5 минут
при запуске программа удаляет столбцы с положительными членами тоже, оставляя при этом столбцы в которых все элементы меньше нуля
0
35 / 34 / 9
Регистрация: 20.04.2010
Сообщений: 126
17.06.2010, 20:17 6
t35, тебе нужно с подпрограммой или без?
1
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 32
17.06.2010, 20:39  [ТС] 7
нужно с подпрограммами

Добавлено через 10 минут
кому понятно по какому принципу программа удаляет столбцы?

Добавлено через 10 минут
ситуация не из лучших, похоже.............
0
35 / 34 / 9
Регистрация: 20.04.2010
Сообщений: 126
17.06.2010, 20:55 8
НУ так подожди...это тебе и есть программа с процедурами(подпрограмма). Тут процедуры ввода, распечатки и удаления столбцов. Что именно тебе надо сделать?
1
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 32
17.06.2010, 21:06  [ТС] 9
нужно исправить здесь


procedure del (n:integer;var m:integer;var a:mas);
var i, j,k,p: integer;
begin
for j:=m downto 1 do
begin
k:=0;
for i:=1 to m do
if a[i,j]<0 then k:=k+1;
if k=n then{если в столбце все отрицательные}
begin
if j=m then m:=m-1{если столбец последний}
else{иначе}
begin
for i:=1 to n do
for p:=1 to m-1 do
a[i,p]:=a[i,p+1];
m:=m-1;
end;
end;
end;
end;
0
35 / 34 / 9
Регистрация: 20.04.2010
Сообщений: 126
17.06.2010, 21:10 10
Покажи, что именно надо исправить?
1
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 32
17.06.2010, 21:22  [ТС] 11
если б знал, сам, исправил бы

Добавлено через 1 минуту
нужно исправить чтобы, удалялись столбцы, в которых все элементы отрицательны

Добавлено через 9 минут
нашел что?
0
Почетный модератор
64287 / 47586 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
17.06.2010, 21:44 12
Какой-то молодец переделал мой код, да так что я сам еле нашел в нем ошибки.
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
uses crt;
type
mas=array[1..50,1..50]of integer;
procedure inp(var a: mas;var n,m:integer);
var i, j: integer;
begin
write('Kolichestvo strok n=');readln(n);
write('Kolichestvo stolbcov m=');readln(m);
for i:=1 to n do
for j:=1 to m do
a[i,j]:=random(50)-40;
end;
 
procedure print( var a: mas;n,m:integer);
var i, j: integer;
begin
for i:=1 to n do
 begin
  for j:=1 to m do
  write(a[i,j]:4);
  writeln;
end;
writeln;
end;
 
procedure del (n:integer;var m:integer;var a:mas);
var i,j,k,p,q: integer;
begin
for j:=m downto 1 do
 begin
  k:=0;
  for i:=1 to n do
  if a[i,j]<0 then k:=k+1;
  if k=n then{если в столбце все отрицательные}
   begin
    if j=m then m:=m-1{если столбец последний}
    else{иначе}
     begin
      for q:=1 to n do
      for p:=j to m-1 do
      a[q,p]:=a[q,p+1];
      m:=m-1;
     end;
    end;
  end;
end;
var a:mas;
    n,m:integer;
begin
clrscr;
randomize;
writeln('      Ishodnaya matrica');
inp(a,n,m);
print(A,n,m);
del(n,m,A);
writeln('      Udalenie stolbcov');
print(A,n,m);
readln
end.
0
WolfCF
17.06.2010, 21:47
  #13

Не по теме:

"его даже родная мать не узнала..."

0
35 / 34 / 9
Регистрация: 20.04.2010
Сообщений: 126
17.06.2010, 22:04 14
Puporev, я сделал матрицу 3х3
ввожу
1 -3 2
1 -5 3
1 -10 5
и он оставляет только
2
3
5
тоесть, он удаляет столбцы с улементами меньше 0 и столбцы с одинаковыми элементами

Добавлено через 3 минуты
а не, не с одинаковыми, но факт то что
я ввожу
1 -3 5
5 -2 6
7 -7 1
и он оставляет только
5
6
1
1
Почетный модератор
64287 / 47586 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
17.06.2010, 22:04 15
Цитата Сообщение от Conroex Посмотреть сообщение
ввожу
1 -3 2
1 -5 3
1 -10 5
где у меня в программе есть ввод? Значит опять лезете в код, портите и удивляетесь. Я несколько раз протестировал на разных матрицах, сейчас и 3х3, все работает исправно и по другому не может, поскольку алгоритм так прописан. Попробуйте не калечить чужие программы, а вникнуть в суть алгоритма и написать свою.
0
Почетный модератор
64287 / 47586 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
17.06.2010, 22:08 16
Вот Ваш пример
Миниатюры
из двумерного массива удалить столбцы, в которых все элементы меньше нуля  
1
35 / 34 / 9
Регистрация: 20.04.2010
Сообщений: 126
17.06.2010, 22:20 17
Всё, увидел ошибку, вопросов нет
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2010, 22:20
Помогаю со студенческими работами здесь

Удалить все столбцы матрицы в которых все элементы положительные
в C# удалить все столбцы в которых все элементы положительные

Удалить столбцы матрицы, в которых все элементы заканчиваются на единицу
Задача - удалить столбцы, в которых все элементы заканчиваются на единицу. вот процедура: type...

Удалить все строки и столбцы, на пересечении которых находятся отрицательные элементы
задача - удалить все строки и столбцы на пересечении которых находятся отрицательные элементы ...

Удалить столбцы матрицы, в которых встречаются минимальные элементы массива
Помогите решить 2 задачки, сессия уже скоро а голова уже кипит ) 1 задача ) Дан массив A(m)....


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru