1
resposta

desafios

desafio 1:

using System;
using System.Collections.Generic;
using System.Linq;

Dictionary<string, Tuple<List<string>, List<int>>> notasDoAluno = new Dictionary<string, Tuple<List<string>, List<int>>>();

notasDoAluno["João"] = new Tuple<List<string>, List<int>>(
    new List<string> { "Matemática", "Português" },
    new List<int> { 90, 85 }
);

notasDoAluno["Maria"] = new Tuple<List<string>, List<int>>(
    new List<string> { "Matemática", "Português", "Ciências" },
    new List<int> { 95, 80, 88 }
);

foreach (var aluno in notasDoAluno)
{
    string nome = aluno.Key;
    List<int> notas = aluno.Value.Item2;
    double media = notas.Average();

    Console.WriteLine($"Aluno: {nome}, Média das Notas: {media:F2}");

e estou tentando melhorar para coloca de uma forma parecida com a aula, inclusive percebi que como era uma matriz tentei fazer com um dicionário que tinha duas listas uma de matéria e outra de notas, mas ainda preciso melhorar ele. (ps. como é mais simpels fazer isso quando trabalhamos com o armazenamento no BD rssss :):

using System;
using System.Collections.Generic;
using System.Linq;

Dictionary<string, Tuple<List<string>, List<int>>> notasDoAluno = new Dictionary<string, Tuple<List<string>, List<int>>>();

// Função para adicionar um aluno e suas notas
void AdicionarAluno()
{
    Console.Write("Digite o nome do aluno: ");
    string nome = Console.ReadLine();

    List<string> materias = new List<string>();
    List<int> notas = new List<int>();

    while (true)
    {
        Console.Write("Digite o nome da matéria (ou 'sair' para terminar): ");
        string materia = Console.ReadLine();
        if (materia.ToLower() == "sair")
        {
            break;
        }
        materias.Add(materia);

        Console.Write("Digite a nota para a matéria: ");
        if (int.TryParse(Console.ReadLine(), out int nota))
        {
            notas.Add(nota);
        }
        else
        {
            Console.WriteLine("Nota inválida. Tente novamente.");
        }
    }

    notasDoAluno[nome] = new Tuple<List<string>, List<int>>(materias, notas);
}

// Adicionando dados para o aluno João
notasDoAluno["João"] = new Tuple<List<string>, List<int>>(
    new List<string> { "Matemática", "Português" },
    new List<int> { 90, 85 }
);

// Adicionando dados para o aluno Maria
notasDoAluno["Maria"] = new Tuple<List<string>, List<int>>(
    new List<string> { "Matemática", "Português", "Ciências" },
    new List<int> { 95, 80, 88 }
);

// Adicionando um novo aluno através da entrada do usuário
AdicionarAluno();

// Calculando e exibindo a média das notas de cada aluno
foreach (var aluno in notasDoAluno)
{
    string nome = aluno.Key;
    List<int> notas = aluno.Value.Item2;
    double media = notas.Average();

    Console.WriteLine($"Aluno: {nome}, Média das Notas: {media:F2}");
}

desafio 2:

Dictionary<string, int> estoqueLoja = new Dictionary<string, int>();

// Adicionando produtos ao estoque
estoqueLoja["Camisa"] = 10;
estoqueLoja["Sapato"] = 5;
estoqueLoja["Matemática"] = 20;
estoqueLoja["Português"] = 15;
estoqueLoja["Ciências"] = 8;

// Solicitar o nome do produto ao usuário
Console.WriteLine("Digite o nome do produto para verificar a quantidade em estoque:");
string nomeProduto = Console.ReadLine();

// Verificar a quantidade em estoque do produto
if (estoqueLoja.ContainsKey(nomeProduto))
{
    int quantidade = estoqueLoja[nomeProduto];
    Console.WriteLine($"Produto: {nomeProduto}, Quantidade em estoque: {quantidade}");
}
else
{
    Console.WriteLine("Produto não encontrado no estoque.");
}
1 resposta

Olá, Paulo. Tudo bem?

Obrigado por compartilhar seu código aqui com a gente.

Ótimo como você estruturou os dicionários para armazenar as notas dos alunos e os dados do estoque, é uma forma bem prática de organizar essas informações. A forma como você permitiu a entrada dinâmica de dados para os alunos, criando uma função para adicionar matérias e notas, também é bem interessante e está correta.

Uma dica seria usar o método TryGetValue para acessar os valores de um dicionário, ao invés de ContainsKey, pois ele já retorna o valor associado à chave, evitando uma nova consulta ao dicionário. Veja como ficaria:


if (estoqueLoja.TryGetValue(nomeProduto, out int quantidade))
{
    Console.WriteLine($"Produto: {nomeProduto}, Quantidade em estoque: {quantidade}");
}
else
{
    Console.WriteLine("Produto não encontrado no estoque.");
}

Esse método pode tornar o código mais claro, especialmente quando você precisa acessar o valor de uma chave existente.

Parabéns pela solução e por praticar. Continue com essa dedicação.

Conte com o apoio do Fórum. Abraços e bons estudos!