Menu
Coddy logo textTech

Desafio: Ordenador de Notas

Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 63 de 65.

challenge icon

Desafio

Fácil

Crie um sistema abrangente de gerenciamento de notas de alunos que processe dados de alunos a partir de um mapa, filtre os alunos aprovados e os organize em ordem alfabética. Este desafio combina iteração de mapas, filtragem condicional, operações de lista e ordenação.

Você receberá a seguinte entrada:

  • Uma string JSON representando um mapa de nomes de alunos (chaves) e suas pontuações nos testes (valores)

A string JSON será parecida com esta: {"Alice": 85, "Bob": 45, "Charlie": 92, "Diana": 58, "Eve": 76, "Frank": 39, "Grace": 88}

Sua tarefa é:

  1. Analisar a string JSON em um Map usando os métodos Dart apropriados
  2. Criar uma lista vazia chamada passingStudents para armazenar os nomes dos alunos que foram aprovados
  3. Iterar pelo mapa e adicionar os nomes dos alunos que marcaram 60 ou mais à lista passingStudents
  4. Ordenar a lista passingStudents em ordem alfabética usando o método sort()
  5. Imprimir o número total de alunos que fizeram o exame com o formato exato: Total students: X
  6. Imprimir o número de alunos que foram aprovados com o formato exato: Students who passed: X
  7. Imprimir o número de alunos que foram reprovados com o formato exato: Students who failed: X
  8. Imprimir os alunos aprovados em ordem alfabética, cada um em uma nova linha, com o formato exato: Passing student: [name]
  9. Se nenhum aluno for aprovado, imprima: No students passed the exam

Seu programa deve demonstrar a iteração adequada de mapas, lógica condicional para filtrar dados com base no limite de aprovação de 60, manipulação de listas e operações de ordenação. A saída deve corresponder exatamente ao formato especificado acima, com os alunos aprovados listados em ordem alfabética.

Experimente você mesmo

import 'dart:io';
import 'dart:convert';

void main() {
  // Lê a entrada da string JSON
  String? jsonString = stdin.readLineSync();
  
  // Analisa a string JSON em um Map
  Map<String, dynamic> studentGrades = jsonDecode(jsonString!);
  
  // Cria uma lista vazia para armazenar os alunos aprovados
  List<String> passingStudents = [];
  
  // TODO: Escreva seu código abaixo
  // 1. Itere pelo mapa e filtre os alunos que tiraram 60 ou mais
  // 2. Adicione os nomes dos alunos aprovados à lista passingStudents
  // 3. Ordene a lista passingStudents em ordem alfabética
  // 4. Calcule e imprima as estatísticas necessárias
  // 5. Imprima os alunos aprovados no formato especificado
  
  // Saída dos resultados (substitua pela sua implementação)
  print("Total students: ");
  print("Students who passed: ");
  print("Students who failed: ");
  // Imprime os alunos aprovados ou a mensagem "No students passed the exam"
}

Todas as lições de Lógica & Fluxo