Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/90: Рейтинг темы: голосов - 90, средняя оценка - 4.56
Alfo4k@
1 / 1 / 0
Регистрация: 18.12.2008
Сообщений: 17
1

Повернуть матрицу на 90 градусов

13.02.2009, 00:39. Просмотров 16762. Ответов 13
Метки нет (Все метки)

В двумерный массив размером NxN ввести произвольные числа из диапазона от -4 до 10 (включая границы), N - заданное натуральное число. Переставить элементы в данном массиве так, чтобы содержание массива оказалось бы "повернутым" при его повороте вокруг центра на 90 градусов по часовой стрелке. Вывести на экран измененный массив в виде таблицы. Дополнительные массивы не использовать.

Помогите плиззззззз
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2009, 00:39
Ответы с готовыми решениями:

Повернуть матрицу на 180 градусов.
Добрый вечер уважаемые программисты... Помогите решить матрицу, у меня...

Повернуть двумерную матрицу на 90 и 180 градусов
2. Вводим с клавиатуры размерности двухмерной матрицы (количество строк и...

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

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

Дана матрица целых чисел размером 4x4. Повернуть матрицу на 90 градусов и вывести содержимое матрицы на экран
Дана матрица целых чисел размером 4x4. Повернуть матрицу на 90 градусов и...

13
Puporev
Модератор
54590 / 42094 / 29065
Регистрация: 18.05.2008
Сообщений: 99,319
13.02.2009, 11:47 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
uses crt;
var n,i,j:integer;a,b:array[1..50,1..50] of integer;
begin
clrscr;
write('n=');readln(n);
writeln('Ischodnaia matritsha:');
randomize;
for i:=1 to n do
  begin
    for j:=1 to n do
      begin
        a[i,j]:=random(15)-4;{интервал [-4,10]}
        write(a[i,j]:4);
      end;
  writeln;
  end;
Writeln('Povorot na 90 grad:');
for i:=1 to n do
for j:=1 to n do
b[i,j]:=a[n-j+1,i];{поворот}
for i:=1 to n do
  begin
    for j:=1 to n do
      begin
        write(b[i,j]:3);
      end;
  writeln;
  end;
readln;
end.
0
Sergei
1450 / 717 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
13.02.2009, 11:52 3
Puporev, там сказано другую матрицу не использовать!
0
Puporev
Модератор
54590 / 42094 / 29065
Регистрация: 18.05.2008
Сообщений: 99,319
13.02.2009, 12:09 4
Извините, поторопился и не ту программу выложил.
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
uses crt;
var n,i,j,p,k,x:integer;
    a:array[1..50,1..50] of integer;
begin
clrscr;
write('n=');readln(n);
writeln('Ischodnaia matritsha:');
randomize;
for i:=1 to n do
  begin
    for j:=1 to n do
      begin
        a[i,j]:=random(15)-4;
        write(a[i,j]:4);
      end;
  writeln;
  end;
p := n div 2; {разбиваем матрицу на 4 части}
for i:=1 to p do
for k:=i to n-i do{меняем элементы по кругу из одной четверти в другую}
  begin
    x:=a[i,k];
    a[i,k]:=a[n-k+1,i];
    a[n-k+1,i]:=a[n-i+1,n-k+1];
    a[n-i+1,n-k+1]:=a[k,n-i+1];
    a[k,n-i+1]:=x;
  end;
Writeln('Povorot na 90 grad:');
for i:=1 to n do
  begin
    for j:=1 to n do
    write(a[i,j]:4);
    writeln;
  end;
readln
end.
1
Sergei
1450 / 717 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
13.02.2009, 12:12 5
Puporev Super
0
Alfo4k@
1 / 1 / 0
Регистрация: 18.12.2008
Сообщений: 17
16.02.2009, 17:45  [ТС] 6
Спасибо огромнейшее
0
gosnet
0 / 0 / 0
Регистрация: 18.02.2009
Сообщений: 4
18.02.2009, 19:11 7
Я сделал не рандомом, ачтоб самому вводить. Делаю матрицу 3Х3 он поворачивает. А вот 4Х4 уже не правильно ворачивает. Почему? Может напишите с ручным вводом мтрицы. Возможно в этом у меня ошибка
0
Puporev
Модератор
54590 / 42094 / 29065
Регистрация: 18.05.2008
Сообщений: 99,319
18.02.2009, 20:02 8
Приведите свой код, иначе Вашу ошибку мы не найдем.
0
gosnet
0 / 0 / 0
Регистрация: 18.02.2009
Сообщений: 4
18.02.2009, 20:08 9
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
uses crt;
type mas=array [1..50,1..50] of integer;
var p,k,x,j,i,n:integer;
    a:mas;
begin
clrscr;
 write('Введите размер массива: ');
readln(n);
for i:=1 to n do begin
for j:=1 to n do
begin
 write('Введите a[' ,i,',',j, ']:');
 readln(a[i,j]);
end;end;
writeln('Исходная маторица');
for i:=1 to n do begin
for j:=1 to n do
begin
 write(a[i,j],'  ');
 
end;
writeln;
end;
 
p:=n div 2;{разбиван\ем матрицу на 4 части}
for i:=1 to p do
for k:=1 to n-i do{меняем элементы по кругу из одной четверти в другую}
begin
x:=a[i,k];
a[i,k]:=a[n-k+1,i];
a[n-k+1,i]:=a[n-i+1,n-k+1];
a[n-i+1,n-k+1]:=a[k,n-i+1];
a[k,n-i+1]:=x;
end;
 
writeln('Поворот на 90 градусов: ');
for i:=1 to n do begin
begin
for j:=1 to n do
 write(a[i,j]:4);
 
end;
writeln;
end;
readln;
end.
0
Puporev
Модератор
54590 / 42094 / 29065
Регистрация: 18.05.2008
Сообщений: 99,319
18.02.2009, 20:38 10
for i:=1 to n do begin
begin
for j:=1 to n do
write(a[i,j]:4);
Вот это чудо Вы где списали? Если скажете что у меня, то .......
0
gosnet
0 / 0 / 0
Регистрация: 18.02.2009
Сообщений: 4
18.02.2009, 20:56 11
А что не так?я не понимаю
0
Puporev
Модератор
54590 / 42094 / 29065
Регистрация: 18.05.2008
Сообщений: 99,319
18.02.2009, 21:23 12
А тут и понимать не надо, если Вам это не дано, надо просто переписать правильно или скопировать из моего кода вывод матрицы.

Добавлено через 14 минут 24 секунды
Кстати вот эту строчку внимательно посмотрите, раз плохо видите.
for k:=1 to n-i do{меняем элементы по кругу из одной четверти в другую}
Вы букву i от цифры 1 не отличаете?
Впредь не переписывайте код, раз плохо умеете это делать. Скачайте редактор Notepad++. Копируйте текст кода и вставляйте в него. Затем сохраняйте полученный файл в Вашу папку с программами, обязательно после имени поставив расширение *.pas
0
gosnet
0 / 0 / 0
Регистрация: 18.02.2009
Сообщений: 4
19.02.2009, 06:45 13
А что не так в этом отрывке?

Добавлено через 2 минуты 38 секунд
ааа, увидел, не заметил сначала вашего сообщения. Попробуем исправить

Добавлено через 10 минут 49 секунд
Просмотрел тока что код, там где меняются элементы матрицы по кругу. У меня всё правильно
0
Puporev
Модератор
54590 / 42094 / 29065
Регистрация: 18.05.2008
Сообщений: 99,319
19.02.2009, 09:20 14
У меня
for k:=i to n-i do{меняем элементы по кругу из одной четверти в другую}
У Вас
for k:=1 to n-i do{меняем элементы по кругу из одной четверти в другую}
Вы что, действительно разницы не видите? Я же Вам уже указал где ошибка.
0
19.02.2009, 09:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2009, 09:20

В матрице повернуть средний наибольший ромб элементов на 90 градусов против часовой стрелки
Здравствуйте, помогите пожалуйста с написанием кода для следующей задачи....

Заполнить массив A[NxN] случайными числами. Развернуть матрицу на 180 градусов и полученную матрицу сложить с исходной.
Пожалуйста помогите написать программу. Заполнить массив A случайными...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru