C sharp - Ayuda con un ejercicio.

   
Vista:

Ayuda con un ejercicio.

Publicado por Yosvaldy (2 intervenciones) el 08/12/2015 05:34:53
Hola. Necesito que me ayuden en un ejercicio que estoy haciendo. Trata sobre un metodo que debo hacer para cuando el usuario entre un numero (1<num<1000000000) me retorne la cantidad de veces que se cumple cierta condicion.

Ejemplo.
Si en el numero entrado por el usario, este esta compuesto de: 1, 2 , 3 , 5, 7 entonces este valor que retorna el metodo se incrementa en uno tantas veces aparezca cualquiera de estos numeros un el valor entrado.

Input: 6973141 Output: 4

Si contiene algun 8, entonces se aumenta en dos,

Input: 9583461 Output: 5

Para 0, 4, 6 y 9 no sucede nada.


Al metodo se le pasa un parametro (int) y seria asi:


int RetornarValor(int num)
{

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda con un ejercicio.

Publicado por Diego (5 intervenciones) el 08/12/2015 15:33:03
Buen día, el enunciado me mareo al principio, pero ahora me confundí, no lo analizaré de momento, pero te agradecería que escribieras el enunciado del ejercicio tal cual se te dijo o se te lo dejó escrito. Ya que según como lo escribistes hace parecer que ese enunciado es una interpretación tuya y no el enunciado original.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con un ejercicio.

Publicado por Yosvaldy (2 intervenciones) el 08/12/2015 23:12:20
Bueno, para eso tendria que buscar en Hackers Rank, pero mas o menos seria que un usuario entre por consola un numero mayor que cero y menor que 10 elevado a la 9. Ahora, supongamos que el usuario entro 2657082 como numero. El metodo debe recorrer posicion por posicion de ese numero, o sea, 2 - 6 - 5 -...etc y determinar si aumentar o no una variable count que debes crear. En caso de que el numero sea 1, 2, 3 5 o 7, entonces tu variable count se incrementa en uno, si es 8 se incrementa en dos, y si es el resto de los que quedan entonces no incrementa.

Ejemplo: El usuario entro 2657082, el metodo debe dividir ese numero de 7 digitos en 2, 6, 5, 7, 0, 8, 2. Para luego comprar el primer numero (es 2), cumple la condicion (1, 2, 3, 5, 7) entonces count++, vamos al segundo que seria 6, se cumple que no aumentamos count porque para 0, 4, 6, 9 la variable count no hace nada. Cuando llega al 8 entonces count aumenta dos unidades. Al final el metodo debe devolver un entero int count = 6.

Lo que no recuerdo es como llevar ese string que entra el usuario y dividir cada numero para guardarlos en un array. O no se si hay otra via. Eso es lo que necesito saber.

Gracias y disculpa el enrredo pero el enunciado no te dejan copiarlo en HacherRank y es dificil volver a dar con el mismo ejercicio ya que es aleatorio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con un ejercicio.

Publicado por Thanatos (8 intervenciones) el 08/12/2015 23:34:51
Esto es lo que entendí del enunciado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
using System;
 
namespace Ejercicio
{
    class Program
    {
        static void Main(string[] args)
        {
            int numero;
            int resultado;
 
            Console.Write("Ingrese un número entero entre 1 y 1.000.000.000:\nnumero = ");
 
            if (Int32.TryParse(Console.ReadLine(), out numero))
            {
                resultado = RetornarValor(numero);
                if (resultado < 0)
                    Console.WriteLine("\n* El número no se encuentra dentro del rango solicitado *\n");
                else
                    Console.WriteLine("resultado = {0}", resultado);
            }
            else
                Console.WriteLine("\n * El dato no es un número o está fuera del rango de un entero *");
 
            Console.ReadKey(true);
        }
 
 
        private static int RetornarValor(int numero)
        {
            const int minimo = 1;
            const int maximo = 1000000000;
            int aux = numero;
            int valor = 0;
            int digito;
 
            if (numero > minimo && numero < maximo)
            {
                for (int i = 1; i <= numero.ToString().Length; ++i)
                {
                    digito = aux % 10;
                    aux /= 10;
 
                    if (digito == 1 || digito == 2 || digito == 3 || digito == 5 || digito == 7)
                        ++valor;
 
                    if (digito == 8)
                        valor += 2;
                }
            }
            else
                valor = -1;
 
            return valor;
        }
    }
}

Espero que te sirva...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar