El método crearPlanillaAsistencia() esta mal, en todos los sentidos.
Se supone que este método ha de crear o retornar un array de string, cuyo tamaño sea la "cantidad de alumnos" que el usuario haya introducido por teclado.
Pero este código no hace eso:
public static int CrearPlanillaAsistencia(int cantidad_muestra)//1.a
{
int cantidad4 = 0;
string[] cantidad_Alumnos = new string[cantidad4];
return cantidad_muestra;
}
- Recibe por argumentos la cantidad de alumnos (cantidad_muestra), pero
no usa ese dato para nada.
- Crea un array de string, sí, pero
su tamaño es 0, ya que usa la variable cantidad4, y
cantidad4 = 0- Pero da igual el tamaño del array, porque
no lo está retornando. Lo único que retorna este método es el mismo dato que ha recibido por argumentos (cantidad_muestra).
Es decir, este método recibe el dato cantidad_muestra, crea un array de longitud 0 (que es lo mismo que no crear nada) y vuelve a retornar cantidad_muestra.
Hay que corregirlo, debe crear un array con el tamaño que le diga cantidad_muestra, y retornarlo.
public static string[] CrearPlanillaAsistencia(int cantidad_muestra)//1.a
{
string[] cantidad_Alumnos = new string[cantidad_muestra];
return cantidad_Alumnos;
}
Bueno, tendríamos ya el método corregido, pero ahora hay otro problema.
Tú invocas a este método en el Main
static void Main(string[] args)
{
//int cant_ClasesMes = 0;
int cant_Alumnos = ingresoNumericoconControl("Ingrese cantidad alumnos)");//p_1
int cant_Clases = ingresoNumericoconControl("Ingrrese cantidad Clases");
CrearPlanillaAsistencia(cant_Alumnos);
TomarAsistencia(cant_Alumnos, cant_Clases); // PUNTO 1.B
}
Pero no estás recogiendo el dato que retorna, tan solo lo invocas, así que el array de string que retorna, no se está recogiendo y se pierde.
Hay que recogerlo, por ejemplo, asignándolo a una referencia ahí en esa misma línea.
static void Main(string[] args)
{
//int cant_ClasesMes = 0;
int cant_Alumnos = ingresoNumericoconControl("Ingrese cantidad alumnos)");//p_1
int cant_Clases = ingresoNumericoconControl("Ingrrese cantidad Clases");
string[] lista_Alumnos = CrearPlanillaAsistencia(cant_Alumnos);
TomarAsistencia(cant_Alumnos, cant_Clases); // PUNTO 1.B
}
Bien, ya tenemos el array refenciado para no perderlo. Ahora hay que pasárselo al método TomarAsistencia(), ya que los nombres de alumnos que se van a ingresar, se ha de hacer en este array que hemos creado:
static void Main(string[] args)
{
//int cant_ClasesMes = 0;
int cant_Alumnos = ingresoNumericoconControl("Ingrese cantidad alumnos)");//p_1
int cant_Clases = ingresoNumericoconControl("Ingrrese cantidad Clases");
string[] lista_Alumnos = CrearPlanillaAsistencia(cant_Alumnos);
TomarAsistencia(lista_Alumnos, cant_Clases); // PUNTO 1.B
}
Ahora lo que hace falta, es corregir también el método TomarAsistencia().
El método que has escrito, crear dos arrays, uno para nombres y otro para las asistencias en cada clase.
Marco en rojo, algunas (no todas) de las cosas que hay que corregir.
La línea que marco en verde, no me queda claro su propósito. Es más, no estoy seguro siquiera de que el compilador la de por válida.
public static int TomarAsistencia(int cant_alumnos, int cant_clases)
{
string[] array_Alumnos = new string[cant_alumnos];
string[] array_Clase = new string[cant_clases];//1.b
creaplanillaAssistencia: " + cantidad_muestra);
for (int i = 0; i < cant_alumnos; i++)
{
Console.WriteLine("Ingrese nombre alumno nº: " + i + ";");
array_Alumnos[i ] = Console.ReadLine();
for (int s = 0; s < cant_clases; s++)
{
Console.WriteLine("ingrese a ausente o p presente: " + s + ";");
array_Clase[s ] = Console.ReadLine();
}
Console.WriteLine();
}
//muestra
for (int i = 0; i < cant_alumnos; i++)
{
Console.WriteLine("NOMBRE: " + array_Alumnos[i ] + " Nº: " + i);
for (int s = 0; s < cant_clases; s++)
{
Console.WriteLine("Asistencia: " + array_Clase[s ] + " Clase Nº: " + s);
}
}
return cant_alumnos;
}
No debe crear dos arrays, debe utilizar el array creado en planillaAsistencia() y que ya le estamos pasando por parámetros y crear otro más con la cantidad de clases que también le indicamos por argumentos.
Marco en negrita las principales correcciones, para que se reciba y se pueda usar el array de string correcto.
public static int TomarAsistencia(string[] array_Alumnos, int cant_clases)
{
//Esta linea se puede borrar -- string[] array_Alumnos = new string[cant_alumnos];
string[] array_Clase = new string[cant_clases];//1.b
//Esta linea se puede borrar -- creaplanillaAssistencia: " + cantidad_muestra);
for (int i = 0; i < cant_alumnos; i++)
{
Console.WriteLine("Ingrese nombre alumno nº: " + i + ";");
array_Alumnos[i ] = Console.ReadLine();
for (int s = 0; s < cant_clases; s++)
{
Console.WriteLine("ingrese a ausente o p presente: " + s + ";");
array_Clase[s ] = Console.ReadLine();
}
Console.WriteLine();
}
//muestra
for (int i = 0; i < cant_alumnos; i++)
{
Console.WriteLine("NOMBRE: " + array_Alumnos[i ] + " Nº: " + i);
for (int s = 0; s < cant_clases; s++)
{
Console.WriteLine("Asistencia: " + array_Clase[s ] + " Clase Nº: " + s);
}
}
return cant_alumnos;
}
Hay más cosas que corregir. Todas las líneas que usan la variable
cant_alumnos, variable que YA NO está recibiendo este método, porque NO es lo que necesita, se tienen que modificar o eliminar según sea necesario.
Habría que revisar que las demás lineas están usando correctamente el array que recibimos por parámetro, no las he mirado, así que no se si requieren correcciones.
Este método tampoco debería retornar un int, de hecho, no debería retornar nada. Tan solo mostrar en pantalla el contenido de los dos arrays una vez se han introducido todos los datos.
Estos cambios te los dejo a ti.
Corrige todo lo que hemos dicho, no se si con esto quedaría el programa completado, en cualquier caso si te surgen dudas, si faltan más cosas, si las correcciones implican nuevos problemas... lo que sea, ...pregunta por aquí y lo vemos.
Un saludo.