Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

bluttau

exercício

Recommended Posts

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.