Dúvida elementar... como fazer sem usar strings, collections, arrays
14 respostas
Augusto_Br
Bom dia pessoal.
Por favor, eu tenho este exercício para entregar na faculdade. Como o curso é a distância, estou me esforçando para aprender tudo sozinho, mas tem horas que preciso de ajuda (caso alguém possa ajudar, fico eternamente grato).
Tenho isso que resolver:
Write a program which reads from the user three non-negative integers and then prints, using symbols ’*’, a ‘histogram’ of the data represented by the numbers, i.e., three vertical bars, aligned at the bottom, with heights equal to the values of the three numbers.
For example, for numbers 3, 1 and 8 the result should look like this:
Do not use arrays, strings or any other kind of collections.
E onde diz que não pode usar string, collections ou arrays?
Augusto_Br
no final do exercício… por isso até dei um print… realmente não me parece ser fácil =(
estou faz uma semana tentando resolver, mas hoje busquei a comunidade aqui para ver se alguém saberia resolver esse “problema”
Augusto_Br
no final do exercício enfatizou:
Do not use arrays, strings or any other kind of collections.
é coisa para gênio resolver isso? porque vou te falar… essa questão está me deixando meio careca logo de começo
A
AbelBueno
Oi @Augusto_Br
Em que parte do problema você tem dúvidas?
Tem a lógica mas nao sabe implementar em java?
Sabe java mas nao sabe a lógica para isso?
Augusto_Br
comecei o curso essa semana e ainda estou estudando lógica, por isso a minha dificuldade.
fora que estou começando a estudar java também, isso que me dificulta
A
AbelBueno
Tá, vou sugerir uma maneira de fazer isso e você tenta implementar em java:
Pense que na sua tela você tenha várias linhas, e que seu histograma terá o mesmo número de linhas que o maior número digitado pelo usuário (para caber um * por linha).
Já que você vai começar imprimindo pelo maior, você começa a numerar suas linhas do maior para o menor (no exemplo: 8, 7, 6, etc…)
Você tem 3 números, entao você terá 3 colunas por linhas. Você imprime um espaço em branco se o valor daquela coluna for menor que o número da linha e imprime “*” se o valor da coluna for maior ou igual o valor da linha.
Faz sentido?
darlan_machado
Veja, você terá os três números (creio que isso você consiga fazer), certo?
Você não sabe qual deles será o maior, logo, o primeiro passo é definir isso (assim você evita de começar a imprimir logo do primeiro).
Depois, você precisa criar um laço de repetição, que vai se repetir tantas vezes quantas forem necessárias para imprimir todos os asteriscos do maior valor lido.
Augusto_Br
Eu nao sei criar os 3 números… comecei a estudar essa semana Java
Eu assiti algumas aulas de Phython, mas de Java, só instalei o netbeans e estou aqui olhando para ele e vendo como eu vou começar (sou totalmente noob em Java)
por isso tudo que for dito aqui, vou estar aprendendo
Augusto_Br
Quem dera eu ter seu raciocínio =(
Um dia eu quero chegar lá, to ainda no começo
darlan_machado
Então pare de preguiça cara e vá estudar.
O tempo que perdeu aqui já teria feito duas ou três pesquisas, baixado uma apostila da caelum de java básico (java e lógica de programação, se não me engano). Mas, prefere ficar aqui chorando para alguém fazer o exercício (eu fiz, levei 5 minutos).
importjava.io.PrintStream;importjava.util.Scanner;publicclassExemplo{publicstaticvoidmain(String[]args){Exemploprograma=newExemplo();programa.executar();}privatestaticfinalScannerENTRADA=newScanner(System.in);privatestaticfinalPrintStreamSAIDA=System.out;publicvoidexecutar(){SAIDA.println("Informe o primeiro numero:");inta=Integer.parseInt(ENTRADA.nextLine());SAIDA.println("Informe o segundo numero:");intb=Integer.parseInt(ENTRADA.nextLine());SAIDA.println("Informe o terceiro numero:");intc=Integer.parseInt(ENTRADA.nextLine());SAIDA.println("primeiro: "+a);SAIDA.println("segundo: "+b);SAIDA.println("terceiro: "+c);}}
B
blayd2015
essa é uma típica questão de lógica, portanto num é necessário uma linguagem para desenvolve-la…boa sorte
Augusto_Br
Obrigado staroski, comecei a entender a partir do seu código. Quando a gente está no começo, com dúvidas bem bobas, há aqueles que tem paciência e outros que já não tem muita paciência, tipo: você é um preguiçoso, quer tudo pronto etc…
Eu sou muito burro e quanto mais eu estudo, mais asno eu me sinto…
Obrigado de coração pelo “menos julgamento” e “mais parceria” nesse meu caminho humilde do aprendizado… essa faculdade que entrei é japonesa, fica em Varsóvia… então tudo se torna mais puxado… Estou cá estudando e tentando entender cada vírgula que digitou
Augusto_Br
Consegui chegar até aqui, mas está com algum erro… pois eu preciso que apareçam os números exibindo a quantidade de asteriscos na horizontal…e ainda assim consegui fazer aparecer a contagem de apenas um número escolhido =(
importjava.util.Scanner;publicclassHistogram{publicvoiddisplayHistogram(){// Initiate the Read the numbers.System.out.print(“Enter3numbersinasameline:\n”);Scannerin=newScanner(<ahref="http://System.in">System.in</a>);inti,n;for(i=1;i<=5;i++){// Read the next numbern=in.nextInt();
// Display Histogram.// Display the number.System.out.printf("\n%2d ",n);// Display the Stars.for(i=1;i<=n;i++)System.out.print("*");}}