Ir para conteúdo

POWERED BY:

Arquivado

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

Herculano

[Resolvido] Transformar vetor de inteiros em um único número inteiro.

Recommended Posts

Olá galera estou fazendo um trabalho em c q é o seguinte: você deve cria uma TAD conjunto, q deve armazenar um vetor com os números inteiros e o tamanho do vetor.

exemplo:

 

Conjunto [5][9][3][2][1] tamanho= 5

 

Eu tenho q transformar o vetor conjunto no numero 59321.

 

Abaixo acompanha o algoritmo q eu criei.

int Conj2Num(TConj a)
	  {
			 int Num=0;
			 int iden=a.tamanho-1,aux;
			 for(int i=0; i < a.tamanho;i++)
				 {
					 
					 aux= a.valores[i] * (int)pow(10.0,float(iden));
					 Num = Num + aux;
					 aux=0;
					 iden--;
					 
					 
				 }
			 return Num;										 
	  }

Eu fiz o seguinte peguei o primeiro elemento e mulpliquei pela potência de 10 q corresponde a ele no caso 10^4.

A primeira iteração do for ocorre certo 50000. Já segunda não ao vez ser 9000 fica 8991 q é (9000-9).As outras iterações do for ocorrem sem problemas.

 

Se alguém tiver alguma ideia de como eu posso resolver esse problema.

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

minha lógica seria transformar primeiro td em string, ai você vai dando strcat você vai ter td junto soh q como string, ai você usa um atoi() e pronto td iria c converter para inteiro.

 

;D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, eu compilei aqui e funcionou quase normal, mas o ultimo número não era mostrado.

eu fiz uma funçãozinha pra você substituir pela pow()

 

veja o que acontece.

int power10(int n)
{
int aux=1, i;

	for (i=0; i<n; i++)
		aux *= 10;

	return aux;
}

Assim eu consegui compilar e funcionou perfeitamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valew Victor eu testei usando a sua função e funcionou. O problema é q a função q eu criei funciona apenas para alguns casos, por exemplo:

 

Conjunto [8][16][6][11] tamanho= 4

 

o numero teria q ser 816611 porém a minha função retorna 9671. Acho q o modo mais eficaz para o meu caso seria como o quit falou. Vou testar usando string como ele disse e posto a resposta. Valew galera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é herculano...

se você usar números maiores do que 9 no seu conjunto, a forma mais fácil é como o quit falou, vá de strings...

:P

 

 

[]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu to tentando aki mais eu naum sei direito como funciona a função srtcat. Primeiro eu tenho transformar todos os valores do vetor em char ... (como eu faço isso coloco isso dentro de um for para converter). Dps é só usar o strcat e converter para inteiro. o Maior problema e transformar os elemento dos vetores. Como eu posso fazer isso ???

Vlw !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz assim. Consigui converter o elementos do vetor para int. O problema agora é concatenar. A variavel num vai conter todo o numero porém no tipo char, para depois eu converte-la para int com o metodo atoi. Problema é strcat agora.Como uso ela do modo certo.

Exemplo:

Conjunto [45][2][4][5]

Dentro do for

1 iteraçao num=45;

2 iteraçao num=452;

3 iteraçao num=4524;

4 iteraçao num=45245;

Após isso fora do for eu converto para int usando atoi.

Como eu faço isso usando strcat.

 

int Conj2Num(TConj a)
	  {

			 char buf[255],num[225];
			 int numero;
			 for(int i=0; i < a.tamanho; i++)
				 {
					 itoa(a.valores[i],buf,10);
					 cout << buf << endl;
					 num=strcat(num,buf);
					 
				 }
			 numero = atoi(num);
			 cout << numero << endl;
			 return numero;										 
	  }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consigui galera eu que estava errando na hora de utilizar a função strcat. Dps de muito tempo eu consigui terminar essa função valew galera.

 

 

int Conj2Num(TConj a)
	  {

			 char buf[255],num[255];
			 int numero;
			 for(int i=0; i < a.tamanho; i++)
				 {
					 itoa(a.valores[i],buf,10);
					 cout << buf << endl;
					 strcat(num,buf);
					 
				 }
			 numero = atoi(num);
			 cout << numero << endl;
			 return numero;										 
	  }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boooooua!

 

ainda bem que pudemos ajudar!

 

[]'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.