![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - избавится от 0 на главной и побочной диагоналях матрицы |
|
C/C++ - избавится от 0 на главной и побочной диагоналях матрицы
|
![]() Новый участник Сообщения: 32 |
когда возможно избавится от 0 все работает а когда нет программа не работает (например матрица 2х2 с 0 не возможно избавится путём перестановки столбцов и рядков матрицы ) вопрос в том как сделать чтоб выводило соответствующие сообщения?
#include <iostream> #include <time.h> using namespace std; int m[10][10]; //=========================================== void set_m (int n) { srand((unsigned) time (NULL)); for (int i=0; i<n;i++) for(int j=0; j<n; j++) cin>>m[i][j]; for (int i=0; i<n;i++) { for(int j=0; j<n; j++) cout<<m[i][j]<<" "; cout<<endl; } cout<<endl; } void look_m(int n) // на осн. диагон. найти 0 и поменять со столбцом или строкой где нет 0 { for(int i=0, j=0; i<n; i++, j++) { if(m[i][j]==0) { for(int k=0; k<n; k++) { if(m[k][j]!=0) { for(int j=0; j<n; j++) { int tmp; tmp=m[i][j]; m[i][j]=m[k][j]; m[k][j]=tmp; } } if(m[i][k]!=0) { for(int i=0; i<n; i++) { int tmp; tmp=m[i][j]; m[i][j]=m[i][k]; m[i][k]=tmp; } } } } } } void look_n(int n) // на побочн. диагон. найти 0 и поменять со столбцом или строкой где нет 0 { for(int i=n-1, j=0; j<n; i--, j++) { if(m[i][j]==0) { for(int k=0; k<n; k++) { if(m[k][j]!=0) { for(int j=0; j<n; j++) { int tmp; tmp=m[i][j]; m[i][j]=m[k][j]; m[k][j]=tmp; } //break; } if(m[i][k]!=0) { for(int i=0; i<n; i++) { int tmp; tmp=m[i][j]; m[i][j]=m[i][k]; m[i][k]=tmp; //break; } } } } } } int look(int n) //проверка наличия 0 на диагоналях { bool flag=true; for(int i=0, j=0; i<n; i++, j++) { if (m[i][j]==0) flag=false; } for(int i=n-1, j=0; j<n; i--, j++) { if (m[i][j]==0) flag=false; } return flag; } //==================Output=================================================== void output (int n ) { for (int i=0; i<n;i++) { for(int j=0; j<n; j++) cout<<m[i][j]<<" "; cout<<endl; } } int main () { int n; cin>>n; set_m(n); do { look_m(n); look_n(n); } while(look(n)==false); output(n); system("pause"); } |
|
Отправлено: 01:35, 09-12-2013 |
Ветеран Сообщения: 1405
|
Профиль | Отправить PM | Цитировать Перебор с возвратами рекурсивный в данном случае нужен. Так как может получиться ситуация когда после первой перестановки столбцов и строк, на последующих может понадобиться именно
эта переставленная, и тогда задача решаема. |
------- Отправлено: 19:36, 09-12-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] как избавится от ошибок DNS на DC? | dimV | Microsoft Windows NT/2000/2003 | 3 | 01-03-2011 14:24 | |
Помогите избавится от вирусов! | Lilblaw | Лечение систем от вредоносных программ | 4 | 04-12-2010 23:06 | |
Прочее - Помогите избавится от роутера :) | slipslot | Сетевые технологии | 8 | 05-08-2009 00:45 | |
избавится от Microsoft Oulook | BYBY | Хочу все знать | 4 | 12-03-2005 00:35 | |
Как избавится от транслита | Ereza | О сайте и форуме | 2 | 30-07-2002 17:11 |
|