Alguns Exemplos em Java

Documentos relacionados
ÍNDICE. Conjuntos de unidades...7 Leitura de números...8 Leitura em linguagem corrente...8 Leitura por ordens e por classes...8

Leitura e escrita de números - milhões. Leitura e escrita de números - milhões Duzentos e quatro milhões, dois mil e trezentos e três.

Leitura e escrita de números - centenas de milhar. Leitura e escrita de números - centenas de milhar

Possível resolução (Arquitectura VBA Exercícios por resolver)

Triénio 2017_2019 CONSELHO DE SUPERIOR. Secção de voto de BRAGANÇA:

Gramáticas DCG s Linguagem Natural

Tipos Abstractos de Dados

MATEMÁTICA. 1 Escreve em algarismos.

MEDIDA PROVISÓRIA Nº 528, DE 25 DE MARÇO DE Altera os valores constantes da tabela do Imposto sobre a Renda da Pessoa Física.

Planificação de sólidos e tabelas para resolução de tarefas. página: 5 exercício 2. página: 6 exercício 3 página: 6 exercício 4 página: 6 exercício 5

Introdução à Linguagem Java

1 Da aula teórica ao Java

LISTA DE PERMUTAS DE TERRENOS COM O MUNICÍPIO E DE VENDA DE TERRENOS MUNICIPAIS, RESPETIVAS LOCALIZAÇÕES E VALORES - ANO 1998 A 2013

MATEMÁTICA. 1 Escreve os números por extenso de 5 em 5 até

ANEXO V PREÇO UNITÁRIO (R$) DEPENDENTES LEGAIS anos , , anos , , anos ,95 2.

MEDIDA PROVISÓRIA Nº 528, DE 25 DE MARÇO DE 2011

MATEMÁTICA. 1 Observa o quadro. Descobre a sequência de números e completa-os. A B C D E F G H I J K L M N O

Resoluções emitidas ad referendum, para homologação. Conselho Diretor

Recursão e Back-Tracking

Árvores e Mapas. Luís Lopes. Estruturas de Dados DCC-FCUP

Introdução a JAVA. Variáveis, tipos, expressões, comandos e blocos

Introdução a JAVA. Variaveis, tipos, expressões, comandos e blocos

PREFEITURA MUNICIPAL DE MARAGOJIPE CNPJ: / EXTRATO DE CONTRATO

Classes, instâncias e métodos de acesso. prática

Disponível em: <

notas de aula versão 1 - Jerônimo C. Pellegrini notas de aula versão 1 11 de fevereiro de 2011

IO.println(a+" * "+b+" = "+produto); } }

(R ) 1 FREGUESIA DE FAZENDAS DE ALMEIRIM ACTA NÚMERO NOVENTA E NOVE DE DOIS MIL E NOVE

O período de investimento decorre entre e

Universidade Federal de Uberlândia Faculdade de Computação GGI030 Programação Orientada a Objetos 1o. Semestre de 2017 Prof.

Espaços, tempos, quantidades, relações e transformações

Introdução à Linguagem Java

Encargos Financeiros 1º Semestre de Programa de Pós-Graduação Lato Sensu da FGV DIREITO SP (FGVLAW)

< < < < < MATEMÁTICA. 1 Completa a reta graduada com os números que faltam. 2 Completa a sequência. 3 Ajuda o Lucas e escreve por ordem crescente.

Prefeitura Municipal de Monte Santo publica:

Estado do Pará Governo Municipal de Água Azul do Norte PREFEITURA MUNICIPAL DE ÁGUA AZUL DO NORTE

Prefeitura Municipal de Brumado publica:

Exercício. Exercício Semelhante. Solução. Exercícios em Java usando estruturas de controle de fluxo

Instituto de Física Segundo Semestre de Diurno. Prova Substitutiva 15/12/2000

Algoritmos. Estrutura de decisão de múltipla escolha. escolha-caso. switch case. Grupos de Slides No 4. Prof. SIMÃO

Encargos Financeiros 2017 Programa de Pós-Graduação Lato Sensu (GVlaw)

Professores do Ensino Básico - Variante de Educação Física. Disciplina: Matemática Data: Ficha de trabalho: 3

ACTA N.º 04/2016 REUNIÃO EXTRAORDINÁRIA DA JUNTA DE FREGUESIA DE BENAVENTE

Estruturas Compostas Matriz

Mediateca, E.N.P. 9 Portugués

UNIVERSIDADE DA BEIRA INTERIOR

PREFEITURA MUNICIPAL DE ARAPUÃ Estado do Paraná CNPJ/MF: / Rua Presidente Café Filho, s/n Centro CEP: Arapuã/Pr.

PROBLEMATECA GEOMÉTRICOS NUMERAÇÃO

Ficha 1 Noções de sequência e decisão em algoritmia

CONTRATADO: COPEMARI - COOPERATIVA DE TRABALHO E MATERIAIS RECICLAVEIS DE IVAIPORÃ-PR.

RESUMO DO DIÁRIO OFICIAL DA UNIÃO

Tribunal Regional do Trabalho da 18ª Região - 1º Grau Tribunal Regional do Trabalho da 18ª Região - 1º Grau

Exercícios Resolvidos. Java Básico

(Conceito de Variável Indexada, Funções e Procedimentos)

Variáveis Compostas. Vanessa Braganholo

Prefeitura Municipal de Jacobina publica:

Tribunal Judicial de Vila Nova de Gaia Quarto Juízo Cível Processo Especial de Insolvência n.º /11.0 TYVNG

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

MUNICÍPIO DE PAREDES DE COURA ATA N.º 17/ DE AGOSTO DE 2017 DA REUNIÃO ORDINÁRIA DA CÂMARA MUNICIPAL (MANDATO 2013/2017) (Contém 05 páginas)

1ª Lista de Exercícios

Возрастная группа: 3 º ano

Vinte e um mil quinhentos e noventa e oito reais e noventa e dois centavos.

Ata número quarenta e oito Aos treze dias do mês de abril do ano de dois mil e dezoito, pelas doze horas, na sede social, na Rua de Meladas, 380,

Câmara Municipal de Aljezur. Acta nº 26/10

CÂMARA MUNICIPAL DE MAFRA CONTRATO N. 12/2015 REFORÇO DO ESPORÃO DA PRAIA DO SUL - ERICEIRA

INF 1620 P1-13/09/02 Questão 1 Nome:

ACTA N.º 03/2016 REUNIÃO EXTRAORDINÁRIA DA JUNTA DE FREGUESIA DE BENAVENTE

PREFEITURA MUNICIPAL DE RIO PRETO DA EVA/AM EXTRATOS DE CONTRATOS

BCC Programação Orientada a Objectos(POO) Departamento de Computação - UFOP

Exercícios: Vetores e Matrizes

Entrada Processamento Saída

Aula 04. Agregados Homogêneos. Agregados Heterogêneos. Matrizes

Vetores Unimensionais

Introdução a Linguagem C (Parte I) UFPA Sistemas de Informação. Roberto Araujo 2013

Introdução a Programação. Tipos Estruturados de Dados

Criando a Classe Pessoa Exemplo: Crie e modele uma classe que receba o nome, idade e peso de uma Pessoa. Ao final mostre os dados na tela.

MAC 2166 Introdução à Computação para Engenharia

INSTITUTO SUPERIOR TÉCNICO Introdução aos Algoritmos e Estruturas de Dados

RESULTADO DE JULGAMENTO DA LICITAÇÃO TERMO DE HOMOLOGAÇÃO DO PREGÃO PRESENCIAL Nº 9/

Prefeitura Municipal de Mutuípe

Câmara Municipal. Ata nº 29/16. A reunião foi secretariada pelo Chefe de Divisão Administrativa e de Recursos Humanos, José da Silva Gregório

Estado de Mato Grosso Prefeitura Municipal de Itanhangá CNPJ: / Gestão 2009/2012 LEI Nº 222/2010 de 31 de Agosto de 2010

Prefeitura Municipal de Dias d Ávila publica:

Associação Pró-Gestão das Águas da Bacia Hidrográfica do Rio Paraíba do Sul AGEVAP ORÇAMENTO 2015

RESOLUÇÃO Nº 891/ CONFERE

Memorial Descritivo. Unidade Autônoma no. 23 Condomínio Villavista Golf

Prefeitura Municipal de Buritirama publica:

ESTADO MATO GROSSO PREFEITURA MUNICIPAL DE VARZEA GRANDE NOTIFICAÇÃO DE RECEBIMENTO DE RECURSOS FEDERAIS

Métodos Computacionais em Física

MUNICÍPIO DE ALCOBAÇA

Prefeitura Municipal de Palmeira dos Índios publica:

Processamento da informação. Prof. Fabrício Olivetti de França

Departamento de Ciência de Computadores. b) R:

