Ir para conteúdo

POWERED BY:

Arquivado

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

lima_Novo_C

[Resolvido] For não incrementa corretamente

Recommended Posts

No código abaixo deveria ler da seguite maneira

 

PrimeDigi = 1 ler 12

PrimeDigi = 3 ler 34

etc...

 

O for lê normal quando comentada a linha da função CodigoConverte, de deixar executar a função, o for PrimeDigi lê quando o contador é 0, ao sair da função CodigoConverte, o for fica perdido e não consegue ler mais nada.

Pode ser estouro de memória ?

 

Atenciosamente

Lima

 

char CodigoNumer[9] = "12345678";

 

void ConverteCodigo(char Codigo[])

{

char Ler1Codigo[5];

char Ler2Codigo[5];

 

int PrimeDigi = 0;

Posicao0 = 0;

controla.Posicao1 = 1;

 

for (PrimeDigi = 0; PrimeDigi < 7; PrimeDigi+=2)

{

int SegunDigi = PrimeDigi + 1;

memset(Ler1Codigo, 0, sizeof(Ler1Codigo));

memset(Ler2Codigo, 0, sizeof(Ler2Codigo));

 

if ('1' == Codigo[PrimeDigi])

strcat(Ler1Codigo, strCodigo1);

if ('1' == Codigo[segunDigi])

strcat(Ler2Codigo, strCodigo1);

 

if ('2' == Codigo[PrimeDigi])

strcat(Ler1Codigo, strCodigo2);

if ('2' == Codigo[segunDigi])

strcat(Ler2Codigo, strCodigo2);

 

if ('3' == Codigo[PrimeDigi])

strcat(Ler1Codigo, strCodigo3);

if ('3' == Codigo[segunDigi])

strcat(Ler2Codigo, strCodigo3);

 

if ('4' == Codigo[PrimeDigi])

strcat(Ler1Codigo, strCodigo4);

if ('4' == Codigo[segunDigi])

strcat(Ler2Codigo, strCodigo4);

 

if ('5' == Codigo[PrimeDigi])

strcat(Ler1Codigo, strCodigo5);

if ('5' == Codigo[segunDigi])

strcat(Ler2Codigo, strCodigo5);

 

if ('6' == Codigo[PrimeDigi])

strcat(Ler1Codigo, strCodigo6);

if ('6' == Codigo[segunDigi])

strcat(Ler2Codigo, strCodigo6);

 

if ('7' == Codigo[PrimeDigi])

strcat(Ler1Codigo, strCodigo7);

if ('7' == Codigo[segunDigi])

strcat(Ler2Codigo, strCodigo7);

 

if ('8' == Codigo[PrimeDigi])

strcat(Ler1Codigo, strCodigo8);

if ('8' == Codigo[segunDigi])

strcat(Ler2Codigo, strCodigo8);

 

if ('9' == Codigo[PrimeDigi])

strcat(Ler1Codigo, strCodigo9);

if ('9' == Codigo[segunDigi])

strcat(Ler2Codigo, strCodigo9);

 

if ('0' == Codigo[PrimeDigi])

strcat(Ler1Codigo, strCodigo0);

if ('0' == Codigo[segunDigi])

strcat(Ler2Codigo, strCodigo0);

 

CodigoConverte( Ler1Codigo, Ler2Codigo );

};

return;

}

 

void CodigoConverte(char Converte1[], char Converte2[])

{

controla.ElemeMune = 0;

for (controla.ElemeMune = 0; controla.ElemeMune < 5; controla.ElemeMune++)

{

controla.ConPassada = 0;

if ('1' == Converte1[controla.ElemeMune])

controla.ConPassada = 2;

 

if ('0' == Converte1[controla.ElemeMune])

controla.ConPassada = 1;

 

controla.passadanro = 0;

for (controla.passadanro = 0; controla.passadanro < controla.ConPassada; controla.passadanro++ )

{

controla.Leitura = 0;

for (controla.Leitura = 0; controla.Leitura < 9; controla.Leitura++)

{

Codigo[Posicao0] = Pre[controla.Leitura];

Posicao0++;

}

}

 

controla.ConPassada = 0;

if ('1' == Converte2[controla.ElemeMune])

controla.ConPassada = 2;

 

if ('0' == Converte2[controla.ElemeMune])

controla.ConPassada = 1;

 

controla.passadanro = 0;

for (controla.passadanro = 0; controla.passadanro < controla.ConPassada; controla.passadanro++ )

{

controla.Leitura = 0;

for (controla.Leitura = 0; controla.Leitura < 9; controla.Leitura++)

{

Codigo[Posicao0] = Bra[controla.Leitura];

Posicao0++;

};

};

 

};

return;

}

 

main()

{

 

bla....

 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente fazer a prototipação da função CodigoConverte(); antes de iniciar a função ConverteCodigo();

bom tente neh!

e nessa parte como você faz isso:

int PrimeDigi = 0;
Posicao0 = 0;
Posicao0 esta com o tipo definido antes?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, obrigado pela resposta.

 

Descobri por que não incrementa corretamente

As linhas comentadas são o problema no for que chama a função abaixo,

 

as variaveis estão definidas global como:-

byte Codigo [] = {};

byte Pre[] = {0,1,2,3,4,5,6,7,8};

byte Bra[] = {8,7,6,5,4,3,2,1,0};

 

void CodigoConverte(char Converte1[], char Converte2[])
{
   controla.ElemeMune = 0;
   for (controla.ElemeMune = 0; controla.ElemeMune < 5; controla.ElemeMune++)
   {
	  controla.ConPassada = 0;
	  if ('1' == Converte1[controla.ElemeMune])
		 controla.ConPassada = 2;

	  if ('0' == Converte1[controla.ElemeMune])
		 controla.ConPassada = 1;

	  controla.passadanro = 0;
	  for (controla.passadanro = 0; controla.passadanro < controla.ConPassada; controla.passadanro++ )
	  {
		 controla.Leitura = 0;
		 for (controla.Leitura = 0; controla.Leitura < 9; controla.Leitura++)
		 {
// aqui
//			 Codigo[Posicao0] = Pre[controla.Leitura];

			 Posicao0++;
		  }
	  }

	  controla.ConPassada = 0;
	  if ('1' == Converte2[controla.ElemeMune])
		  controla.ConPassada = 2;

	  if ('0' == Converte2[controla.ElemeMune])
		 controla.ConPassada = 1;

	  controla.passadanro = 0;
	  for (controla.passadanro = 0; controla.passadanro < controla.ConPassada; controla.passadanro++ )
	  {
		 controla.Leitura = 0;
		 for (controla.Leitura = 0; controla.Leitura < 9; controla.Leitura++)
		 {

// e/ou aqui
//			Codigo[Posicao0] = Bra[controla.Leitura];

			Posicao0++;
		 };
	  };

};
return;
}

 

Pergunta:- Como passar por referência a variável Código ? Como alimentar essa variável quando passada por referência?

 

Atenciosamente

Lima

Compartilhar este post


Link para o post
Compartilhar em outros sites

você definiu a variavel codigo como global, td q fizer nela no programa fará ela alterar!´

 

eu naum entendi bem sua pergunta!! é soh você passar ué hehe!!

 

[]'s

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.