Foros del Web » Programación para mayores de 30 ;) » Programación General »

[SOLUCIONADO] Ayuda Urgente!!

Estas en el tema de Ayuda Urgente!! en el foro de Programación General en Foros del Web. Hola a todos, necesito una ayuda para el siguiente problema, estoy recien empezando con esto d ela programación y tengo esta problema que dbo resolver ...
  #1 (permalink)  
Antiguo 03/02/2011, 12:52
 
Fecha de Ingreso: febrero-2011
Mensajes: 15
Antigüedad: 13 años, 3 meses
Puntos: 0
Ayuda Urgente!!

Hola a todos,

necesito una ayuda para el siguiente problema, estoy recien empezando con esto d ela programación y tengo esta problema que dbo resolver el enunciado dice:

haber si ustedes me pueden ayudar.


Un número tiene dígitos en aumento, si cada dígito es mayor o igual que el dígito que está a su izquierda, por ejemplo 45579. Hay exactamente 219 números con dígitos en aumento entre 1 y 999. ¿Cuantos números con dígitos en aumento hay entre 1 y 999.999?.


si alguien pudiese ayudarme, tengo este código en C# pero el resultado me da 495



static void Main(string[] args)
{
int i, j, contador = 0, digder = 0, digizq = 0, sw = 0;
int final = 999;
string aux;
for (i = 1; i <= final; i++)
{
aux = Convert.ToString(i);
if (aux.Length > 1)
{
for (j = 1; j < aux.Length; j++)
{
digder = Convert.ToInt32(aux.Substring(aux.Length - j, 1));
digizq = Convert.ToInt32(aux.Substring(aux.Length - (j + 1), 1));
if (digder >= digizq) sw = 1;
else sw = 0;
}

if (sw == 1) contador++;
}





Saludos!
  #2 (permalink)  
Antiguo 04/02/2011, 03:06
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Ayuda Urgente!!

Si no me equivoco tienes el digIzq y dirDer al revés.

¿No te es más facil poner?

digder = Convert.ToInt32(aux.Substring(j, 1));
digizq = Convert.ToInt32(aux.Substring(j -1), 1));
  #3 (permalink)  
Antiguo 04/02/2011, 06:19
 
Fecha de Ingreso: febrero-2011
Mensajes: 15
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Ayuda Urgente!!

static void Main(string[] args)
{
int i, j, contador = 0, digder = 0, digizq = 0, sw = 0;
int final = 999;
string aux;
for (i = 1; i <= final; i++)
{
aux = Convert.ToString(i);
if (aux.Length > 1)
{
for (j = 1; j < aux.Length; j++)
{
digder = Convert.ToInt32(aux.Substring(j, 1));
digizq = Convert.ToInt32(aux.Substring((j - 1), 1));
if (digder <= digizq) sw = 1;
else sw = 0;
}

if (sw == 0) contador++;
}
}

ahí hice el cambio pero aún así me da 441 parece que comprendi mal el enunciado :s
  #4 (permalink)  
Antiguo 04/02/2011, 06:37
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Ayuda Urgente!!

Prueba esto. Si no, vete depurandolo para ver casos que te dice que el número no es creciente y si que lo es.

Código C:
Ver original
  1. static void Main(string[] args)
  2. {
  3.     int i, contador = 0;
  4.     int final = 999;
  5.     string aux;
  6.    
  7.     for (i = 1; i <= final; i++)
  8.     {
  9.         aux = Convert.ToString(i);
  10.         if (CompruebaNumero(aux))
  11.             contador++;
  12.     }
  13. }
  14.  
  15. static bool CompruebaNumero (String num)
  16. {
  17.     bool esCreciente = true;
  18.     int j = 1;
  19.     int digder = 0, digizq = 0
  20.    
  21.     while ((esCreciente) && (j<num.Length))
  22.     {
  23.         digder = Convert.ToInt32(num.Substring(j, 1));
  24.         digizq = Convert.ToInt32(num.Substring((j - 1), 1));
  25.         if (digder < digizq)
  26.         {
  27.             esCreciente = false;
  28.         }
  29.         j++;
  30.     }
  31.    
  32.     return esCreciente;
  33. }
  #5 (permalink)  
Antiguo 04/02/2011, 07:09
 
Fecha de Ingreso: febrero-2011
Mensajes: 15
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Ayuda Urgente!!



Gracias compadre funcionó solo hice el cambio de poner el main debajo metodo compruebaNumero

Se agradece compadre!

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:08.