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

Eдалить строку матрицы, в которой находится первый нечетный отрицательный элемент

30.01.2012, 21:56. Показов 1177. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан двумерный массив, удалить строку в котором находится первый нечетный отрицательный элемент.
Как ее решить?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.01.2012, 21:56
Ответы с готовыми решениями:

Удалить строку матрицы, в которой на побочной диагонали находится первый отрицательный элемент (D7)
нужно чтобы удаляло строку матрицы, у которой на побочной диагонали находится первый отрицательный...

Удалить столбец матрицы, в котором находится первый нечетный отрицательный элемент
Дан двумерный массив размером 6*7,заполненный случайным образом. А)удалить столбец.в котором...

Переставить столбец и строку, в которой находится первый отрицательный элемент
Дан двумерный квадратный массив. Переставить столбец и строку, в которой находится первый...

Удаление строки матрицы, в которой находится первый отрицательный элемент
Из заданной матрицы A(N,M) удалите строку, в которой находится первый отрицательный элемент. Как...

13
trainspotting
1086 / 486 / 384
Регистрация: 11.11.2010
Сообщений: 773
30.01.2012, 22:26 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
const 
  nmax=50;
type
  Tmatrix=array[1..nmax,1..nmax] of integer;
var
  a:Tmatrix;
  i,j,ix,jx,m,n:integer;
begin
  repeat
    write('Kolichestvo strok v matritse, ne bolee ',nmax,':');
    readln(n);
    write('Kolichestvo stolbtsov v matritse, ne bolee ',nmax,':');
    readln(m);
  until (n in [1..nmax]) and (m in [1..nmax]);
  randomize;
  writeln('Ishodnaya matritsa:');
  for i:=1 to n do
    begin
      for j:=1 to m do
        begin
          a[i,j]:=-50+random(101);
          write(a[i,j]:4);
        end;
      writeln;
    end;
  writeln;
  {poisk pervogo nechetnogo otr. el.}
  ix:=0;
  jx:=0;
  i:=1;
  while (i<=n) and (ix=0) do
    begin
      j:=1;
      while (j<=m) and (a[i,j] mod 2=0) or (a[i,j]>=0) do
        inc(j);
      if j<=m then
        begin
          ix:=i;
          jx:=j;
        end
      else
        inc(i);
    end;
  if ix<>0 then
    begin
      writeln('Indeksy pervogo nechetnogo otr. el [',ix,',',jx,']');
      {Udalenie stroki s naidennym elementom}
      if ix=n then
        dec(n)
      else
        begin
          for i:=ix to n-1 do
            for j:=1 to m do
              a[i,j]:=a[i+1,j];
          dec(n);
        end;
      writeln('Poluchennya matritsa:');
      for i:=1 to n do
        begin
          for j:=1 to m do
            write(a[i,j]:4);
          writeln;
        end;
    end
  else
    writeln('V matritse net nechetnyh otr. elementov');
end.
1
0 / 0 / 0
Регистрация: 30.01.2012
Сообщений: 8
30.01.2012, 22:30  [ТС] 3
а почему нет отрицательных элементов?
0
trainspotting
1086 / 486 / 384
Регистрация: 11.11.2010
Сообщений: 773
30.01.2012, 22:34 4
Массив заполняется случайными числами, возможно, что отрицательных вовсе не будет, а если и будут, вполне возможно, что среди них не окажется нечетных. На этот случай и предусмотрена проверка в программе.
1
0 / 0 / 0
Регистрация: 30.01.2012
Сообщений: 8
30.01.2012, 22:35  [ТС] 5
а то что в скобочках красными буквами, это для чего?
я просто не понимаю в паскале ничего.
0
trainspotting
1086 / 486 / 384
Регистрация: 11.11.2010
Сообщений: 773
30.01.2012, 22:39 6
Если имеешь ввиду вот это
Pascal
1
writeln('Indeksy pervogo nechetnogo otr. el [',ix,',',jx,']');
,то это для наглядности - информация в какой строке и в каком столбце стоит найденный элемент, в принципе можно данную строку вообще удалить, условие не требует ее вывода и на программу никак не влияет.
1
0 / 0 / 0
Регистрация: 30.01.2012
Сообщений: 8
30.01.2012, 22:41  [ТС] 7
Извиняюсь, за свои не знания, но можешь написать как будет выглядеть программа без вставок в скобках?
Еще раз извиняюсь, за свою назойливость.)
0
trainspotting
1086 / 486 / 384
Регистрация: 11.11.2010
Сообщений: 773
30.01.2012, 22:50 8
Упростил, как мог.
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
var
  a:array[1..20,1..20] of integer;
  i,j,ix,jx,m,n:integer;
begin
  write('Kol-vo strok:');
  readln(n);
  write('Kolichestvo stolbtsov:');
  readln(m);
  randomize;
  writeln('Ishodniy massiv:');
  for i:=1 to n do
    begin
      for j:=1 to m do
        begin
          a[i,j]:=-50+random(101);
          write(a[i,j]:4);
        end;
      writeln;
    end;
  writeln;
  ix:=0;
  jx:=0;
  i:=1;
  while (i<=n) and (ix=0) do
    begin
      j:=1;
      while (j<=m) and (a[i,j] mod 2=0) or (a[i,j]>=0) do
        j:=j+1;
      if j<=m then
        begin
          ix:=i;
          jx:=j;
        end
      else
        i:=i+1;
    end;
  if ix<>0 then
    begin
      if ix=n then
        n:=n-1
      else
        begin
          for i:=ix to n-1 do
            for j:=1 to m do
              a[i,j]:=a[i+1,j];
          n:=n-1;
        end;
      writeln('Massiv posle udaleniya:');
      for i:=1 to n do
        begin
          for j:=1 to m do
            write(a[i,j]:4);
          writeln;
        end;
    end
  else
    writeln('V matritse net nechetnyh otr. elementov');
  readln;
