![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| b44 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 18.5.2006 Репутация: нет Всего: нет |
помогите развернуть матрицу по часовой стрелке в памяти а не на экране
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
не вопрос -- поможем -- спрашивай что не понятно.
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| b44 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 18.5.2006 Репутация: нет Всего: нет |
код проги разворота в памяти но она чтото не разворачивает
#include <stdlib.h> #include <stdio.h> #include <conio.h> #define b 3 void main() { clrscr(); randomize(); int m[b][b]; int i,j,l,k,z,a,c; for (i=0; i<b; i++) { for (j=0; j<b; j++) { m[i][j]=random(20)+10; printf("%3i",m[i][j]); } printf("\n"); } printf("_________\n\n"); l=b/2; if ((b%2)!=0) l=l+1; for (i=0; i<l; i++) { for (j=(b/2)+2; j>1; j--) { a=m[i][b-(j-1)]; m[i][b-j+1]=m[j][i]; c=m[b-(j-1)][b-(i-1)]; m[b-(j-1)][b-(i-1)]=a; a=m[b-(i-1)][j]; m[b-(i-1)][j]=c; m[j][i]=a; } } for (i=0; i<b; i++) { for (j=0; j<b; j++) { printf("%3i",m[i][j]); } printf("\n"); } getch(); } |
|||
|
||||
| likehood |
|
|||
|
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 8 Всего: 24 |
не проще ли записать повёрнутую матрицу в новый массив? Затем можно этот массив скопировать в старый. Больно уж запутанный алгоритм у тебя получается.
|
|||
|
||||
| b44 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 18.5.2006 Репутация: нет Всего: нет |
пожалуйста напишите код, но лучше переделать написанный мной код, там ошибка в 3 и 4 цикле в диапазонах,
я перепечатал эту прогу с паскаля там она отлично работает. |
|||
|
||||
| AlanG |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 11.5.2006 Где: РашЫн ФидирейшЫн Репутация: нет Всего: нет |
А разве правильно использовать одинаковые глобальныйе переменные в дву циклах
Это сообщение отредактировал(а) AlanG - 18.5.2006, 17:39 |
|||
|
||||
| likehood |
|
|||
|
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 8 Всего: 24 |
а может кинешь паскалевский код? Только убедительная просьба пользоваться тэгами выделения кода
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
явно не for (j=(b/2)+2; j>1; j--) а for (j=(b/2)+2; j>0; j--)
а четвертый -- цикл вывода. какие там ощибки? -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| AlanG |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 11.5.2006 Где: РашЫн ФидирейшЫн Репутация: нет Всего: нет |
Ну в принципе задачка не сложная. По логике: в разных циклах передвигать столбцы и строки, и после завершения циклов копировать матрицу, для того чтобы использовать в других. Т.е. каждый цикл изменяет соответствующую сторону.
Прикольная задача, порешаю сегодня вечером для себя |
|||
|
||||
| b44 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 18.5.2006 Репутация: нет Всего: нет |
Alang потом кинеш решение. Щас кину паскалевский код Uses Crt;
Const b=4; Var M:array[1..b,1..b]of integer; i,j,l:byte; a,c:Integer; Begin clrscr; randomize; For i:=1 to b do Begin Writeln; For j:=1 to b do Begin M[i,j]:=Random(90)+10; Write(m[i,j],' '); end; end; Writeln; l:=b div 2; If (b mod 2)<>0 Then l:=l+1; For i:=1 to l do For j:=(b div 2) downto 1 do Begin a:=m[i,b-(j-1)]; m[i,b-j+1]:=m[j,i]; c:=m[b-(j-1),b-(i-1)]; m[b-(j-1),b-(i-1)]:=a; a:=m[b-(i-1),j]; m[b-(i-1),j]:=c; m[j,i]:=a; end; For i:=1 to b do Begin Writeln; For j:=1 to b do Write(m[i,j],' '); end; Readln; end. пожалуйста помогите решить |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
поворот матрицы на 90 град. по часовой стрелке код не проверял Это сообщение отредактировал(а) MAKCim - 18.5.2006, 19:50 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| b44 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 18.5.2006 Репутация: нет Всего: нет |
пожалуйста лучше исправьте мой код
#include <stdlib.h> #include <stdio.h> #include <conio.h> #define b 3 void main() { clrscr(); randomize(); int m[b][b]; int i,j,l,k,z,a,c; for (i=0; i<b; i++) { for (j=0; j<b; j++) { m[i][j]=random(20)+10; printf("%3i",m[i][j]); } printf("\n"); } printf("_________\n\n"); l=b/2; if ((b%2)!=0) l=l+1; for (i=0; i<l; i++) { for (j=(b/2); j>1; j--) { a=m[i][b-(j-1)]; m[i][b-j+1]=m[j][i]; c=m[b-(j-1)][b-(i-1)]; m[b-(j-1)][b-(i-1)]=a; a=m[b-(i-1)][j]; m[b-(i-1)][j]=c; m[j][i]=a; } } for (i=0; i<b; i++) { for (j=0; j<b; j++) { printf("%3i",m[i][j]); } printf("\n"); } getch(); } |
|||
|
||||
| Droll |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 10.11.2004 Репутация: нет Всего: 3 |
Здесь все до безумия просто! Дело в том, что в Паскале Вы создаете массив m[1..b, 1..b], в c++ создаете массив m[0..b-1, 0..b-1], а работать продолжаете как с массивом m[1..b, 1..b]. Т.о., если исправить строчки:
на строчки:
- то у меня все нормально начинает работать. Удачи! |
||||
|
|||||
| b44 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 18.5.2006 Репутация: нет Всего: нет |
большое спасибо
тема закрыта! |
|||
|
||||
| AlanG |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 11.5.2006 Где: РашЫн ФидирейшЫн Репутация: нет Всего: нет |
Можно еще свой пример приведу, раз уж подняли вчера Не линейный алгоритм:
Если интересно, то логику могу расписать, так понятно будет сразу, и вообще коментируйте, вдруг ошибок полно, ветдь тоже начинающий, буду рад |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |