next up previous
Next: About this document ... Up: ep3 Previous: ep3

Exercício-programa

Faça um programa em C que resolva o seguinte problema: dado um reticulado do tipo acima (uma matriz), marcar todas as regiões alagadas maximais. Especificações a serem seguidas:

  1. Dados: dois inteiros $m$ e $n$ e $U_{m \times n}$ uma matriz inteira representando um reticulado com entradas $0$ e $-1$. (Na figura acima temos $m=n=10$.)

  2. A partir da matriz $U$ construir uma nova matriz $M$ (de mesma dimensão) marcando cada região alagada maximal com um número inteiro, da seguinte forma: Se existirem $k$ regiões alagadas maximais então cada posição de uma mesma região recebe um número entre 1 a $k$, sendo que todas as posições de uma mesma região devem receber um mesmo número. Por exemplo, o reticulado acima tem 8 regiões alagadas maximais. Neste caso, um exemplo de saída seria:

    1 0 0 0 0 2 2 0 3 3
    1 1 1 0 0 0 2 0 3 0
    0 1 0 0 4 0 0 0 0 0
    0 0 0 4 4 4 4 4 0 0
    0 0 0 0 4 4 0 0 5 5
    0 0 6 0 0 0 0 5 5 5
    0 0 6 6 6 0 0 0 5 5
    7 0 6 6 6 6 0 0 0 5
    7 0 0 0 0 0 8 8 0 0
    7 0 0 0 0 0 8 0 0 0

  3. Imprimir a matriz dada $U$ e a matriz marcada $M$.

  4. Use obrigatoriamente seguintes funções:

  5. Observações

  6. Bônus (opcional)

    Se, adicionalmente, o seu programa imprimir uma matriz do tipo char correspondente à matriz M (marcada), indicando as regiões secas e as diferentes regiões alagadas maximais com caracteres bem adequados e bonitos, você receberá uns pontos adicionais na nota deste EP3. Use sua imaginação (não precisa necessariamente numerar as regiões alagadas)!

Boa sorte!


next up previous
Next: About this document ... Up: ep3 Previous: ep3
Yoshiko Wakabayashi
2001-11-08