Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
10
respostas

Concatenar string e int

using System;

namespace Desafio_03
{
    class Program
    {
        static void Main(string[] args)
        {
            //R01
            int notaAluno = 0, maiorNota = 0, i = 0, numeroDeAlunos = 0;
            string nomeAluno = Console.ReadLine();
            //var AlunoComMaiorNota = 

            Console.WriteLine("Quantos alunos tem na sala de aula?");
            numeroDeAlunos = Convert.ToInt32(Console.ReadLine());


           // int numeroDeAlunos = int.Parse(Console.ReadLine());
           // Console.WriteLine("Sua sala de aula tem " + numeroDeAlunos + " alunos");

            Console.WriteLine("Qual nome do aluno 1 ?");
            nomeAluno = Console.ReadLine();
            Console.WriteLine("Qual nota do(a) aluno(a)" + nomeAluno + "?");
            notaAluno = Convert.ToInt32(Console.ReadLine());
            maiorNota = notaAluno;
            i = 1;

            for(i = 2; i <= numeroDeAlunos; i++)
            {

                Console.WriteLine("Qual nota do(a) aluno(a)" + nomeAluno + "?");
                notaAluno = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("Qual nome do aluno " + i + " ?");
                nomeAluno = Console.ReadLine();

                if (notaAluno > maiorNota )
                {
                    maiorNota = notaAluno;

                }    


            }
            Console.WriteLine("O aluno com maior nota é:  " + maiorNota);


            Console.ReadLine();
        }
    }
}           
            /* R01 – IMPRIMIR MENSAGEM PERGUNTANDO QUANTIDADE DE ALUNOS;
            R02 – LER E ARMAZENAR INFORMAÇÃO;
            R03 – IMPRIMIR MENSAGEM PERGUNTANDO NOME E NOTA DO ALUNO
                  (DE ACORDO COM A QUANTIDADE DO R01);
            R04 – IMPRIMIR O ALUNO COM MAIOR NOTA; */

Preciso imprimir o nome do aluno com a maior nota e nao sei como posso fazer isso, so consegui imprimir a maior nota, alguém pode me ajudar ?

10 respostas

Boa tarde, tudo em paz? Sempre que precisar exibir um dado numérico em uma string vc vai precisar fazer uma conversão. Em c# a função que faz isso é a ToString(). Adicione ela no final da sua variável, assim: maiorNota.ToString(). Essa função recebe parâmetros extras onde vc consegue controlar o número de casas decimais exibidas, se o separador decimal vai ser ponto ou virgula... mas são opcionais :)

Oi Leonardo, muito obrigada. Eu entendi, mas não consegui colocar na pratica aqui :o

Console.WriteLine("O aluno com maior nota é: " + maiorNota.ToString());

Coloquei assim, mas ainda só imprime : o aluno com a maior nota é: (maior numero que aplico no console) precisaria que fosse assim: o aluno com maior nota é: Larissa 10 contendo o nome e a nota.

Ah tá.. é só incluir a variável de nome na sua saída tb. Console.WriteLine("O aluno com maior nota é: " + nomeAluno + " " + maiorNota.ToString());

Quando faço desse jeito ele imprime o ultimo nome inserido e nao o nome que teve a maior nota... Será q teria um jeito de ajuntar nomeAluno e maiorNota para quando colocar no console o nome e a nota ele saber q é do mesmo aluno ? Insira aqui a descrição dessa imagem para ajudar na acessibilidade

A lógica da saída vai ser essa mesma, nome + nota. Agora vc precisa adicionar uma lógica no seu código pra armazenar o nome do aluno com a maior nota. Uma sugestão mais simples seria armazenar os nomes e as notas em vetores (arrays), validar qual é a maior nota e obter o nome do aluno de acordo com a posição da maior nota. Exemplo: Se a maior nota está na terceira posição do array de notas, logo, o nome do aluno que obteve a maior nota estará na terceira posição do array de nomes, entendeu? Já estudou arrays?

Vi bem pouco, so sei que começa a contagem do 0. Poderia me ajudar a colocar em pratica ?

solução!

Então.. um vetor (ou array unidimensional) é uma coleção de dados de um único tipo. Podemos definir a quantidade de dados que um vetor vai armazenar no momento de sua instanciação. Ex.: int[] notasAlunos = new int[5]; Nesse exemplo o vetor notasAlunos terá 5 posições e seus valores poderão ser acessados através dos índices de 0 a 4. A dica para o seu exercício é definir dois vetores, um para nomes e outro para notas, e obter a posição onde a maior nota inserida se encontra. Tendo esta informação, poderemos recuperar tb o nome do aluno que obteve a maior nota, pois ele estará na mesma posição do array de nomes. Fiz um exemplo aqui pra conseguirmos visualizar melhor:

static void Main(string[] args)
        {
            //R01
            int numeroDeAlunos = 0, indiceMaiorNota = 0;

            /** Definindo o tamanho do array **/
            Console.Write("Quantos alunos tem na sala de aula? ");
            numeroDeAlunos = Convert.ToInt16(Console.ReadLine());

            /** Instanciando os arrays de notas e alunos de acordo com o número de alunos definido **/
            int[] notasAlunos = new int[numeroDeAlunos];
            string[] nomesAlunos = new string[numeroDeAlunos];


            // int numeroDeAlunos = int.Parse(Console.ReadLine());
            // Console.WriteLine("Sua sala de aula tem " + numeroDeAlunos + " alunos");


            /** Recebendo os valores do usuário .. Aqui iremos obter o índice (posição no array) 
             * em que a maior nota for digitada .. Por padrão, a primeira nota digitada será 
             * a maior (verifique a declaração da variável indiceMaiorNota - recebe 0, a posição inicial do array) .. 
             * Faremos a verificação da maior nota a partir do segundo loop, quando i for maior que 0 **/
            for (int i = 0; i < numeroDeAlunos; i++)
            {
                /** Pulando uma linha pra organizar **/
                Console.WriteLine();

                Console.Write("Qual nome do aluno " + (i+1) + "? ");
                nomesAlunos[i] = Console.ReadLine();

                Console.Write("Qual nota do(a) aluno(a) " + nomesAlunos[i] + "? ");
                notasAlunos[i] = Convert.ToInt16(Console.ReadLine());

                /** Verificando se a nova nota inserida é maior que a anterior **/
                if (i > 0 && (notasAlunos[i] > notasAlunos[indiceMaiorNota]))
                    indiceMaiorNota = i;
            }

            /** Pulando uma linha pra organizar **/
            Console.WriteLine();

            /** Imprimindo o nome e a nota de acordo com o índice da maior nota **/
            Console.WriteLine("O aluno com maior nota é: " + nomesAlunos[indiceMaiorNota] + " " + notasAlunos[indiceMaiorNota]);
            Console.ReadLine();
        }
        /* 
         * R01 – IMPRIMIR MENSAGEM PERGUNTANDO QUANTIDADE DE ALUNOS;
         * R02 – LER E ARMAZENAR INFORMAÇÃO;
         * R03 – IMPRIMIR MENSAGEM PERGUNTANDO NOME E NOTA DO ALUNO
                 (DE ACORDO COM A QUANTIDADE DO R01);
         * R04 – IMPRIMIR O ALUNO COM MAIOR NOTA; 
         */
    }

Leonardo muuuito obrigada, eu estava quebrando a cabeça, muito obrigada mesmo.