Objetivo: lograr que el alumno recuerde el uso de la programación estructurada.
Desarrollo: crear un programa (consola), que solicite el nombre y las edades de tu familia, cuyo programa tendrá el siguiente formato:
Familia: apellido paterno, apellido materno.
Padre: Nombre, A. P., A.M.
Madre: Nombre, A.P., A. M.
Hijo1: Nombre, A.P., A. M.
Hijo2: Nombre, A.P., A. M.
El programa solicitará nombres y edades, no el parentesco:
Integrante #1, integrante #2, etc.
Observaciones:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace practica1_ordrnomb_1cadena_
{
class Program
{
static void Main(string[] args)
{
// Declaracion de variables
// Para almacenar la cadena de entrada se declara una variable de tipo string(cadena) llamada cadena
string cadena;
// Se declaran los arreglos para edades, nombres y los apellidos, de tamaño 4 pues solo ingresaremos
// 4 integrantes de una familia, sólo edades será de tipo entero y los restantes de tipo string
int[] edades = new int[4];
string[] nombres = new string[4];
string[] apellido_p = new string[4];
string[] apellido_m = new string[4];
// Se declara un arreglo para cada integrante, sin tamaño pues se llenaran posteriormente
string[] integrante1;
string[] integrante2;
string[] integrante3;
string[] integrante4;
// Para descomponer la cadena de entrada se declara un arreglo con los posibles delimitadores en la propia cadena
// para este programa se usará el espacio en blanco pero pueden ser comas, puntos, etc. Será de tipo char(caracter)
char[] caracteresdelimitadores = { ' ', ',', '.', ':', '\t' };
// Se definen las instrucciones:
Console.WriteLine(" BIENVENIDO");
Console.WriteLine("Instrucciones: Inserte cada uno de los miembros de la familia,\n el formato es el siguiente:\n NOMBRE espacio APELLIDO PATERNO espacio APELLIDO MATERNO espacio EDAD \n Ejemplo: Guadalupe Ramirez Cobos 40");
Console.WriteLine("OPRIMA UNA TECLA PARA CONTINUAR");
// La instrucción Console.ReadKey(); Espera a que se teclee cualquier tecla para continuar con el programa
Console.ReadKey();
// borramos pantalla
Console.Clear();
// Se comienzan a ingresar los datos:
Console.WriteLine("Ingrese el integrante 1:");
// Ingresaremos la cadena y la siguiente instrucción la almacenará en la variable "cadena".
cadena = Console.ReadLine();
// Enseguida con la propiedad Split a partir del arreglo que contiene los caracteres delimitantes separaremos en partes la cadena y se almacenaran en los arreglos antes declarados.
integrante1 = cadena.Split(caracteresdelimitadores);
// Se almacena el nombre del primer integrante en el arreglo nommbres en su posicón 0 y lo tomamos del arreglo integrante1 en su posición 0 pues en esa posicion se guarda el nombre.
nombres[0] = integrante1[0];
// Lo mismo se hace con los campos de los apellidos
apellido_p[0] = integrante1[1];
apellido_m[0] = integrante1[2];
// el campo edad debe de almacenar el campo con un tipo de dato entero por lo que es necesario convertirlo de string a entero
edades[0]=Convert.ToInt32( integrante1[3]);
// Limpiamos la cadena
cadena = "";
// Limpiamos la pantalla
Console.Clear();
// Realizamos lo mismo para cada integrante
Console.WriteLine("Ingrese el integrante 2:");
cadena = Console.ReadLine();
integrante2 = cadena.Split(caracteresdelimitadores);
nombres[1] = integrante2[0];
apellido_p[1] = integrante2[1];
apellido_m[1] = integrante2[2];
edades[1] = Convert.ToInt32(integrante2[3]);
cadena = "";
Console.Clear();
Console.WriteLine("Ingrese el integrante 3:");
cadena = Console.ReadLine();
integrante3 = cadena.Split(caracteresdelimitadores);
nombres[2] = integrante3[0];
apellido_p[2] = integrante3[1];
apellido_m[2] = integrante3[2];
edades[2] = Convert.ToInt32(integrante3[3]);
cadena = "";
Console.Clear();
Console.WriteLine("Ingrese el integrante 4:");
cadena = Console.ReadLine();
integrante4 = cadena.Split(caracteresdelimitadores);
nombres[3] = integrante4[0];
apellido_p[3] = integrante4[1];
apellido_m[3] = integrante4[2];
edades[3] = Convert.ToInt32(integrante4[3]);
Console.Clear();
//Se declaran variables temporales para edad, nombre, apellido paterno y apellido materno.
//la edad es de tipo entero, el nombre y apellidos son de tipo string
int edadtemp;
string nombretemp, apellidomtem_p, apellidotemp_m;
//Método burbuja
// con el método burbuja ordenaremos el arreglo que contiene las edades pues a partir de ellas definiremos quien es cada integrante
// se compone de dos ciclos for con los cuales iremos comparando en pares las edades y ordenandolas
for (int i = 0; i < (edades.Length - 1); i++)
{
for (int j = 0; j < (edades.Length - 1); j++)
{ //con el condicional if comparamos si la primera edad almacenada en el arreglo es mayor que la segunda, conforme aumente j compararemos la siguiente pareja de edades
// el signo > ordenará el arreglo de menor a mayor, si fuese < el arreglo se ordenará de mayor a menor
if (edades[j] > edades[j + 1])
{
//al cumplirse se asignará a la variable temporal para edad el valor de la segunda posicion del arreglo edades
//conforme se incremente el valor de j se compará la siguiente pareja de edades
edadtemp = edades[j];
//pasará lo mismo con las variables temporales para nombre y apellidos
nombretemp = nombres[j];
apellidomtem_p = apellido_p[j];
apellidotemp_m = apellido_m[j];
//enseguida se asigna al arreglo edades en su posicion j el valor de la siguiente posicion indicado como j+1
edades[j] = edades[j + 1];
//se realiza lo mismo con los arreglos de nombre y apellidos
nombres[j] = nombres[j + 1];
apellido_p[j] = apellido_p[j + 1];
apellido_m[j] = apellido_m[j + 1];
//al arreglo edades en su posición siguiente j+1 se la asignará el valor almacenado en la variable temporal
edades[j + 1] = edadtemp;
nombres[j + 1] = nombretemp;
apellido_p[j + 1] = apellidomtem_p;
apellido_m[j + 1] = apellidotemp_m;
}
}
}
//cuando los ciclos for terminen los arreglos estarán ordenados de acuerdo a la edad de menor a mayor
Console.WriteLine(" ESTRUCTURA DE LA FAMILIA ");
//como ya estan ordenadpos los arreglos y suponemos que la mayor edad es la del padre y la siguiente es de la madre tomamos
//el apellido paterno de cada uno para mostrar el nombre de la familia
Console.WriteLine(" Familia: " + apellido_p[3] + " " + apellido_p[2] + ".");
//como ya tenemos la mayor edad, la cual está en la posicion 3 del arreglo y por lo tanto es la del padre y solo tomamos sus valores para mostrarlos
Console.WriteLine(" Padre: " + nombres[3] + " " + apellido_p[3] + " " + apellido_m[3] + " su edad es: " + edades[3] + ".");
//la edad en la posicion 2 es la madre
Console.WriteLine(" Madre: " + nombres[2] + " " + apellido_p[2] + " " + apellido_m[2] + " su edad es: " + edades[2] + ".");
// la posición 1 es el hijo mayor
Console.WriteLine(" Hijo mayor: " + nombres[1] + " " + apellido_p[1] + " " + apellido_m[1] + " su edad es: " + edades[1] + ".");
// la menor edad que es la posición 0 es el hijo menor
Console.WriteLine(" Hijo menor: " + nombres[0] + " " + apellido_p[0] + " " + apellido_m[0] + " su edad es: " + edades[0] + ".");
//detenemos la pantalla
Console.ReadLine();
}
}
}
No hay comentarios:
Publicar un comentario