Ir para conteúdo
Fórum Script Brasil

Pesquisar na Comunidade

Mostrando resultados para as tags ''[poligono] [matriz] [recursão] [strtol] [ponteiro]''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • Programação & Desenvolvimento
    • ASP
    • PHP
    • .NET
    • Java
    • C, C++
    • Delphi, Kylix
    • Lógica de Programação
    • Mobile
    • Visual Basic
    • Outras Linguagens de Programação
  • WEB
    • HTML, XHTML, CSS
    • Ajax, JavaScript, XML, DOM
    • Editores
  • Arte & Design
    • Corel Draw
    • Fireworks
    • Flash & ActionScript
    • Photoshop
    • Outros Programas de Arte e Design
  • Sistemas Operacionais
    • Microsoft Windows
    • GNU/Linux
    • Outros Sistemas Operacionais
  • Softwares, Hardwares e Redes
    • Microsoft Office
    • Softwares Livres
    • Outros Softwares
    • Hardware
    • Redes
  • Banco de Dados
    • Access
    • MySQL
    • PostgreSQL
    • SQL Server
    • Demais Bancos
  • Segurança e Malwares
    • Segurança
    • Remoção De Malwares
  • Empregos
    • Vagas Efetivas
    • Vagas para Estágios
    • Oportunidades para Freelances
  • Negócios & Oportunidades
    • Classificados & Serviços
    • Eventos
  • Geral
    • Avaliações de Trabalhos
    • Links
    • Outros Assuntos
    • Entretenimento
  • Script Brasil
    • Novidades e Anúncios Script Brasil
    • Mercado Livre / Mercado Sócios
    • Sugestões e Críticas
    • Apresentações

Encontrar resultados em...

Encontrar resultados que...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

