Obtener la cifra mayor de un número y su posición comenzando por la izquierda

Cifra mayor de un número versión 2

Programa que calcule la cifra mayor de un número y la posición que ocupa. Se considera la posición 1 la de más a la izquierda. Si la cifra mayor se repite varias veces en el número se indicará la posición de la que se encuentre más a la izquierda.

Por ejemplo, si leemos el número N = 75271 

el programa mostrará:

Cifra mayor: 7 Posición: 1

Solución:

Este ejercicio es una variación del ejercicio cifra mayor de un número y posición. En este caso se considera la posición 1 la que se encuentra más a la izquierda.

Para resolverlo nos basaremos en lo explicado en este ejercicio: mostrar las cifras de un número por separado y por cada cifra del número comprobaremos si es la cifra mayor.

import java.util.Scanner;

public class CifraMayor {

    public static void main(String[] args)  {

        int num, aux, posicionMayor, cifra, mayor, posicion, numCifras;
        Scanner sc = new Scanner(System.in);

        do {
            System.out.print("Introduce numero entero >0: ");
            num = sc.nextInt();
        } while (num <= 0);

        //copiamos el número en una variable auxiliar
        aux = num;
        //obtenemos el número de cifras que tiene el número introducido
        numCifras = 0;
        while (aux != 0) {
                numCifras++;
                aux = aux / 10;
        }

        mayor = 0;//Esta variable contendrá el valro de la cifra mayor. 
                  //Inicialmente le damos el valor 0 que es el menor valor de cualquier cifra del número.
        posicionMayor = 0; //variable que contendrá pa posición donde se encuentra la cifra mayor del número      
        posicion = 0; //variable que contendrá la posición de la cifra con la que estamos trabajando 
        for(int i = numCifras-1; i >= 0; i--){ 
            posicion++;
            cifra = num / (int)Math.pow(10, i); //obtenemos la primera cifra de la izquierda del número
            if (cifra > mayor) { //si es mayor que la mayor actual
                mayor = cifra; // la tomamos como nueva mayor
                posicionMayor = posicion; //y guardamos su posición
            }
            num = num % (int)Math.pow(10, i); //le quitamos al número su primera cifra de la izquierda.
        }
            
        System.out.print("Cifra mayor: " + mayor);
        System.out.println(" Posición: " + posicionMayor);
            
    } 
}

No hay comentarios:

Publicar un comentario