Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

darky_miguel

Ajuda numa função

Recommended Posts

darky_miguel

boas , tenho que programar uma função que apague um digito a um numero

public static int apagardigito (int n,int pos)

o n é o numero e o pos  é a posição que quero apagar

 

exemplo

o retorno disto apagardigito (9863,3)  deve ser 983 mas ainda não sei muito bem como hei de fazer alguém me pode ajudar

Share this post


Link to post
Share on other sites
vasco16

boas , tenho que programar uma função que apague um digito a um numero

public static int apagardigito (int n,int pos)

o n é o numero e o pos  é a posição que quero apagar

 

exemplo

o retorno disto apagardigito (9863,3)  deve ser 983 mas ainda não sei muito bem como hei de fazer alguém me pode ajudar

Estas a fazer uma função que irá receber um inteiro e a enviar um float/double (9863,3).

Mas segundo percebi queres algo como isto:

enviar o numero 987;

apagar a posicao 2;

entao:

Podes começar por ver a API do Java:

Mais concretamente, esta classe (por exemplo):

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Integer.html

E depois é pensar.. podes passar esse integer para uma string, percorre-la com um for e se a posicao dada for igual ao indice+1 entao nao guardas essa posição.

Share this post


Link to post
Share on other sites
darky_miguel

ja me safei :D um bocado grande mas foi assim que fiz

static int powers[] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};
private static int apagardigito(int n, int pos) {
	return (n / powers[pos]) * powers[pos - 1] + (n % powers[pos - 1]);
}
}

Share this post


Link to post
Share on other sites
KarlMTC

Eu preferia fazer um ArrayList<Integer> onde fosses add_icionando os %10 do nº até que o resultado fosse 0. Depois era so juntar os nºs tirando o da 3ª posiçao da coleçao. A tua soluçao so vai resultar até certo numero.

Share this post


Link to post
Share on other sites
KarlMTC

Crias uma coleçao onde vais guardando os dígitos (pensando melhor em vez de ArrayList a melhor era um Stack, por a forma de extraer os numeros). Para ir adicionando os dígitos à coleçao tens que recorrer o numero, e para isso vais adicionando o %10 e depois divides para eliminar esse digito do número em questao (Exemplo: 356 % 10 = 6, 356 / 10 = 35).

Repetes o processo até já nao teres digitos no número (até que seja igual a 0). Depois tens que voltar a formar esse número recorrendo a coleçao e multiplicando o digito por a 10^indice. (Exemplo: 356...  3 x 10^2 + 5 x 10^1 + 6 x 10^0). E para finalizar, tens que incluir uma comprovaçao de que o nº a inserir nao seja o indice que passas ao método.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.