GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Como elevar um numero?


#1

Oi galera será que alguem sabe retornar na saida do monitor um numero elevado a outro! eu estou desenvolvendo um algoritimo em que o expoente de um dado numero va de 0 a 100, e queria que fosse mostrado no monitor como deste modo: 3³! sera que alguem pode me ajudar?


#2

ops... vc ker um caracter ?


#3

[quote=Lavieri]

double resultado = Math.pow(2,9); //2^9

[/quote]

Também pensei q fosse isso que ele estava querendo, mas depois de ler o post, vi que ele quer colocar uma letra sobrescrita na outra, igual vc faz no Word. Uma opção acochambrada seria usar dois labels, uma para o número e outro para o expoente, colocando uma fonte menor no expoente e posicionando o mesmo logo acima do label do número. Qdo eu fiz programa com saida no próprio console, eu usava o próprio acento circunflexo para denotar a potencia...


#4

Na saída do monitor que você diz é "console" (ou seja, imprimir naquelas letras brancas em fundo preto) ou em uma tela gráfica (JFrame)?

No primeiro caso, você tem de fazer uns truques com espaçamento, algo como:

 "            100
 "1.0000001      = 1.0001000049501617039213002887121

No segundo caso, use um JLabel e o HTML , algo como

"<html>1.0000001<sup>100</sup>=1.0001000049501617039213002887121</html>"

#5

Truques com espaçamentos ou gambiarra espacial?

Sorry.. nao acrescentou nada ao tópico mas eu tinha que lançar essa.


#6

No tempo em que eu estava na faculdade havia um sistema que rodava no mainframe, chamado REDUCE. Ele imprimia fórmulas matemáticas exatamente desse jeito, já que a saída dele era o console (na verdade um terminal IBM 3270).

"           3    2      ---------
"result := x  + y  - 4 V x  +  y  ;
"                         4

http://www.uni-koeln.de/REDUCE/intro/section3_10.html#SECTION00010000000000000000

Acredite se quiser...


#7

Truques com espaçamento mesmo Mark, não tem nada de gambiarra pois não existe outra forma de fazer isso com telas de console/tty. Mesmo que use frameworks pra ter ajudar, eles farão o mesmo tipo de coisa.

Edit:

Há uma forma: Se o console usar Unicode, há caracteres de 0 a 9 nele que escrevem como se fossem sup ou sub.


#8

Bruno Laturner!

isso eu vou rodar no console!!

mas com o unicode nao tem jeito de fazer elevar automaticamente, teria que fazer uma sequencia de teste pra saber quanto vale a variavel e depois usar o codigo unicode:

por exemplo

if(n = 3) {

System.out.print(n +"\u00b3");
}

assim fica dificil pois teria que fazer 100 testes!!!

entendeu?


#9

No console acho infinitamente mais fácil escrever assim:

1,00001 ^ 1 = 1,00001
1,00001 ^ 2 = 1,0000200001
1,00001 ^ 3 = 1,000030000300001
1,00001 ^ 4 = 1,00004000060000400001
1,00001 ^ 5 = 1,0000500010000100000500001
1,00001 ^ 6 = 1,000060001500020000150000600001
1,00001 ^ 7 = 1,000070002100035000350002100007
1,00001 ^ 8 = 1,000080002800056000700005600028
...
1,00001 ^ 100 = 1,0010004951617392197799442124942

Não fique inventando frescuras. No console os caracteres Unicode superiores a 127 normalmente não aparecem direito. Portanto nem adianta usar aqueles caracteres Unicode que são os dígitos, só que como expoentes.


#10

Para exibir no console.

System.out.println("10\u00B3");

Abração! :smile:


#11

http://en.wikipedia.org/wiki/Unicode_subscripts_and_superscripts

Para 1, é 0xB9.

Para 2-3, some 0x32 e 0x33 com 0x80 para dar 0xB2 e 0cB3.

Para 0, 4-9, some 0x30 e 0x34-0x39 com 0x2040 para dar 0x2070 e 0x2074-0x2079.

Observação:

Só funciona se o console for Unicode e se a fonte para escrever tiver esses caracteres, senão vai mostrar um monte de ? ou quadradinhos.


#12

Ahh.. eu tava só brincando e avisei isso. É que o trocadilho "Truque com espaçamento" e "Gambiarra espacial" me parecia engraçado. Até antes de postar.
:oops:


#13

Mais outra forma. Um amigo aqui do trabalho me mostrou.

JLabel l = new JLabel("<html>Teste <font color='red'><b>negrito A<sub>2</sub> 10<sup>23</sup></b></font>");
		JOptionPane.showMessageDialog(null, l);

#14