Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2010, 12:21   #1
LaDark
Пользователь
 
Регистрация: 01.11.2010
Сообщений: 14
По умолчанию Матрицы. Поиск области, заполненной единицами.

Такая задача:
Дана матрица, заполненная нулями и единицами. Нужно вывести на экран максимальную область, заполненную единицами. Область должна быть прямоугольной, в остальном не имеет значения ее форма.
Код:
#include "stdafx.h"
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
     setlocale(LC_ALL,"");
     int mat[8][8];
     for(int i=0; i<8; i++)
          for(int j=0;j<8;j++)
               mat[j][i]=rand()%2+0;

     for(int i=0; i<8; i++){
          cout<<endl;
          for(int j=0;j<8;j++)
               cout<<mat[j][i]<<" ";
     }
int st=0; int sb=0; int qw=0, qe=0;;
int x=0,y=0;
     for(int i=0; i<8; i++){
          for(int j=0;j<8;j++){
               if(mat[j][i]==1){
                    x=i;
                    y=j;
                    while(mat[j][i]!=0){
                         st++;
                    }
               }
               for(int k=j;k<8;k++){
                    while(mat[k][st]!=0){
                         sb++;
                    }
               }
               for(int r=st; r!=0; r--){
                    qw=st;
                    while(mat[sb][r]!=0){
                         qw--;
                    }
               }
               for(int z=qw; z!=0; z--){
                    while(mat[z][qw]!=0){
                         qe=z;
                    }
               }
               if (x==qw && y==qe){
                    cout<<"это то: ";
                    for(int g=x; g<st; g++){
                         cout<<endl;
                         for(int h=y;h<sb;h++){
                              cout<<mat[g][h]<<" ";
                         }
                    }
               }

          }
     }

     cout<<endl;
     system("pause");
}
Где-то в коде зависает цикл. Долго отлаживал, так проблему и не нашел.
LaDark вне форума Ответить с цитированием
Старый 19.12.2010, 15:48   #2
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Попробуй установить брейкпойнт и step by step проследить что, где и как у тебя не работает.
coNsept вне форума Ответить с цитированием
Старый 19.12.2010, 16:05   #3
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от LaDark Посмотреть сообщение
Где-то в коде зависает цикл.
А в первом же while, как только в него попадаем, и зависает. Да и почему бы ему не зависнуть, ежели ни i, ни j, не меняем, сравнивая с не-нулём одно и тоже число?..
Vago вне форума Ответить с цитированием
Старый 19.12.2010, 16:55   #4
LaDark
Пользователь
 
Регистрация: 01.11.2010
Сообщений: 14
По умолчанию

Первый while поправил. Собственно говоря, если по аналогии править как я поправил
Код:
while(mat[st][i]!=0){
то все равно виснет.
LaDark вне форума Ответить с цитированием
Старый 20.12.2010, 08:40   #5
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от LaDark Посмотреть сообщение
как я поправил
Как "поправил"? Так
Код:
while(mat[st][i]!=0){
    st++;
}
что-ли? Вперёд, за границы массива, шагом - марш!?..
Vago вне форума Ответить с цитированием
Старый 20.12.2010, 18:54   #6
LaDark
Пользователь
 
Регистрация: 01.11.2010
Сообщений: 14
По умолчанию

А как здесь по другому поправить?
LaDark вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрицы.Поиск координат элементов матрицы. dima-intro Помощь студентам 1 11.12.2010 22:48
Поиск принадлежности точки области CrazyN00b Win Api 3 13.04.2010 00:19
Поиск в datagridview(заполненной из бд access) snakes2517 Общие вопросы .NET 1 06.04.2010 16:29
найти сумму элементов матрицы в заштрихованной области denis_stell Помощь студентам 1 03.03.2010 19:45
Сумма элементов из заштрихованной области матрицы pasha92 Помощь студентам 3 16.11.2009 18:54