Trabalho de Java

Olá, estou iniciando em java e estou com uma atividade e não consigo resolver, se caso alguém possa me ajudar, agradeço!

Todo ano, os habitantes da Mlogônia, apesar das crises internas, reúnem-se em torno de um esporte que é a paixão nacional: as corridas de carros. A Grande Corrida anual é um enorme evento organizado pela Associação de Corridas da Mlogônia (ACM), sendo amplamente televisionado e reportado em jornais e revistas de todo o país. Os resultados da corrida são tema principal das rodas de conversa por semanas.

Por bastante tempo, os resultados da Grande Corrida eram compilados manualmente. Observadores especializados iam à pista medir o tempo de cada um dos N carros, numerados de 1 a N, em cada uma das M voltas, anotando então os resultados em tabelas para posterior análise por parte das equipes e dos jornalistas. Muitos erros eram introduzidos nesse processo, e a organização decidiu informatizar todo o sistema.

A ACM percebeu que o esforço necessário para a construção do sistema seria grande, e optou por contar com a ajuda de uma equipe de programadores. Percival foi contratado para escrever a parte do software que determina quais foram os carros vencedores, mas está com dificuldades e pede sua ajuda. A sua tarefa, neste problema, é determinar os três carros melhor colocados, fornecidos os tempos que cada carro levou para completar cada volta da corrida.

ENTRADA

A primeira linha da entrada contém dois inteiros N e M representando o número de carros e o número de voltas da corrida, respectivamente.

Cada uma das N linhas seguintes representa um carro: a primeira linha representa o primeiro carro, a segunda linha representa o segundo carro, e assim por diante.

Cada linha contém M inteiros representando os tempos em cada volta da corrida: o primeiro inteiro é o tempo da primeira volta, o segundo inteiro é o tempo da segunda volta, e assim por diante.

Garante-se que não houve dois carros que gastaram o mesmo tempo para completar a corrida inteira.

SAÍDA

A saída consiste de três linhas, contendo um único inteiro cada. A primeira linha contém o número do carro que ganhou a corrida, a segunda contém o número do segundo colocado e a terceira contém o número do terceiro colocado.

RESTRIÇÕES

• 3 <= N <= 100
• 1 <= M <= 100
• 1 <= qualquer número da entrada que represente o tempo de uma volta <= 10E6.

INFORMAÇÕES SOBRE A PONTUAÇÃO

• Em um conjunto de casos de teste que totaliza 20 pontos, N = 3;
• Em um conjunto de casos de teste que totaliza 20 pontos, M = 1;

EXEMPLOS

Entrada Saída
3 1

1
2
3|1
2
3|

Entrada Saída
5 2

3 7
2 5
1 1
15 2
2 2|3
5
2|

Neste exemplo, existem 5 carros numa corrida de duas voltas. Os tempos de cada carro em cada volta foram como na tabela a seguir.

Volta 1 Volta 2 Tempo total
Carro 1

Carro 2
Carro 3
Carro 4
Carro 5|3
2
1
15
2|7
5
1
2
2|10
7
2
17
4|

Sendo assim, o vencedor foi o carro 3 (com um tempo total de 2), seguido pelo carro 5 (com um tempo total de 4) e pelo carro 2 (com um tempo total de 7).m

Fera, não adianta se justificar dizendo que é iniciante e que não conseguiu fazer. Mostre o que já fz, se é que fez algo.
Faça perguntas pontuais, exemplo: como eu faço para imprimir uma mensagem de erro?

1 curtida

Desculpa, sou mal em interpretação, li várias vezes, porém estou com dificuldade para iniciar o algoritmo, aprendemos poucas coisas sobre java, estamos no início, alguns me indicaram um vetor, outros o comando split.

Cara, isso não é interpretação, é expressão.
O que você quer fazer? Mostre o teu código, organize teu pensamento e, sim, crie um algoritmo com o que foi dado como enunciado.