Encontrado 1 registro

  1. /* No final do arquivo inclua um comentário com a macro $RCSfile$. Um dispositivo de saída (monitor) pode ser visto como uma matriz bidimensional de pixels. Para simplificar, cada pixel poderáestar apagado ou aceso. Considerando-se um terminal do tipo texto, um pixel será representado por um caractere, ou seja, '0' se estiver apagado e '1' se estiver aceso. Um algoritmo de preenchimento de área utilizado neste ambiente recebe as informações atualizadas sobre todos os pixels do monitor, incluindo a definição de um polígono, ou seja, os pixels correspondentes aos lados do polígono deverão estar acesos.Além disso, o algoritmo deverá receber a quantidade de linhas e de colunas do monitor e as coordenadas de um pixel localizadodentro do polígono. A partir destas informações, toda a área interna ao polígono deverá ser preenchida (os pixels deverão ser definidos pelo caractere '1'). Para isso, a primeira ação é verificar se o pixel desejado já está aceso. Se estiver nenhuma ação deverá ser executada. Caso contrário, o pixel em questão deverá ser aceso e o algoritmo deverá ser executado novamente para os quatro pixels vizinhos a este pixel (esquerda, direita, abaixo e acima do pixel em questão). Baseado no algoritmo acima, crie o arquivo "aula0601.h" contendo a definição das macros APAGADO ('0'), ACESO ('1'), NUMERO_MAXIMO_LINHAS (25) e NUMERO_MAXIMO_COLUNAS (80), do tipo tipoErros (tipo enumerado contendo os códigos de retorno da função PreencherPoligono, por exemplo, ok - valendo 0, abscissaInvalida - valendo 1, etc.), do tipo tipoPixel (enumerado contendo os valores apagado e aceso) e do protótipo da função MostrarMonitor. Esta função deverá receber uma matriz de pixels(tipoPixel) correspondendo ao monitor, além de suas dimensões. A função deverá exibir o conteúdo desta matriz. A macro referente à combinação ifndef e define, como por exemplo _AULA0601_, deverá ser definida como uma string valendo: "@(#)aula0601.h $Revision$" tipoErros MostrarMonitor (tipoPixel monitor [NUMERO_MAXIMO_LINHAS] [NUMERO_MAXIMO_COLUNAS], unsigned maximoLinhas, unsigned maximoColunas); Observação: O uso do operador ternário na chamada da função printf que exibe cada pixel (cada caractere correspondente) é obrigatório. Operador Ternário: Condição ? verdadeiro : falso Crie o arquivo "aula0601.c" contendo o código fonte da função MostrarMonitor. Esta função deverá conter, antes da exibição doconteúdo, uma chamada para a função system executando o comando clear. Após a exibição do conteúdo, esta função deverá conter uma chamada para a função sleep (com o tempo mínimo necessário para que uma configuração do monitor possa ser visualizada pelo usuário). A função deverá retornar ok (ZERO) ou o código de erro correspondente. Inclua, no arquivo "aula0601.h", a definição do protótipo da função LimparMonitor. Esta função deverá receber as informações sobre todos os pixels do monitor em questão, além do número máximo de linhas e do número máximo de colunas deste dispositivo.Se todos os argumentos forem válidos, a função deverá "apagar" todos os pixels do dispositivo. A função deverá retornar ok (ZERO) ou o código de erro correspondente. tipoErros LimparMonitor (tipoPixel monitor [NUMERO_MAXIMO_LINHAS][NUMERO_MAXIMO_COLUNAS], unsigned maximoLinhas, unsigned maximoColunas); Inclua, no arquivo "aula0601.c", a implementação da função LimparMonitor. A função MostrarMonitor deverá ser executada no final da execução da função LimparMonitor. Inclua, no arquivo "aula0601.h", a definição do protótipo da função DesenharRetangulo. Esta função deverá receber as informações atualizadas sobre todos os pixels do monitor, o número máximo de linhas e o número máximo de colunas do dispositivo, além das coordenadas do canto superior esquerdo e do canto inferior direito do retângulo desejado. Se todos os argumentos recebidos forem válidos, a função deverá "acender" todos os pixels que correspondam aos lados do retângulo em questão. A função deverá retornar ok ou o código de erro correspondente. tipoErros DesenharRetangulo (tipoPixel monitor [NUMERO_MAXIMO_LINHAS][NUMERO_MAXIMO_COLUNAS], unsigned maximoLinhas, unsigned maximoColunas, unsigned ordenadaEsquerda, unsigned abscissaEsquerda, unsigned ordenadaDireita, unsigned abscissaDireita); Inclua, no arquivo de "aula0601.c", a implementação da função DesenharRetângulo. A função MostrarMonitor deverá ser executadano final da execução da função DesenharRetangulo. Inclua, no arquivo "aula0601.h", a definição do protótipo da função PreencherPoligono. Esta função deverá receber as informações atualizadas sobre todos os pixels do monitor, incluindo a definição de um polígono, ou seja, os pixels correspondentes aos lados do polígono deverão estar acesos. Além disso, a função deverá receber a quantidade de linhas e de colunas do monitor e as coordenadas de um pixel localizado dentro do polígono. Se todos os argumentos forem válidos, o polígono deverá ser preenchido de acordo com o algoritmo definido acima. tipoErros PreencherPoligono (tipoPixel monitor [NUMERO_MAXIMO_LINHAS ][ NUMERO_MAXIMO_COLUNAS], unsigned maximoLinhas, unsigned maximoColunas, unsigned linha, unsigned coluna); Inclua, no arquivo de "aula0601.c", a implementação da função PreencherPoligono. A função MostrarMonitor deverá ser executadatoda vez que um pixel for modificado. Crie o arquivo "aula0602.c" contendo a implementação do programa de testes da função PreencherPoligono. Este programa deverá receber o número de linhas e o número de colunas do dispositivo desejado, as coordenadas do canto superior esquerdo e do canto inferior direito de um retângulo e as coordenadas de um ponto que esteja dentro deste retângulo. Se todos os argumentosrecebidos forem válidos, o programa deverá chamar as funções necessárias (LimparMonitor, MostrarMonitor, DesenharRetangulo e PreencherPoligono). Inclua, no arquivo de dependências, a macro AULA0602OBJS - correspondendo aos arquivos necessários para criar o executável a partir dos arquivos "aula0601.c" e "aula0602.c". Além disso, defina a macro AULA06, equivalendo ao executável "aula0602", e altere a macro EXECS, de forma que o valor da mesma inclua os executáveis criados na aula 06. O arquivo de dependências deverá incluir ainda os objetivos aula06 (executável da aula 06) e aula0602 (executável criado a partir dos arquivos definidos pela macro AULA0602OBJS) com os comandos correspondentes. Crie, na máquina local (lig0XY), o executável aula0602 (compilação e link-edição) usando o comando make. Teste o executável criado. Repita o passo anterior na máquina loghost02. Para isso execute o comando "make clean aula0602" (sem as aspas). Submeta os arquivos aula0601.h, aula0601.c, aula0602.c e Makefile ao sistema de controle de versão (comando ci). Recupere uma cópia de leitura dos arquivos aula0601.h, aula0601.c e aula0602.c (comando co) e uma cópia de escrita do arquivoMakefile (comando co -l). */ /* aula0601.h */ #ifndef _AULA0601_ #define _AULA0601_ "@(#)aula0601.h $Revision$" #define APAGADO 0 #define ACESO 1 #define NUMERO_MAXIMO_LINHAS 25 #define NUMERO_MAXIMO_COLUNAS 80 typedef enum {ok, caractereInvalido, tamanhoInvalido, abscissaInvalida, ordenadaInvalida} tipoErros /* acrescentar parâmetros */ typedef enum {APAGADO, ACESO} tipoPixel tipoErros MostrarMonitor (tipoPixel [NUMERO_MAXIMO_LINHAS] [NUMERO_MAXIMO_COLUNAS], unsigned, unsigned); tipoErros LimparMonitor (tipoPixel [NUMERO_MAXIMO_LINHAS] [NUMERO_MAXIMO_COLUNAS], unsigned, unsigned); tipoErros DesenharRetangulo (tipoPixel [NUMERO_MAXIMO_LINHAS][NUMERO_MAXIMO_COLUNAS], unsigned, unsigned, unsigned, unsigned, unsigned, unsigned); tipoErros PreencherPoligono (tipoPixel [NUMERO_MAXIMO_LINHAS ][ NUMERO_MAXIMO_COLUNAS], unsigned, unsigned, unsigned, unsigned); #endif /* aula0601.c */ tipoErros MostrarMonitor (tipoPixel monitor[NUMERO_MAXIMO_LINHAS][NUMERO_MAXIMO_COLUNAS], unsigned maximoLinhas, unsigned maximoColunas) { unsigned indiceLinhas, indiceColunas; system(clear); sleep(1); for (indiceLinhas = 0; indiceLinhas < maximoLinhas; indiceLinhas++) { for (indiceColunas = 0; indiceColunas < maximoColunas; indiceColunas++) printf(monitor[indiceLinhas][indiceColunas] = ACESO ? "1 " : "0 "); printf("\n"); } /* for */ return ok; } /* MostrarMonitor */ tipoErros LimparMonitor (tipoPixel monitor[NUMERO_MAXIMO_LINHAS][NUMERO_MAXIMO_COLUNAS], unsigned maximoLinhas, unsigned maximoColunas) { unsigned indiceLinhas, indiceColunas; for (indiceLinhas = 0; indiceLinhas < maximoLinhas; indiceLinhas++) { for (indiceColunas = 0; indiceColunas < maximoColunas; indiceColunas++) { monitor[indiceLinhas][indiceColunas] = 0; printf("%i ", monitor[indiceLinhas][indiceColunas]); } /* for */ printf("\n"); } /* for */ return ok; } /* LimparMonitor */ tipoErros DesenharRetangulo (tipoPixel monitor[NUMERO_MAXIMO_LINHAS][NUMERO_MAXIMO_COLUNAS], unsigned maximoLinhas, unsigned maximoColunas, unsigned ordenadaEsquerda, unsigned abscissaEsquerda, unsigned ordenadaDireita, unsigned abscissaDireita); { unsigned indiceLinhas, indiceColunas; if (((abscissaEsquerda < 0) || (abscissaEsquerda > maximoLinhas)) || ((abscissaDireita < 0) || (abscissaDireita > maximoLinhas))) { printf("A abscissa esta fora dos parametros especificados e/ou suportados."); exit(abscissaInvalida); } /* if */ if (((ordenadaEsquerda < 0) || (ordenadaEsquerda > maximoColunas)) || ((ordenadaDireita > 0) || (ordenadaDireita > maximoColunas))) { printf("A ordenada esta fora dos parametros especificados e/ou suportados."); exit(ordenadaInvalida); } /* if */ for (indiceLinhas = 0; indiceLinhas < maximoLinhas; indiceLinhas++) { for (indiceColunas = 0; indiceColunas < maximoColunas; indiceColunas++) { if (((indiceLinhas == abscissaEsquerda) && (indiceColunas >= ordenadaEsquerda) && (indiceColunas <= ordenadaDireita)) || ((indiceColunas == ordenadaDireita) && (indiceLinhas >= abscissaEsquerda) && (indiceLinhas <= abscissaDireita)) || ((indiceLinhas == abscissaDireita) && (indiceColunas >= ordenadaEsquerda) && (indiceColunas <= ordenadaDireita)) || ((indiceColunas == ordenadaEsquerda) && (indiceLinhas >= abscissaEsquerda) && (indiceLinhas <= abscissaDireita))) { monitor[indiceLinhas][indiceColunas] = 1; printf("%i ", monitor[indiceLinhas][indiceColunas]); } /* if */ else { monitor[indiceLinhas][indiceColunas] = 0; printf("%i ", monitor[indiceLinhas][indiceColunas]); } /* else */ } /* for */ printf("\n"); } /* for */ return ok; } /* DesenharRetangulo */ tipoErros PreencherPoligono (tipoPixel monitor[NUMERO_MAXIMO_LINHAS][NUMERO_MAXIMO_COLUNAS], unsigned maximoLinhas, unsigned maximoColunas, unsigned linha, unsigned coluna); { if ((maximoColunas > NUMERO_MAXIMO_COLUNAS) || (maximoLinhas > NUMERO_MAXIMO_LINHAS) || (maximoColunas < 0) || (maximoLinhas < 0)) { printf("\n\nOs parametros de linha e/ou coluna estao fora das dimensoes suportadas.\n\n\n"); exit(tamanhoInvalido); } /* if */ for (indiceLinhas = 0; indiceLinhas < maximoLinhas; indiceLinhas++) { for (indiceColunas = 0; indiceColunas < maximoColunas; indiceColunas++) { if ((monitor[indiceLinhas][indiceColunas] < '0') || (monitor[indiceLinhas][indiceColunas] > '1')) { printf("\n\nEntrada contem caractere invalido.\n\n\n"); exit(caractereInvalido); } /* if */ } /* for */ } /* for */ } /* PreencherPoligono */ /* aula0602.c */ int main(int argc, char *argv[]) { }
×
×
  • Criar Novo...