end.
1
0 / 0 / 0
Регистрация: 30.01.2012
Сообщений: 8
30.01.2012, 22:52  [ТС] 9
мне эту задачу надо написать на экзамене в тетраде, то что красным в скобках как писать? или не стоит писать это вообще?
0
trainspotting
1086 / 486 / 384
Регистрация: 11.11.2010
Сообщений: 773
30.01.2012, 23:03 10
Это просто текстовые сообщения, чтобы было понятно, как выполняется программа. Подсказки, что нужно что-то ввести и что будет выводится и тд, на программу не влияют, но без них будет полная каша и непонимание, что происходит, при непосредственном выполнении программы. А как нужно именно тебе, решай сам.
0
0 / 0 / 0
Регистрация: 30.01.2012
Сообщений: 8
30.01.2012, 23:05  [ТС] 11
т.е. как я понял "write('Kol-vo strok:');" строчки с writeln можно не писать?
0
trainspotting
1086 / 486 / 384
Регистрация: 11.11.2010
Сообщений: 773
30.01.2012, 23:11 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
var
  a:array[1..20,1..20] of integer;
  i,j,ix,m,n:integer;
begin
  readln(n,m);
  randomize;
  for i:=1 to n do
    begin
      for j:=1 to m do
        begin
          a[i,j]:=-50+random(101);
          write(a[i,j]:4);
        end;
      writeln;
    end;
  writeln;
  ix:=0;
  for i:=1 to n do
    begin
      for j:=1 to m do
        if (a[i,j]<0) and (a[i,j] mod 2<>0) then
          begin
            ix:=i;
            break;
          end;
      if ix<>0 then
        break;
    end;
  if ix<>0 then
    begin
      for i:=ix to n-1 do
        for j:=1 to m do
          a[i,j]:=a[i+1,j];
      n:=n-1;
    end;
  for i:=1 to n do
    begin
      for j:=1 to m do
        write(a[i,j]:4);
      writeln;
    end;
end.
1
0 / 0 / 0
Регистрация: 30.01.2012
Сообщений: 8
30.01.2012, 23:21  [ТС] 13
Цитата Сообщение от versa4e Посмотреть сообщение
Держи самый упрощенный вариант
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
var
  a:array[1..20,1..20] of integer;
  i,j,ix,m,n:integer;
begin
  readln(n,m);
  randomize;
  for i:=1 to n do
    begin
      for j:=1 to m do
        begin
          a[i,j]:=-50+random(101);
          write(a[i,j]:4);
        end;
      writeln;
    end;
  writeln;
  ix:=0;
  for i:=1 to n do
    begin
      for j:=1 to m do
        if (a[i,j]<0) and (a[i,j] mod 2<>0) then
          begin
            ix:=i;
            break;
          end;
      if ix<>0 then
        break;
    end;
  if ix<>0 then
    begin
      for i:=ix to n-1 do
        for j:=1 to m do
          a[i,j]:=a[i+1,j];
      n:=n-1;
    end;
  for i:=1 to n do
    begin
      for j:=1 to m do
        write(a[i,j]:4);
      writeln;
    end;
end.
Большое спасибо за помощь)

Добавлено через 7 минут
Дана матрица нужно найти количество элементов, которое больше чем среднее арифметическое строки. или как то так))
0
trainspotting
1086 / 486 / 384
Регистрация: 11.11.2010
Сообщений: 773
31.01.2012, 00:32 14
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
var
  a:array[1..20,1..20] of integer;
  i,j,n,m,k:integer;
  sr:real;
begin
  readln(n,m);
  randomize;
  k:=0;
  for i:=1 to n do
    begin
      sr:=0;
      for j:=1 to m do
        begin
          a[i,j]:=random(10);
          write(a[i,j]:5);
          sr:=sr+a[i,j];
        end;
      for j:=1 to m do
        if a[i,j]>sr/m then
          inc(k);
      writeln;
    end;
  writeln(k);
end.
0
31.01.2012, 00:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.01.2012, 00:32
Помогаю со студенческими работами здесь

Поменять местами строку , в которой находится максимальный элемент со строкой, где находится минимальный элемент матрицы
Дана целочисленная матрица А размером N, где N вводится с клавиатуры. Поменять местами строку , в...

Поменять местами первую строку и строку, в которой находится первый нулевой элемент
Сделать с помощью массива.

В матрице поменять местами первую строку и строку, в которой находится первый нулевой элемент.
Поменять местами первую строку и строку, в которой находится первый нулевой элемент. Принять, что...

Удалить столбец матрицы в котором находится первый четный отрицательный элемент
Удалить стлобец в котором находится первый четный отрицательный елемент массив 5*8; Сделал, но...


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

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