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.
Alguém pode me ajudar
E onde diz que não pode usar string, collections ou arrays?
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”
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
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?
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
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?
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.
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
Quem dera eu ter seu raciocínio =(
Um dia eu quero chegar lá, to ainda no começo
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).
Só para você ver como é fácil: veja
Deveria aprender Java e não a usar o NetBeans.
import java.io.PrintStream;
import java.util.Scanner;
public class Exemplo {
public static void main(String[] args) {
Exemplo programa = new Exemplo();
programa.executar();
}
private static final Scanner ENTRADA = new Scanner(System.in);
private static final PrintStream SAIDA = System.out;
public void executar() {
SAIDA.println("Informe o primeiro numero:");
int a = Integer.parseInt(ENTRADA.nextLine());
SAIDA.println("Informe o segundo numero:");
int b = Integer.parseInt(ENTRADA.nextLine());
SAIDA.println("Informe o terceiro numero:");
int c = Integer.parseInt(ENTRADA.nextLine());
SAIDA.println("primeiro: " + a);
SAIDA.println("segundo: " + b);
SAIDA.println("terceiro: " + c);
}
}
essa é uma típica questão de lógica, portanto num é necessário uma linguagem para desenvolve-la…boa sorte
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
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 =(
public class Tester {
public static void main(String[] args)
{
Histogram h = new Histogram();
h.displayHistogram();
h = null;
}
}
import java.util.Scanner;
public class Histogram {
public void displayHistogram()
{
// Initiate the Read the numbers.
System.out.print(“Enter 3 numbers in a same line:\n”);
Scanner in = new Scanner(System.in);
int i, n;
for(i=1; i<=5; i++)
{
// Read the next number
n = 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("*");
}
}
}