LÓGICA DE PROGRAMAÇÃO (JAVA) VARIÁVEIS. Professor Carlos Muniz

CLÁULAS ECONOMICAS DA CONVENÇÃO COLETIVA DE TRABALHO ESTABELECIDA COM O SINPEFESP E FEPEFI PARA OS ANOS DE 2018/2019

Lição 7 Array em Java

ACTA DA REUNIÃO ORDINÁRIA DA CÂMARA MUNICIPAL DE ALPIARÇA REALIZADA EM 19 DE JANEIRO DE 2000 NÚMERO CINQUENTA E SETE Aos dezanove dias do mês

ACTA N.º 03/2014 REUNIÃO EXTRAORDINÁRIA DA JUNTA DE FREGUESIA DE BENAVENTE

Mestrado em Engenharia Física Tecnológica

Prefeitura Municipal de Mirante publica:

Transcrição:

Alguns Exemplos em Java Fernando Silva & Luís Lopes DCC-FCUP Estruturas de Dados

Problema 1: Dígito mais frequente Exemplo: o número 3435667323 contém: 1 (2), 4 (3), 1 (4), 1 (5), 2 (6) e 1 (7) digitomaisfrequente(3435667323) retorna 3 se existir um empate, deve mostrar o menor dígito. Sugestão: usar um contador por cada dígito (vector com 10 contadores) d=n%10 dá o dígito das unidades; n=n/10 retira dígito das unidades Exemplo 669260267

