bluttau 0 Denunciar post Postado Junho 21, 2009 Pessoal estou tentando resolver um exercício e não estou conseguindo. C - compara¸c˜ao. Seu programa deve ler o prefixo do nome de um arquivo de imagem, ler a imagem e comparar com a imagem atual, informando se s˜ao iguais ou diferentes. Esta op¸c˜ao ´e ´util para comparar as imagens que seu programa gera com as imagens geradas pelo programa execut´avel entregue. void compara(int imagem[MAXLINHA][MAXCOLUNA], int linhas, int colunas){ int resultado = FALHA; while (resultado == FALHA){ printf("Digite o nome do arquivo com a imagem a ser comparada:"); scanf("%s", nomeDoArquivo2); resultado = le_pgm_compara(nomeDoArquivo, imagem, linhas, colunas, maiorValor); } if(resultado == SUCESSO){ } } quem quiser ver o arquivo completo : http://hostrox.net/abcd.txt Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 21, 2009 Dizer que tem um problema e não falar qual o problema, simplesmente postando um pedaço de código não explica nada a quem não tem bola de cristal. Se você já comparou a imagem, termine a função. Você tem que escrever a le_pgm_compara. Compartilhar este post Link para o post Compartilhar em outros sites
bluttau 0 Denunciar post Postado Junho 21, 2009 Dizer que tem um problema e não falar qual o problema, simplesmente postando um pedaço de código não explica nada a quem não tem bola de cristal. Se você já comparou a imagem, termine a função. Você tem que escrever a le_pgm_compara. Peço desculpas, não tenho muita experiência em foruns. Como meu problema envolve muito mais coisas acho que acabei esquecendo de explicitar tudo... Deixe-me tentar ser mais claro. Estou tentando comparar uma imagem, a ser carregada, com uma imagem carregada previamente, no início do programa. Durante a execução do programa é solicitado ao usuário o nome do arquivo com a imagem a ser carregada. Aí está, para carregar essa nova imagem sem modificar a imagem que eu tinha carregado previamente eu criei a função le_pgm_compara. Esta, eu utilizei na função compara. So que aí apareceram varios erros e eu fiquei sem saber o que fazer. Enfim, a minha ideia era dendro da função compara carregar a nova imagem e em seguida fazer uma comparação, elemento por elemento e a respeito das dimensões da imagem. Não sabia bem o que fazer e postei aqui no forum para ter idéias. Quanto ao código da funcao compara estava no link que eu tinha mandado, mas vou explicitá-lo agora: int le_pgm(char prefixo_do_nome[MAX_NAME], int imagem[MAXLINHA][MAXCOLUNA], int *linhas, int *colunas, int *maiorValor) { FILE *arq; char key[128]; int i, j, aux; char fname[MAX_NAME]; /* monta o nome do arquivo */ strcpy(fname, prefixo_do_nome); strcat(fname,".pgm"); /* abre o o arquivo de entrada para leitura */ arq = fopen(fname, "r"); if (arq == NULL){ printf("Erro na abertura do arquivo %s\n",fname); return FALHA; } /* le dados do cabecalho */ aux = fscanf(arq, "%s", key); if (aux != 1){ printf("Erro na leitura do arquivo %s \n",fname); fclose(arq); return FALHA; } if(strcmp(key,"P2") != 0) { printf("Formato desconhecido\n"); fclose(arq); return FALHA; } aux = fscanf(arq, "%d %d %d", colunas, linhas, maiorValor); if (aux != 3) { printf("Formato incorreto\n"); fclose(arq); return FALHA; } /* le a matriz (imagem) que se segue */ for(i = 0; i < *linhas; i++) { for(j = 0; j < *colunas; j++) { fscanf(arq, "%d", &imagem[i][j]); } } fclose(arq); printf("Arquivo %s carregado com sucesso.\n", fname); return SUCESSO; } Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Junho 21, 2009 Na sua função "compara" você pode fazer, em pseudocódigo: function compara(nome_da_img, img_original) le_pgm(nome_da_img, aux_img, &lin, &col, &max_value) //agora você compara img_original com aux_img... Mas agora eu vou perguntar de novo... quais os erros que aparecem?? Esses erros são em "compile-time" ou em "run-time"? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 21, 2009 int le_pgm(char prefixo_do_nome[MAX_NAME], int imagem[MAXLINHA][MAXCOLUNA], int *linhas, int* colunas, int* maiorValor); Se já existe uma função que lê a imagem você não precisa criar outra pra fazer a mesma coisa... Compartilhar este post Link para o post Compartilhar em outros sites