Solucionado (ver solução)
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.