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

Peso e altura

#1

Boa Noite, gostaria de pedir ajuda para passar esse código em portugol para java

var
    c: inteiro
    nome:vetor[1..2]de caractere
    h: vetor[1..2]de real
    p: vetor[1..2]de real
    mh: real
    mp: real
    aux, aux2: inteiro
inicio
     enquanto (c < 2) faca
     c <- c + 1
     escreva("NOME: ")
     leia(nome[c])
     escreva("PESO: ")
     leia(p[c])
     escreva("ALTURA: ")
     leia(h[c])
     limpatela
       Se(h[c] > mh) entao
       mh <- h[c]
       aux <- c
        Se(p[c] > mp) entao
       mp <- p[c]
       aux2 <- c
        fimse
       fimse
     fimenquanto
     escreval("O maior peso é de ", nome[aux2], " pesando: ", mp, "Kg")
     escreval("A maior altura é de ", nome[aux], "medindo: ", mh, "m")
fimalgoritmo

desde já eu agradeço muito mesmo.Obrigado

0 Likes

#2

E qual a sua dificuldade em específico? Já tentou? Se sim, mostre seu código, e onde teve dificuldade.

Só postar o que quer que seja feito dá a impressão que você quer quer a gente faça pra você, o que não é legal.

Abraço.

0 Likes

#3

Você esta 100% correto desculpe por ser tão rude.

public static void main(String[] args) {
        // 1 posição
        int c;
        String[] nome = new String[1];
        Double[] h = new Double[2];   
        Double[] p = new Double[2];
       float mh;
       float mp;
       int aux, aux2;
       Scanner console = new Scanner( System.in );
       c = Integer.parseInt(console.nextLine());; 
    
       while (c < 2) {
System.out.println)(c <- c + 1);
       }   
System.out.print("NOME: ");
nome[c] = Integer.parseInt(console.nextLine());
System.out.print("PESO: ");
p[c] = Double.parseDouble(console.nextLine());
System.out.print("ALTURA: ");
h[c] = Double.parseDouble(console.nextLine());

mh = Float.parseFloat(console.nextLine());
mp = Float.parseFloat(console.nextLine());
aux = Integer.parseInt(console.nextLine());
aux2 = Integer.parseInt(console.nextLine());

if (h[c] > mh) {
if ( mh <- h[c])
if (aux <- c)

if (p[c] > mp) {
if (mp <- p[c])
if (aux2 <- c))
}
}
 
System.out.println("O maior peso é de "+ nome[aux2]+ " pesando: "+ mp+ "Kg"); 
System.out.println("A maior altura é de "+ nome[aux]+ "medindo: "+ mh+ "m");

    }
}

esse e meu código (código que estou tentando fazer), bem esta dando erro em
System.out.println)(c <- c + 1); também em nome[c] = Integer.parseInt(console.nextLine()); é também
if (aux2 <- c))
Por favor peço a ajuda de vocês desde já, muito obrigado.

0 Likes

#4

Se você souber, grave as informações em um arquivo (documento) ou em um banco de dados.
Em SQL vc pode usar Max (Count)
Dê uma pesquisada sobre
depois é só retornar o valor

vlew

0 Likes

#5

como assim poderia me explicar melhor ? pf

0 Likes

#6

Ao invés de tentar converter o código linha por linha de forma idêntica, você precisa entender a lógica do algoritmo e recriá-la em Java, fazendo adaptações.

Pelo que entendi, esse algoritmo compara o peso e altura de 2 pessoas, determinando qual pesa mais e qual é mais alta, certo?

Essa parte abaixo não está clara. O que esse código faria?

while (c < 2) {
  System.out.println)(c <- c + 1);
}   

O java não tem um operador <-, então você precisa usar um operador equivalente ( que seria o igual = ).

Abraço.

0 Likes

#7

hum… certo fiz a modificação e fico assim

    public static void main(String[] args) {
        // 1 posição
        int c;
        String[] nome = new String[1];
        Double[] h = new Double[2];   
        Double[] p = new Double[2];
       double mh;
       double mp;
       int aux, aux2;
       Scanner console = new Scanner( System.in );
       c = Integer.parseInt(console.nextLine());

       while (c < 2) {
System.out.println(c = c + 1);
       }   
System.out.print("NOME: ");
nome[c] =console.nextLine(); // String
System.out.print("PESO: ");
p[c] = Double.parseDouble(console.nextLine());
System.out.print("ALTURA: ");
h[c] = Double.parseDouble(console.nextLine());

mh =  Double.parseDouble(console.nextLine()); // double
mp =  Double.parseDouble(console.nextLine()); // double
aux = Integer.parseInt(console.nextLine());
aux2 = Integer.parseInt(console.nextLine());

if (h[c] > mh) {
if ( mh = h[c])
if (aux = c)

if (p[c] > mp) {
if (mp = p[c])
if (aux2 = c))
}
}

System.out.println("O maior peso é de "+ nome[aux2]+ " pesando: "+ mp+ "Kg"); 
System.out.println("A maior altura é de "+ nome[aux]+ "medindo: "+ mh+ "m");

    }
}

mais agora as unicas linhas que estão dando erro são

if ( mh = h[c])
        if (aux = c)

E

if (mp = p[c])
if (aux2 = c))

fala que eu estou tentando converter double cannot be converted to boolean e int cannot be converted to boolean o que devo fzer por quer já troquei varias vezes e ainda nada ??

0 Likes

#8

Comparações em Java são feitas com ==, não com =, que é atribuição. Troque

if ( mh = h[c])

por

if ( mh == h[c])

E assim por diante, em toda as comparações.

Abraço.

0 Likes

#9

certo, muito obrigado por essa ajuda com o “==”

