Desafio: Ordenador de Notas
Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 63 de 65.
Desafio
FácilCrie 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 é:
- Analisar a string JSON em um Map usando os métodos Dart apropriados
- Criar uma lista vazia chamada
passingStudentspara armazenar os nomes dos alunos que foram aprovados - Iterar pelo mapa e adicionar os nomes dos alunos que marcaram 60 ou mais à lista
passingStudents - Ordenar a lista
passingStudentsem ordem alfabética usando o métodosort() - Imprimir o número total de alunos que fizeram o exame com o formato exato:
Total students: X - Imprimir o número de alunos que foram aprovados com o formato exato:
Students who passed: X - Imprimir o número de alunos que foram reprovados com o formato exato:
Students who failed: X - Imprimir os alunos aprovados em ordem alfabética, cada um em uma nova linha, com o formato exato:
Passing student: [name] - 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
1Manipulação Avançada de Listas
Propriedades de Lista: first & lastEstado da Lista: isEmpty & isNotEmptyInvertendo uma ListaAdicionando a uma Lista: insertRemoção em Listas: removeWhereBuscando em uma Lista: indexOfOrdenando uma ListaEmbaralhando uma ListaRecapitulação - Organizador de Listas4Manipulação Avançada de Mapas
Iterando sobre um MapVerificando Chaves e ValoresPropriedades do Map: keys & valuesAdição Condicional: putIfAbsentRemovendo Entradas de um MapMaps AninhadosRecapitulação - Atualização de Inventário2Operações Funcionais em Listas
Transformando com 'map'Filtrando com 'where'Usando '.toList()'Verificando Condições com 'any'Condições com 'every'Encontrando com 'firstWhere'Recapitulação - Filtragem de Dados5Projeto: Cálculo de Carrinho de Compras
Configuração do ProjetoAdicionando Itens ao Carrinho3Conjuntos
O que é um Conjunto?Criando um ConjuntoAdicionando e Removendo de ConjuntosVerificando Elementos em um ConjuntoConvertendo uma Lista para um ConjuntoUnião de ConjuntosInterseção de ConjuntosDiferença de ConjuntosRecapitulação - Lista de Convidados Únicos