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

В матрице уплотнить все четные элементы в направлении, указанном на рисунке

28.02.2009, 14:21. Показов 1064. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В матрице А(N,N) уплотнить все четные элементы в направлении указанном на рисунке. Остальные элементы сделать равными нулю.
Если решение задачи критично к факту четности/не¬четности числа столбцов или строк, студент сам выбирает этот параметр.Полученные результаты должны быть занесены в последовательный файл и доступны для просмотра из него.
Вложения
Тип файла: doc рис.doc (20.0 Кб, 73 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2009, 14:21
Ответы с готовыми решениями:

В матрице А(N,N) уплотнить все четные элементы в направлении указанном на рисунке
:help:ПОМОГИТЕ пожалуйста решить задачу: В матрице А(N,N) уплотнить все четные элементы в...

В матрице уплотнить нечетные элементы
В матрице А(N,N) уплотнить все нечетные элементы в направлении ука-занном на рисунке. Остальные...

В матрице А(N,N) уплотнить все четные элементы в направлении указанном на рисунке
Здравствуйте, есть задача: В матрице А(N,N) уплотнить все четные элементы в направлении указанном...

В матрице уплотнить все четные элементы в указанном направлении
а как можно вот это сделать? В матрице А(N,N) уплотнить все четные элементы в направлении указанном...

7
Эксперт С++
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
01.03.2009, 19:15 2
На мой взгляд, решение, как раз таки, кретично к четности/нечетности числа столбцов и строк, т.е. оно возможно только при нечетных N. К тому же N>=5

Код
n=5
15 16 22 23 ??
 7 14 17 21 ??
 6  8 13 18 20
 2  5  9 12 19
 1  3  4 10 11
получается, числа ?? не затрагиваются уплотнением из всего массива.
Интересно, что скажет, наш глубокоуважаемый гуру?

А, да, Ирина, как прошлая задача, похожая на эту, Вы ее сдали?
0
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
01.03.2009, 20:04 3
На мой взгляд, решение, как раз таки, кретично к четности/нечетности числа столбцов и строк, т.е. оно возможно только при нечетных N. К тому же N>=5
Согласен.
Ирина кинула ещё одно интересное задание, если время найду, постараюсь сделать в течении недели, если раньше не сделают конечно...
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
01.03.2009, 22:55 4
Мне кажется, что картинка не дорисована. Я как-то делал задачу на сортировку матрицы таким маршрутом, но он заканчивался так:

Код
15  16  22 23 25
 7  14  17 21 24
 6   8  13 18 20
0
Эксперт С++
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
02.03.2009, 09:49 5
Цитата Сообщение от Puporev Посмотреть сообщение
Мне кажется, что картинка не дорисована. Я как-то делал задачу на сортировку матрицы таким маршрутом, но он заканчивался так:

Код
15  16  22 23 25
 7  14  17 21 24
 6   8  13 18 20
Вы вот это имели введу.

Код
15 16 22 23 25
 7 14 17 21 24
 6  8 13 18 20
 2  5  9 12 19
 1  3  4 10 11
На мой взгляд Вы правы, по крайней мере, по законам симетрии. Будем дожилаться Ирины, может она внесет ясность.

Добавлено через 2 часа 54 минуты 43 секунды
Идея, такая. Использовать процедуру, которая конвертируюет координаты маршрута, в
координаты матрицы. Т.е. с маршрутом можно работать, как с обыкновенным линейным массивом
Вот небольшая программка, демонстрирующая, как происходит конвертирование.

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
var i, n, row, col : integer;
 
procedure convCoords (var r : integer; var c : integer; idx : integer);
 
var brow, erow, i  : integer;
    direction_flag : boolean;
 
begin
  if idx = 1 then
  begin
    r := 1;
    c := n-1;
  end
  else if idx = ((n*n)-2) then
  begin
    r := n;
    c := 1;
  end
  else
  begin
    i              := 2;
    brow           := 2;
    erow           := brow + i;
    direction_flag := True;
    while i<n do
    begin
      if (erow>=idx) and (brow<=idx) then
      begin
        if direction_flag=True then
          r := (idx-brow) + 1
        else
          r := (erow - idx) + 1;
 
        c := (n-i) + (r - 1);
        Exit;
      end;
 
      Inc(i);
      direction_flag := not direction_flag;
      brow := erow + 1;
      erow := brow + i;
    end;
 
    i    := i - 2;
    erow := brow + i;
    while i>0 do
    begin
      if (erow>=idx) and (brow<=idx) then
      begin
        if direction_flag=True then
        begin
          c := (idx - brow) + 1;
          r := (n-i) + (c - 1);
        end
        else
        begin
          c := (erow - idx) + 1;
          r := (n-i) + (c - 1);
        end;
        Exit;
      end;
 
      Dec(i);
      direction_flag := not direction_flag;
      brow := erow + 1;
      erow := brow + i;
    end;
  end;
end;
 
begin
  N:=5;
 
  for i:=1 to (n*n)-2 do
  begin
    convCoords(row, col, i);
    WriteLn(i:2,') = ',row:2,';',col:2);
  end;
 
  ReadLn;
end.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
02.03.2009, 11:01 6
Мне кажется идея правильная. Удобнее всего уплотнять маршрут, интерпретируя его как линейный массив, там очень простой алгоритм. Я вообще предпочитаю даже сортировку матриц делать через линейный массив, намного проще и понятней, чем эти переходы со строки на строку в матрице и контроль выхода за ее пределы.
Гораздо проще развернуть матрицу в массив, отсортировать и свернуть обратно.
Единственно что пока некрасиво, это кривоватый вывод из-за кривоватого условия.
0
Эксперт С++
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
02.03.2009, 11:44 7
Цитата Сообщение от Puporev Посмотреть сообщение
Единственно что пока некрасиво, это кривоватый вывод из-за кривоватого условия.
Что Вы имели тут в виду?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
02.03.2009, 12:12 8
То что не до 25, а только до 23.

Добавлено через 26 минут 53 секунды
Еще вот прочитал у Вас
На мой взгляд, решение, как раз таки, кретично к четности/нечетности числа столбцов и строк, т.е. оно возможно только при нечетных N. К тому же N>=5
Если маршрут в матрице законченный, т.е. используются все n^2 элементов, то четность матрицы не играет роли, просто для четных и нечетных матриц немного разные условия движения Вот пример заполнения матризы зигзагом, правда с элемента a[1,1].
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
uses crt;
var
    a:array[1..20,1..20]of integer;
    n,k,x,y,z:integer;
procedure check(n:byte;var i,j:integer);
begin
  if i=0 then inc(i)
  else
  if i>n then
      begin
        i:=n;
        j:=j+2;
      end;
end;
begin
clrscr;
write('n=');readln(n);
x:=1; y:=1; k:=1;
for z:=1 to n*n do
    begin
      a[x,y]:=z;
      x:=x+k;
      y:=y-k;
      if (x=0)or(y=0)or(x>n)or(y>n) then k:=-k;
      if odd(n)then
          begin
            check(n,x,y);
            check(n,y,x);
          end
      else
          begin
            check(n,y,x);
            check(n,x,y);
          end;
      end;
    for x:=1 to n do
      begin
        for y:=1 to n do
        write(a[x,y]:3);
        writeln;
      end;
  readln;
  end.
0
02.03.2009, 12:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.03.2009, 12:12
Помогаю со студенческими работами здесь

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

В матрице целых чисел размером 5x5 заменить все четные элементы на нуле
Если можна с комментариями И желательно не у Visual studi(но можно) Добавлено через 4 минуты...

В матрице целых чисел заменить все четные элементы на 0.Нужно исправить ошибку
В матрице целых чисел размером 5 на 5 заменить все четные элементы на нули #include&lt;stdio.h&gt; int...

Массив: Проверить, кратно ли колличество строк в матрице, где все элементы четные, заданномучислу
.помогите пожалуйста. мне нужно в задаче проверить кратно ли колличество строк в матрице где ВСЕ...


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

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