Tolleds 0 Denunciar post Postado Maio 4, 2014 Boa Tarde, Meus professores passaram um trabalho contendo uma série de exercícios... mas um deles eu não tenho a menor idéia de como começar, porque eles nunca passaram um exercício parecido com esse, e eles não passaram muitas coisas na aula relacionada a este exercício. Eu gostaria que alguém me ajudasse me indicando alguns passos a seguir, me dando idéias gerais sobre o que fazer, para que eu possa entender um pouco e tentar fazer o programa. Eu só consegui entender que tem que usar matriz pra fazer isso, mas nuinca ouvi falar sobre os comandos para geração de imagens...a verdade é que eu não entendi nada do que tem que fazer. (Desculpem-me, comecei o curso a dois meses, sei muita pouca coisa =/) O Exercício é: Neste exercício vocês vão desenvolver o PhotoCommand, um editor gráfico de modo texto, que gera figuras do tipo bitmap. As figuras bitmap (aquelas com terminação .bmp, que os Windows antigos usavam muito) são figuras onde cada byte representa a cor de um pixel. Vocês irão desenvolver um programa, em um arquivo com o nome “photocommand.c” que, dado um conjunto de comandos para a geração de uma ou mais imagens, gere na saída as imagens desejadas. Formato da entrada e da saída: O PhotoCommand irá receber como entrada um conjunto de comandos, lidos a partir do teclado. Cada comando é definido como na tabela abaixo: Comando Funcionamento: I C L -- Gera uma nova imagem com C colunas e L linhas. Z -- Zera a imagem, ou seja, gera uma imagem onde todos os pontos possuem a cor branca (cor ‘O’). C X Y C -- Colore o pixel (X,Y) com a cor C. V X Y1 Y2 C -- Gera uma linha vertical, partindo do ponto (X,Y1), e indo até o ponto (X,Y2). A cor da linha será C. H X1 X2 Y C -- Gera uma linha horizontal, partindo do ponto (X1,Y), e undo até o ponto (X2,Y). A cor da linha será C. R X1 Y1 X2 Y2 C -- Desenha um retângulo, de cor C, delimitado pelos pontos definidos por (X1,Y1) e (X2,Y2) S NOME -- Salva o arquivo (no nosso caso, imprime o arquivo na tela) com o nome dado. O nome tem um limite do tipo MSDOS: até 8 caracteres para o nome, até 3 caracteres para extensão de arquivo. F -- Fecha a sessão de edição. Para simplificar a programação, assumam que a imagem pode ter no máximo 250 linhas ou 250 colunas. O seu programa deve ser “esperto”, ou seja, deve ignorar comandos inválidos (comandos com letras diferentes das definidas acima). O seu programa não deve imprimir nenhuma mensagem de erro quando um comando inválido for digitado, somente ignorar a linha de entrada. Vocês podem assumir que os comandos, quando forem válidos, sempre estarão corretos (número correto de parâmetros, e valores de parâmetros que não ultrapassam a figura). Um exemplo de entrada segue abaixo: I 5 6 C 2 3 A S one.bmp G 2 3 J R 1 1 5 6 J V 2 3 4 W H 3 4 2 Z S two.bmp F A cada comando S NOME, imprima o nome do arquivo <NOME> e o conteúdo da imagem, ambos na tela. Não é preciso efetivamente gravar em arquivos neste trabalho. Como exemplo, a saída para a entrada acima seria a seguinte. Atenção: não testem o seu programa somente com este conjunto de entradas e saídas, pois este teste é bem simples... one.bmp OOOOO OOOOO OAOOO OOOOO OOOOO OOOOO two.bmp JJJJJ JJZZJ JWJJJ JWJJJ JJJJJ JJJJJ Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 4, 2014 O seu programa deve ser “esperto”, ou seja, deve ignorar comandos inválidos (comandos com letras diferentes das definidas acima). P/ mim essa é a parte mais complicada. Algumas maneiras de fazer: - Criar toda uma lógica de processamento desses comandos do zero. - [se vc utiliza Linux] Usar expressões regulares p/ fazer o parsing dos comandos. - Utilizar uma biblioteca de terceiros p/ fazer o parsing (os sistemas que implementam o padrão POSIX possuem a getopt em unistd.h) Tenho dúvidas sobre a especificação em alguns pontos: - É possível digitar o comando de criação de imagens mais de uma vez? Se sim, devo supor que estou utilizando alocação dinâmica de memória, mas o exercício não deixa isso claro. Por exemplo: I 5 6 C 2 3 A I 10 26 Compartilhar este post Link para o post Compartilhar em outros sites
Tolleds 0 Denunciar post Postado Maio 5, 2014 Perguntei essa parte de repetir o comando de criação de imagens para o professor e ele disse que pode repeti-lo. Isis, o meu problema maior esta sendo em como começar o programa, por exemplo, como que eu faço para receber como entrada algum dos comandos... quero dizer, eu não estou sabendo como (desculpa a expressão...eu nao sei como falar) aplicar o comando scanf pra receber os seguintes comandos exigidos no exercício. A lógica de ignorar comandos inválidos eu estou montando no caderno nos horarios livre de aula...amanha de noite digito aqui... mas sera que tem como vc me ajudar com esse probleminha que citei no paragrafo acima? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 6, 2014 Como são comandos heterogêneos, eu usaria fgets p/ ler a entrada toda como uma string e passaria isso p/ uma função de processamento que vai fazer o parsing e após isso, chamar os métodos que vão realizar as ações. Compartilhar este post Link para o post Compartilhar em outros sites
Tolleds 0 Denunciar post Postado Maio 6, 2014 Como são comandos heterogêneos, eu usaria fgets p/ ler a entrada toda como uma string e passaria isso p/ uma função de processamento que vai fazer o parsing e após isso, chamar os métodos que vão realizar as ações. Hmmm entendi....vou tentar aqui....muito obrigado Compartilhar este post Link para o post Compartilhar em outros sites