Problema 1: Dígito mais frequente p u b l i c c l a s s DigitCounterTest { p u b l i c s t a t i c v o i d main ( String [] args ) { i n t most_freq = highestfrequencydigit (669260267); System. out. print (" most frequent -> " + most_freq ); System. out. println (); s t a t i c i n t highestfrequencydigit ( i n t n) { i n t [] counters = new i n t [10]; w h i l e ( n > 0 ) { i n t d = n % 10; counters [d ]++; n /= 10; i n t max = 0; f o r ( i n t i = 1 ; i < counters. length ; i++ ) i f ( counters [i] > counters [ max ] ) max = i; r e t u r n max ;

Problema 2: Histogramas Escrever um método void histograma(int notas[]) que, recebendo como parâmetro um vector de classificações, dados como valores inteiros, produza um histograma de estrelas (*) que indique o número de alunos que obtiveram uma determinada classificação (supor apenas os registos de 0 a 20). Exemplo: dados 12 13 12 17 14 14 18 15 13 15 12 15 deve produzir: 12: *** 13: ** 14: ** 15: *** 17: * 18: * Sugestão: solução parecida com anterior, mas com 21 contadores!

Problema 2: Histogramas c l a s s HistogramTest { p u b l i c s t a t i c v o i d main ( String [] args ) { i n t [] notas = {12,13,12,17,14,14,18,15,13,15,12,15; histogram ( notas ); s t a t i c v o i d histogram ( i n t [] notas ) { i n t [] counters = new i n t [21]; f o r ( i n t i = 0 ; i < notas. length ; i++ ) counters [ notas [i ]]++; f o r ( i n t i = 0 ; i < counters. length ; i++ ) i f ( counters [i] > 0 ) { System. out. print (i + ": "); f o r ( i n t j = 0 ; j < counters [i] ; j++ ) System. out. print ("*"); System. out. println ();

Problema 3: Pontos no plano xy p u b l i c c l a s s Point { p r i v a t e i n t x, y; p u b l i c Point () { x = 0; y = 0; p u b l i c Point ( i n t x0, i n t y0 ) { x = x0; y = y0; p u b l i c double distance ( Point q) { Point p = t h i s ; r e t u r n Math. sqrt ( (p.x - q.x )^2 + (p.y - q.y )^2 ); p u b l i c String tostring () { r e t u r n "( " + x + ", " + y + " )"; Suponhamos que pretendemos ler n pontos no plano e determinar qual deles está mais próximo da origem. Como fazer?

Problema 3: Pontos no plano xy import java. util.*; p u b l i c c l a s s PointTest { p u b l i c s t a t i c v o i d main ( String [] args ) { Scanner stdin = new Scanner ( System. in ); i n t np = stdin. nextint (); Point [] ap = new Point [ np ]; f o r ( i n t i = 0 ; i < np ; i++ ) { i n t x = stdin. nextint (); i n t y = stdin. nextint (); ap[ i] = new Point (x, y); Point q = closesttoorigin ( ap ); System. out. println (" closest to origin -> " + q);

Problema 3: Pontos no plano xy p u b l i c s t a t i c Point closesttoorigin ( Point [] ap) { Point closest = ap [0]; Point origin = new Point (0,0); double minimum = closest. distance ( origin ); f o r ( i n t i = 1 ; i < ap. length ; i++ ) { double dist = ap[ i]. distance ( origin ); i f ( dist < minimum ) { closest = ap[ i]; minimum = dist ; r e t u r n closest ;

Problema 4: Vectores multidimensionais p u b l i c c l a s s Vector { p r i v a t e i n t dim ; // dimension of the vector p r i v a t e double [] data ; // array of vector s components p u b l i c Vector ( i n t d) { dim = d; data = new double [ d]; p u b l i c Vector ( double a) { dim = a. length ; data = new double [ dim ]; f o r ( i n t i = 0; i < dim ; i ++) data [i] = a[i]; p u b l i c i n t dimension () { r e t u r n dim ;

Problema 4: Vectores multidimensionais p u b l i c double dot ( Vector v) { Vector u = t h i s ; double sum = 0.0; f o r ( i n t i = 0; i < dim ; i ++) sum = sum + (u. data [i] * v. data [i ]); r e t u r n sum ; p u b l i c double norm () { Vector u = t h i s ; r e t u r n Math. sqrt (u. dot (u )); p u b l i c Vector plus ( Vector v) { Vector u = t h i s ; Vector w = new Vector ( dim ); f o r ( i n t i = 0; i < dim ; i ++) w. data [i] = u. data [i] + v. data [i]; r e t u r n w;

Problema 4: Vectores multidimensionais p u b l i c s t a t i c v o i d main ( String [] args ) { double [] xdata = { 1.0, 2.0, 3.0, 4.0 ; double [] ydata = { 5.0, 2.0, 4.0, 1.0 ; Vector x = new Vector ( xdata ); Vector y = new Vector ( ydata ); StdOut. println (" x = " + x); StdOut. println (" y = " + y); Vector z = x. plus ( y); StdOut. println (" x = " + x. norm ()); StdOut. println (" <x, y> = " + x. dot (y ));

Problema 5: Números complexos p u b l i c f i n a l c l a s s Complex { p r i v a t e f i n a l double re; // real p r i v a t e f i n a l double im; // imaginary // constructor that takes in rectangular coordinates p u b l i c Complex ( double re, double im) { t h i s.re = re; t h i s.im = im; // accessor methods p u b l i c double re () { r e t u r n re; p u b l i c double im () { r e t u r n im;

Problema 5: Números complexos // return this Complex number plus b p u b l i c Complex plus ( Complex b) { Complex a = t h i s ; r e t u r n new Complex (a.re () + b.re (), a.im () + b.im ()); // return this Complex number minus b p u b l i c Complex minus ( Complex b) { Complex a = t h i s ; r e t u r n new Complex (a.re () - b.re (), a.im () - b.im ()); // return this Complex number times b p u b l i c Complex times ( Complex b) { Complex a = t h i s ; r e t u r n new Complex (a.re () * b.re () - a.im () * b.im (), a.re () * b.im () + a.im () * b.re () );

Problema 5: Números complexos p u b l i c c l a s s TestComplex { p u b l i c s t a t i c v o i d main ( String [] args ) { Complex a = new Complex (5.0, 6.0); System. out. println ("a = " + a); Complex b = new Complex ( -2.0, 3.0); System. out. println ("b = " + b); Complex c = b. times ( a); System. out. println ("c = " + c); Complex d = new Complex (0.0, 0.0); System. out. println ("d = " + d); Complex e = c. divide ( d); System. out. println ("e = " + e);

Problema 5: Números complexos (alternativa) p u b l i c f i n a l c l a s s Complex { p r i v a t e f i n a l double re; // real p r i v a t e f i n a l double im; // imaginary // constructor that takes in rectangular coordinates p u b l i c Complex ( double re, double im) { t h i s.re = re; t h i s.im = im; // accessor methods p u b l i c double re () { r e t u r n re; p u b l i c double im () { r e t u r n im; // string representation p u b l i c String tostring () { r e t u r n re () + " + " + im () + "i";

Problema 5: Números complexos p u b l i c c l a s s ComplexMath { // return this Complex number plus b p u b l i c s t a t i c Complex plus ( Complex a, Complex b) { r e t u r n new Complex (a.re () + b.re (), a.im () + b.im ()); // return this Complex number minus b p u b l i c s t a t i c Complex minus ( Complex a, Complex b) { r e t u r n new Complex (a.re () - b.re (), a.im () - b.im ()); // return this Complex number times b p u b l i c s t a t i c Complex times ( Complex a, Complex b) { r e t u r n new Complex (a.re () * b.re () - a.im () * b.im (), a.re () * b.im () + a.im () * b.re () );

Problema 5: Números complexos p u b l i c c l a s s TestComplex { p u b l i c s t a t i c v o i d main ( String [] args ) { Complex a = new Complex (5.0, 6.0); System. out. println ("a = " + a); Complex b = new Complex ( -2.0, 3.0); System. out. println ("b = " + b); Complex c = ComplexMath. times (a, b); System. out. println ("c = " + c); Complex d = new Complex (0.0,0.0); System. out. println ("d = " + d); Complex e = ComplexMath. divide (c, d); System. out. println ("e = " + e);

Problema 6: Média, variância, desvio padrão p u b l i c c l a s s OnePass { p r i v a t e i n t N = 0; p r i v a t e double sum = 0.0; p r i v a t e double sum2 = 0.0; p u b l i c v o i d add ( double value ) { sum = sum + value ; sum2 = sum2 + value * value ; N ++; p u b l i c double mean () { r e t u r n sum / N; p u b l i c double variance () { r e t u r n (N* sum2 - sum * sum ) / (N*(N -1)); p u b l i c double stddev () { r e t u r n Math. sqrt ( variance ());

Problema 6: Média, variância, desvio padrão // test client p u b l i c s t a t i c v o i d main ( String [] args ) { Scanner stdin = new Scanner ( System. in ); OnePass dataset = new OnePass (); w h i l e (! stdin. hasnextdouble ()) dataset. add ( stdin. nextdouble ()); double mean = dataset. mean (); double stddev = dataset. stddev (); double lo = mean - 1.96 * stddev ; double hi = mean + 1.96 * stddev ; // print results System. out. println (" mean = " + mean ); System. out. println (" sample stddev = " + stddev ); System. out. print (" 95% confidence interval = "); System. out. println ("[ " + lo + ", " + hi + " ]");

Problema 6: Multiplicação de matriz por vector Multiplicação de uma vector a[n][m] por um vector u[m] para dar v[n]: i.e. v i = M 1 j=0 a ij u j (0 i < N)

Problema 6: Multiplicação de matriz por vector c l a s s MatrixVectorProductTest { p u b l i c s t a t i c v o i d main ( String [] args ) { i n t [][] a = {{1,2,3,{4,5,6; i n t [] u = {1,2,3; i n t [] v = matrixvectormult (a,u); f o r ( i n t i = 0 ; i < v. length ; i++ ) System. out. print (v[i] + " "); System. out. println (); s t a t i c i n t [] matrixvectormult ( i n t [][] a, i n t [] u) { i n t [] v = new i n t [a. length ]; f o r ( i n t i = 0 ; i < v. length ; i++ ) { v[ i] = 0; f o r ( i n t j = 0 ; j < u. length ; j++ ) v[i] += a[i][j] * u[j]; r e t u r n v;

Problema 7: Triângulo de Pascal O triângulo de Pascal pode ser visto como uma matriz triangular inferior: 1 ou 1 <-- lin 0 1 1 1 1 <-- lin 1 1 2 1 1 2 1 <-- lin 2 1 3 3 1 1 3 3 1 <-- lin 3 1 4 6 4 1 1 4 6 4 1 <-- lin 4 1 5 10 10 5 1 1 5 10 10 5 1 <-- lin 5 Cada valor é a soma dos dois valores mais próximos da linha anterior. A representação corresponde a uma matriz triangular inferior.

Problema 7: Triângulo de Pascal Método para calcular as linhas do Triângulo de Pascal, usando uma matriz apenas dimensionada triangularmente: p u b l i c c l a s s PascalTriangleTest { i n t [][] triangulopascal ( i n t n) { i n t [][] tp = new i n t [n ][]; f o r ( i n t i = 0 ; i < n ; i++ ) tp[i] = new i n t [i +1]; f o r ( i n t i = 0 ; i < n ; i++ ) { tp[ i ][0] = 1; f o r ( i n t j = 1 ; j < i ; j++ ) tp[i][j] = tp[i -1][j -1] + tp[i -1][ j]; tp[ i][ i] = 1; r e t u r n tp;

Problema 7: Triângulo de Pascal Método para calcular as linhas do Triângulo de Pascal, usando uma matriz apenas dimensionada triangularmente: import java. util.*; p u b l i c c l a s s PascalTriangleTest { p u b l i c s t a t i c v o i d main ( String [] args ) { Scanner arg = new Scanner ( args [0]); i n t n = arg. nextint (); i n t [][] tp = computepascaltriangle (n); f o r ( i n t i = 0 ; i < tp. length ; i++ ) { f o r ( i n t j = 0 ; j <= i ; j++ ) System. out. print (tp[i][j] + " "); System. out. println ();

Problema 7: Dimensionamento matriz triangular inferior Ilustração da matriz triangular inferior que representa o triângulo de Pascal (só estamos a reservar memória para o número correcto de elementos na linha):

Problema 8: Escrita de Números por Extenso Dado um número n : 0 n < 1000000, escreva um programa que traduza n para texto. Exemplos: 100 = cem 105 = cento e cinco 1000 = mil 12345 = doze mil trezentos e quarenta e cinco 10045 = dez mil e quarenta e cinco 10000 = dez mil 10020 = dez mil e vinte

Problema 8: Sugestões Como lidar com números menores que 100, i.e. números com dois dígitos N = d 1 d 2? Se d 1 for 0? números de 0 a 9 i.e. temos strings de zero a nove String unidades[]={"zero",,"nove"; indexamos o vector com o valor de d2 Se d 1 for 1? números de 10 a 19 i.e. temos strings de dez a dezanove String dez_dezanove[]={"dez",,"dezanove"; Se d 2 for 0? temos números números 20, 30,, 90. String dezenas[]={"","","vinte",,"noventa"; Caso geral com os dois dígitos temos números números como 25, 33, dezenas[d1] + " e " + unidades[d2]

Problema 8: método converte2() import java. util.*; c l a s s Number2TextTest { s t a t i c String unidades []={ " zero ", "um", " dois ", " tres ", " quatro ", " cinco ", " seis ", " sete ", " oito ", " nove " ; s t a t i c String dez_dezanove []={ " dez "," onze "," doze "," treze ", " catorze "," quinze "," dezasseis "," dezassete ", " dezoito ", " dezanove " ; s t a t i c String converte2 ( i n t n) { i n t d1= n /10; i n t d2= n %10; i f (d1 ==0) // 0X r e t u r n unidades [d2 ]; i f (d1 ==1) // 1X r e t u r n dez_dezanove [d2 ]; i f (d2 ==0) // X0 r e t u r n dezenas [d1 ]; // XY r e t u r n dezenas [d1] + " e " + unidades [d2 ];

Problema 8: método converte3() Como converter números menores que 1000? s t a t i c String centenas []={ ""," cento ", " duzentos ", " trezentos ", " quatrocentos ", " quinhentos ", " seiscentos ", " setecentos ", " oitocentos ", " novecentos " ; s t a t i c String converte3 ( i n t n) { i n t d1= n /100; i n t d2= n %100; i f (d1 ==0) // se menor que 100 r e t u r n converte2 (d2 ); i f (d1 ==1 && d2 ==0) // se 100 r e t u r n " cem "; i f ( d2 ==0) // se múltiplo de 100 r e t u r n centenas [d1 ]; r e t u r n centenas [d1] + " e " + converte2 (d2 );

Problema 8: método converte6() Como converter números menores que 1000000? s t a t i c String ligar ( i n t n) { // adiciona "e" se for menor que 100 ou multiplo de 100 r e t u r n (n <100 n %100==0)? " e " : " "; s t a t i c String converte6 ( i n t n) { i n t d1=n /1000; i n t d2=n %1000; i f (d1 ==0) // se menor que 1000 r e t u r n converte3 (d2 ); i f (d1 ==1 && d2 ==0) // 1000 r e t u r n " mil "; i f (d1 ==1) // "mil e 0xx" "mil xxx" r e t u r n " mil " + ligar (d2) + converte3 (d2 ); i f (d2 ==0) // 10000 ou 600000 r e t u r n converte3 (d1) + " mil "; r e t u r n converte3 (d1) + " mil " + ligar (d2) + converte3 (d2 );

Problema 8: método main() Leitura do input e escrita: p u b l i c s t a t i c v o i d main ( String args []) { Scanner stdin = new Scanner ( System. in ); w h i l e ( stdin. hasnextint ()) { i n t number = stdin. nextint (); System. out. printf ("%s\n", converte6 ( number ));