Comparison of values

0

I need to make two comparisons as the person inserts data:

  • Higher height; OK
  • Lower height; (it got bad)

I can not use vector in this case as it is a requirement of the exercise. In the case I even managed to make the comparisons but it was fine 'pig' because I had to start the variable with an absurd value, would someone else have another way to solve?

Using beginner stuff etc.

/**
             * 3) Faça um programa que leia dez conjuntos de dois valores: 
             * o primeiro representa o número do aluno e, o segundo, a sua altura em centímetros. 
             * Encontre o aluno mais alto e o mais baixo. Mostre o número do aluno mais alto e o 
             * número do mais baixo, junto com suas alturas.
             * */

            int n_aluno, id=1, n_guarda_maior = 0, n_guarda_menor = 0;
            double altura_cm, maior = 0, menor = 999999999999999;
            string aux;

            while(id <= 4)
            {
                Console.WriteLine("Número do aluno: ");
                aux = Console.ReadLine();
                n_aluno = Convert.ToInt16(aux);

                Console.WriteLine("Altura em cm: ");
                aux = Console.ReadLine();
                altura_cm = Convert.ToDouble(aux);

                if(altura_cm > maior)
                {
                    maior = altura_cm; //Armazena o maior
                    n_guarda_maior = n_aluno; //Guarda o número do maior
                }

                if(altura_cm < menor)
                {
                    menor = altura_cm; //Armazena o menor
                    n_guarda_menor = n_aluno; //Guarda o número do menor
                } 

                id++; //Proximo aluno
            }

            Console.WriteLine("ID do maior aluno: " + n_guarda_maior + " Altura: " + maior);
            Console.WriteLine("ID do menor aluno: " + n_guarda_menor + " Altura: " + menor);
            Console.ReadKey();
    
asked by anonymous 30.08.2017 / 18:34

1 answer

1

Just check if the loop is in the first run. If so, you can be sure that this is the lowest so far.

That is, you check whether id equals one (because id is who controls loop ) or if the height entered ( altura_cm ) is less than the lowest existing height (% with%).

double altura_cm, maior = 0, menor = 0;

/* Resto do código */

if(id == 1 || altura_cm < menor)
{
    menor = altura_cm; //Armazena o menor
    n_guarda_menor = n_aluno; //Guarda o número do menor
}

Complete code

int n_aluno, id = 1, n_guarda_maior = 0, n_guarda_menor = 0;
double altura_cm, maior = 0, menor = 0;
string aux;

while(id <= 4)
{
    Console.WriteLine("Número do aluno: ");
    aux = Console.ReadLine();
    n_aluno = Convert.ToInt16(aux);

    Console.WriteLine("Altura em cm: ");
    aux = Console.ReadLine();
    altura_cm = Convert.ToDouble(aux);

    if(altura_cm > maior)
    {
        maior = altura_cm; //Armazena o maior
        n_guarda_maior = n_aluno; //Guarda o número do maior
    }

    if(id == 1 || altura_cm < menor)
    {
        menor = altura_cm; //Armazena o menor
        n_guarda_menor = n_aluno; //Guarda o número do menor
    } 

    id++; //Proximo aluno
}

Console.WriteLine("ID do maior aluno: " + n_guarda_maior + " Altura: " + maior);
Console.WriteLine("ID do menor aluno: " + n_guarda_menor + " Altura: " + menor);

See working in .NET Fiddle.

    
30.08.2017 / 18:42