public static void main(String[] args) {
    // 1 posição
    int c;
    String[] nome = new String[1];
    Double[] h = new Double[2];   
    Double[] p = new Double[2];
   double mh;
   double mp;
   int aux, aux2;
   Scanner console = new Scanner( System.in );
   c = Integer.parseInt(console.nextLine());

   while (c < 2) {
System.out.println(c = c + 1);
   }   
System.out.print("NOME: ");
nome[c] =console.nextLine(); // String
System.out.print("PESO: ");
p[c] = Double.parseDouble(console.nextLine());
System.out.print("ALTURA: ");
h[c] = Double.parseDouble(console.nextLine());

mh =  Double.parseDouble(console.nextLine()); // double
mp =  Double.parseDouble(console.nextLine()); // double
aux = Integer.parseInt(console.nextLine());
aux2 = Integer.parseInt(console.nextLine());

if (h[c] > mh) {
if ( mh == h[c])
if (aux == c)

if (p[c] > mp) {
if (mp == p[c])
if (aux2 == c))
}
}

System.out.println("O maior peso é de "+ nome[aux2]+ " pesando: "+ mp+ "Kg"); 
System.out.println("A maior altura é de "+ nome[aux]+ "medindo: "+ mh+ "m");

}
}

ele fico assim agora o unico erro que tem agora e “}” , que e

if (aux2 == c))
} _--------- ESSAS 2 BARRAS
}

agora só isso da erro e eu ja tirei coloquei mais continua com erro poderia me ajudar
?

0 Likes

#10

alguém poderia me ajudar, ainda não consegui resolver isso, por favor me ajudem.
:sweat::sweat::weary::tired_face:
vou ficar muito grato mesmo, já sou grato pela ajuda de antes, mas sou iniciante e não tenho professor para me ajudar, estou tentando aprender, mas ainda acho muito difícil, sei que pra vocês deve ser um erro besta mas, por favor me ajuda

0 Likes

#11

Você está fechando blocos com }, mas aparentemente não os abriu anteriormente. E não tem nenhum comando antes desses } Para que esses ifs encadeados que não fazem nada?

Você está tentando programar por tentativa e erro, quando deveria entender o que o código faz e adaptá-lo para Java, não simplesmente traduzir linha por linha. Foi isso que te disse anteriormente.

Abraço.

0 Likes

Código peso e e altura
#12

Primeiro vamos indentar o algoritmo em portugol pra ficar mais claro de entender o que ele faz:

var
    c:         inteiro
    nome:      vetor[1..2] de caractere
    h:         vetor[1..2] de real
    p:         vetor[1..2] de real
    mh:        real
    mp:        real
    aux, aux2: inteiro

inicio
    enquanto (c < 2) faca
        c <- c + 1
        escreva("NOME: ")
        leia(nome[c])
        escreva("PESO: ")
        leia(p[c])
        escreva("ALTURA: ")
        leia(h[c])
        limpatela
        Se (h[c] > mh) entao
            mh <- h[c]
            aux <- c
            Se (p[c] > mp) entao
                mp <- p[c]
                aux2 <- c
            fimse
        fimse
    fimenquanto
    escreval("O maior peso é de ", nome[aux2], " pesando: ", mp, "Kg")
    escreval("A maior altura é de ", nome[aux], "medindo: ", mh, "m")
fimalgoritmo

Agora fica bem mais fácil de entender e reescrever um código em outra linguagem.
Abaixo um exemplo em Java:

import java.io.PrintStream;
import java.util.Scanner;

public class Programa {

    /**
     * Ponto de entrada do programa
     */
    public static void main(String[] args) {
        try {
            Programa algoritmo = new Programa();
            algoritmo.inicio();
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

    /**
     * Aqui é o início da execução do algoritmo
     */
    public void inicio() {
        int c = -1;
        String[] nome = new String[2];
        double[] h = new double[2];
        double[] p = new double[2];
        double mh = 0;
        double mp = 0;
        int aux = 0;
        int aux2 = 0;

        // c é usado pra acessar as posições dos vetores
        // em Java a primeira posição do vetor é 0, a segunda é 1 e assim por diante
        while (c < 1) {
            c = c + 1;
            escreva("NOME: ");
            nome[c] = leiaString();
            escreva("PESO: ");
            p[c] = leiaDouble();
            escreva("ALTURA: ");
            h[c] = leiaDouble();
            limpatela();
            if (h[c] > mh) {
                mh = h[c];
                aux = c;
                if (p[c] > mp) {
                    mp = p[c];
                    aux2 = c;
                }
            }
        }
        escreval("O maior peso é de " + nome[aux2] + " pesando: " + mp + " Kg");
        escreval("A maior altura é de " + nome[aux] + " medindo: " + mh + " m");
    }

    /*
     * Abaixo estão alguns métodos para deixar o código mais legível
     */

    private final Scanner entrada = new Scanner(System.in);
    private final PrintStream saida = System.out;

    private void escreva(String mensagem) {
        saida.print(mensagem);
    }

    private void escreval(String mensagem) {
        saida.println(mensagem);
    }

    private double leiaDouble() {
        return Double.parseDouble(entrada.nextLine());
    }

    private String leiaString() {
        return entrada.nextLine();
    }

    private void limpatela() {
        // Java não possui uma forma nativa de limpar a tela
        // no Windows dá pra fazer a gambiarra abaixo
        // isso não funciona dentro de IDEs, só rodando no prompt de comando
        String nomeSistema = System.getProperty("os.name").toLowerCase();
        if (nomeSistema.contains("windows")) {
            try {
                ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c", "cls");
                processBuilder.inheritIO();
                Process process = processBuilder.start();
                process.waitFor();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
0 Likes