[ Foro de C# ]

Ayuda Arrays Ejercicio propuesto 4.1.2.1:

18-May-2015 23:45
Invitado (Iniciado)
4 Respuestas

Bueno pues no consigo tirar de este ejercicio:
-Ejercicio propuesto 4.1.2.1: Un programa que almacene en una tabla el número de días que tiene cada mes (su¬pon-dremos que es un año no bisiesto), pida al usuario que le indique un mes (1=enero, 12=diciembre) y muestre en pantalla el número de días que tiene ese mes.

No sabria como hacer es decir ago un array sobre los dias y otro sobre los meses? o uno sobre los meses que almacene los dias que tiene, pero despues como tendria que hacer para llamar a la funcion, he pensado en if´s pero no se si seria lo suyo por eso prefiero pararme a preguntar.
Gracias de antemano por cualquier respuesta que me puedan dar


19-May-2015 20:27
Invitado (Borja)


 
using System;
 
public class Ejemplo_02_02_07a
{
	public static void Main()
	{
		int[]dias= new int[4];
		dias [1]=31;
		dias [2]=30;
		dias [3]=28;
 
		int[] meses = new int[13];
		meses[1]=dias [1];
		meses[2]=dias [3];
		meses[3]=dias [1];
		meses[4]=dias [2];
		meses[5]=dias [1];
		meses[6]=dias [2];
		meses[7]=dias [1];
		meses[8]=dias [1];
		meses[9]=dias [2];
		meses[10]=dias [1];
		meses[11]=dias [2];
		meses[12]=dias [1];
 
		int mes=0;
		meses[mes] = Convert.ToInt32 (Console.ReadLine ());
		Console.WriteLine ("El mes número {0} tiene {1} dias", meses [mes]);
	}
}
 


esto es lo que asta aora llevo pero no doy con la forma para marcas los dias


20-May-2015 10:36
Invitado (Caranim)

Lo primero: Estás creando un elemento de más en cada array. Supongo que lo sabes y es únicamente por la comodidad de empezar a enumerarlos desde uno en vez de desde cero.

 
int mes=0; 
 


Haces que mes valga cero...

 
meses[mes] = Convert.ToInt32 (Console.ReadLine ()); 
 


... y en esta línea guardas en meses[0] el valor que introduzca el usuario. Entiendo que lo que quieres es guardar el número de mes que quieres consultar, pero realmente modificas el número de días que contiene un mes que luego, además, no existe.

 
Console.WriteLine ("El mes número {0} tiene {1} dias", meses [mes]); 
 


En esta línea tratas de mostrar dos variables, pero realmente solo tienes una variable en la función.

Respondiendo directamente a tu pregunta: Los días están bien marcados. Lo que te falta es capturar correctamente el mes a mostrar y visualizarlo:

 
mes = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("El mes número {0} tiene {1} dias",mes, meses[mes]);
 


 


21-May-2015 09:58
Nacho Cabanes (+31)

La respuesta de Caranim es buena (como siempre ;-D )

Yo además abreviaría un poco más, declarando directamente un único array que contiene la cantidad de días de cada mes, en vez de usar dos arrays:

 
int [] diasEnMes = {31,28,31,30,31,30,31,31,30,31,30,31};
 


 


21-May-2015 21:20
Invitado (Borja)

Agradezco su respuesta y su solucion muchas gracias de verás soy de esas personas que si no lo consiguen no continuan hasta que lo solucione de veras muchas gracias :D






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)