@darlan_machado ele quis dizer que está com dificuldade em interpretar o que o enunciado está pedindo, é interpretação mesmo que ele quis dizer.

@BraianB Também tive dificuldade pra entender o que a questão pedia. Na minha opinião, para iniciantes, deveria-se passar exercicios que possam ser explicados e entendidos numa única leitura. Neste caso vc já tem que lutar com a dificuldade na linguagem Java e ainda com a dificuldade de interpretar o problema.

Interpretar problema é uma habilidade importante, mas colocar isso num exercicio pra iniciante eu acho meio ruim. Mas enfim, vou tentar te ajudar baseado na forma como eu entendi seu problema, ok?

Sobre as quantidades

N representa a quantidade de carros que estão participando da corrida. Pode haver um mínimo de 3 e um máximo de 100 participantes.

M representa a quantidade de voltas que pode ser no minimo 1 e no máximo 100.

E o tempo de cada volta pode ser no minimo 1 e no máximo 10E6.

Passos

Primeiro seu programa vai pedir pro usuário digitar 2 números separados por um espaço. O primeiro número é a quantidade de carros participantes e o segundo é a quantidade de voltas da corrida.

Depois seu programa vai pedir pro usuario digitar o tempo de cada volta de cada carro. Os tempos vão vir separadas por um espaço.

Exemplo

Bom, eu fiz um exemplo de como pode ser feito essa primeira etapa de entrada de dados e espero que te ajude:

import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    
    System.out.print("Digite a quantidade de carros seguido pelo número de voltas: ");
    
    String[] entrada = scan.nextLine().split(" ");
    int quantidadeDeCarros = Integer.parseInt(entrada[0]);
    int quantidadeDeVoltas = Integer.parseInt(entrada[1]);
    int[] tempoTotalDeCadaCarro = new int[quantidadeDeCarros];

    for(int i = 0; i < quantidadeDeCarros; i++) {
      System.out.printf("Digite o tempo das %d voltas do carro %d: ", quantidadeDeVoltas, i + 1);

      String[] tempoDeCadaVolta = scan.nextLine().split(" ");

      int tempoTotal = 0;

      for (int j = 0; j < quantidadeDeVoltas; j++) {
        tempoTotal = tempoTotal + Integer.parseInt(tempoDeCadaVolta[j]);
      }

      tempoTotalDeCadaCarro[i] = tempoTotal;
    }

    for(int i = 0; i < quantidadeDeCarros; i++) {
      System.out.printf("O carro %d completou a corrida em %d\n", i + 1, tempoTotalDeCadaCarro[i]);
    }
  
    scan.close();
  }
}

Pode ser que neste código tenha muita coisa que vc ainda não conhece, mas recomendo que vc tente entender a ideia geral e estude cada ponto desconhecido separadamente.

Por exemplo o uso do Scanner, é através dele que permitimos que o usuario entre com os dados necessários usando o método nextLine().

O nextLine() retorna uma String e usei o split() pra quebrar esta String em partes.

O parseInt() é necessário pra transformar a String em um número inteiro, isso é necessário pra gente poder fazer os calculos necessários.

Considerações finais

Bom, minha explicação e meu exemplo só lidam com uma parte do problema que é a entrada de dados.

Depois disso vc tem que encontrar uma forma de saber quem foi os 3 carros mais rapidos da corrida. No meu exemplo isso já está meio feito, note a variável tempoTotalDeCadaCarro que está quadrando o tempo total de cada carro, é com base nela que vc vai desenvolver um algoritmo que descobre quem são os mais rapidos, mas isso pode ser assunto pra um outro tópico.

@wldomiciano Sinceramente, meu muito obrigado. Salvou o trabalho.
Consegui compreender com suas explicações, isso me sanou as dúvidas referentes a questão. Assim que conseguir concluir terminar o algoritmo, mostro-lhe o código.

1 curtida