Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Formatando o relatório

Console.Clear();
Console.Write("Digite o nome: ");
string nome = Console.ReadLine()!;

Console.Write("Digite o endereço: ");
string endereco = Console.ReadLine()!;

Console.Write("Digite o valor do frete: ");
double frete; double.TryParse(Console.ReadLine()!, out frete);

Console.Write("Digite a data de entrega: ");
DateTime dataEntrega; DateTime.TryParse(Console.ReadLine()!, out dataEntrega);


var titulo = "Relatorio da Entrega";
var moldura = string.Empty.PadLeft(titulo.Length, '=');

var tamanhoBorda = 30;
var molduraBorda = string.Empty.PadLeft(tamanhoBorda, '=');
var tituloBorda = string.Empty.PadLeft(tamanhoBorda);

Console.WriteLine(molduraBorda + moldura + molduraBorda);
Console.WriteLine(tituloBorda + titulo + tituloBorda);
Console.WriteLine(molduraBorda + moldura + molduraBorda);

Console.WriteLine($"\nCliente:\t{nome}");
Console.WriteLine($"Endereço:\t{endereco}");
Console.WriteLine($"Frete:\tR${frete.ToString("F2")}");
Console.WriteLine($"Data de Entrega:\t{dataEntrega.ToString("dd/MM/yyyy")}\n");

Console.WriteLine(molduraBorda + moldura + molduraBorda);
1 resposta
solução!

Olá, Diego. Como vai?

O seu código em C# ficou fantástico! A estrutura para coletar os dados utilizando o padrão seguro TryParse (tanto para o double quanto para o DateTime) mostra que você está atento a boas práticas de tratamento de dados, evitando falhas se o usuário digitar algo inesperado.

O grande destaque do seu projeto foi o uso criativo do método string.PadLeft(). Utilizar essa função para gerar molduras dinâmicas baseadas no tamanho do título (titulo.Length) é um excelente exemplo de lógica de programação para interfaces de linha de comando (CLI). O uso de sequências de escape como \t (tabulação) e \n (quebra de linha), aliado às formatações de string "F2" (para forçar duas casas decimais no valor do frete) e "dd/MM/yyyy" para a data, deixou a exibição do relatório extremamente organizada, limpa e profissional.

Para agregar ainda mais valor aos seus estudos sobre manipulação de texto no C#, vale a pena conhecer um recurso que tornaria o alinhamento das suas colunas ("Cliente:", "Endereço:", etc.) ainda mais preciso do que o uso do \t.

A sequência \t insere um espaçamento fixo de tabulação baseado no console, mas se o tamanho das palavras antes dele variar muito, as informações da direita podem acabar desalinhadas. Para resolver isso, as f-strings do C# (Interpolação de Strings) possuem um recurso nativo de alinhamento e espaçamento fixo.

Se você colocar uma vírgula , seguida de um número negativo dentro das chaves, o C# reserva um número exato de caracteres para aquele texto e o alinha à esquerda.

Veja como você poderia reescrever o bloco de exibição dos dados usando essa técnica:

// O número -18 reserva exatamente 18 espaços para o rótulo da esquerda, alinhando tudo perfeitamente
Console.WriteLine($"{"Cliente:", -18}{nome}");
Console.WriteLine($"{"Endereço:", -18}{endereco}");
Console.WriteLine($"{"Frete:", -18}R$ {frete.ToString("F2")}");
Console.WriteLine($"{"Data de Entrega:", -18}{dataEntrega.ToString("dd/MM/yyyy")}\n");

Com essa pequena alteração, não importa o comprimento da palavra do rótulo inicial; o C# garante que todos os dados preenchidos comecem exatamente na mesma coluna vertical, deixando o seu relatório com um visual de tabela impecável.

Parabéns pelo excelente domínio técnico na formatação de strings e pelo capricho no design do seu relatório de console!

Espero que possa ter lhe ajudado!