using System.Diagnostics;
namespace BalmoreGT07_Sem12_Ej5
const int MIN = 2, MAX = 15, APE1=0,NOM1=2;
public enum Opcion {Salir,Ingresar,Imprimir,
Guardar,Leer,Eliminar,Error=99};
public static void Main()
double[] capital = new double[MAX];
string[] nombre = new string[MAX];
Console.WriteLine("PROGRAMA SOCIEDAD DE NEGOCIOS.");
Console.WriteLine("BalmoreGT07_Sem12_Ej5 - Carlos Balmore Ortiz\n");
LeerResultados(ref nombre,ref capital, ref nick);
Console.WriteLine("\nMenu de Opciones");
Console.WriteLine("1. Ingresar Socios 2. Imprimir 3. " +
"Guardar Archivo 4. Leer Archivo " +
"5. Eliminar Datos 0.Salir");
LeerDatos(nombre, capital);
nick = NombresCortos(nombre,capital);break;
ImprimirResultados(nombre, capital, nick);break;
GuardarResultados(ref nombre, ref capital, ref nick);
LeerResultados(ref nombre,ref capital, ref nick);break;
LeerResultados(ref nombre,ref capital, ref nick);break;
EliminarDatos(ref nombre,ref capital,ref nick);break;
public static Opcion LeerOpc()
while(opc<Opcion.Salir || opc>Opcion.Eliminar)
Console.WriteLine(error+"Ingrese su opción:");
opc=(Opcion)int.Parse( Console.ReadLine() );
}catch(FormatException e) {
public static void LeerDatos(string[] nombre, double[] capital)
int i = CantSocios(capital); string nombreSoc = "";
Console.WriteLine("\nAPORTACIONES DE LOS SOCIOS");
Console.WriteLine("\nIngrese nombres formados por 2 apellidos dos nombres separados");
Console.Write("por espacio Ej. \"Bosque Ingles María Teresa\" sin digitar las comillas\n\n");
while ((nombreSoc!= "0" && capital[MAX - 1] == 0) || i < MIN)
Console.Write("\nSocio {0} Nombre: ", i + 1);
nombreSoc = Console.ReadLine().Trim();
if (!nombreSoc.Equals("0") && nombreSoc.Length>11 && nombreSoc.Split(' ').Length==4 )
nombre[i] = nombre[i].ToUpper();
capital[i++] = LeerCapital();
public static string[] NombresCortos(string[] nombre,double[]capital)
string[] nick; int i; string[] texto;
nick = new string[nombre.Length];
for (i = 0; i < CantSocios(capital);i++ )
texto = nombre[i].Split(' ');
nick[i] = texto[APE1].Substring(0, 1) + "." + texto[NOM1];
public static void ImprimirResultados(string[] nombre, double[] capital, string[] nick)
int cant = CantSocios(capital), i;
foreach (double valor in capital) total += valor;
prom = (cant>0)?total / cant:0.0;
Console.WriteLine("LISTA DE SOCIOS");
for (i = 0; i < CantSocios(capital); i++)
Console.WriteLine("Nombre: {0,-50} Nick: {1,-11} Capital: $ {2,12:N2}",
nombre[i], nick[i], capital[i]);
Console.WriteLine("\nIngresó {0} Socios. Capital Total :$ {1} Promedio $: {2}\n", cant, total, prom);
Console.WriteLine("SOCIOS QUE APORTAN UN CAPITAL MAYOR AL PROMEDIO DE $ " + prom);
for (i = 0; i < cant; i++)
if (capital[i] > prom) Console.WriteLine("Nombre: {0} Capital: $ {1}", nombre[i], capital[i]);
public static void GuardarResultados(ref string[] nombre, ref double[] capital, ref string[] nick)
int cant = CantSocios(capital), i;
StreamWriter archSocios = new StreamWriter("sociedad.txt",false);
foreach (double valor in capital) total += valor;
archSocios.WriteLine("LISTA DE SOCIOS");
for(i=0; i<CantSocios(capital);i++)
archSocios.WriteLine("Nombre: {0} Nick:{1} Capital: $ {2}", nombre[i], nick[i], capital[i]);
archSocios.WriteLine("\nIngresó {0} Socios. Capital Total :$ {1} Promedio $: {2}", cant, total, prom);
archSocios.WriteLine("SOCIOS QUE APORTAN UN CAPITAL MAYOR AL PROMEDIO DE $ " + prom);
for (i = 0; i < cant; i++)
if (capital[i] > prom) archSocios.WriteLine("Nombre: {0} Nick:{1} Capital: $ {2}", nombre[i], nick[i],capital[i]);
nombre=null; capital=null;nick=null;
Process.Start("sociedad.txt");
public static void LeerResultados(ref string[] nombre, ref double[] capital, ref string[] nick)
string linea,tNombre,tNick;
Console.WriteLine("\n\n...........CARGANDO DATOS DESDE ARCHIVO DE TEXTO");
if(File.Exists("sociedad.txt") )
archSocios = new StreamReader("sociedad.txt");
linea = archSocios.ReadLine();
linea=archSocios.ReadLine();
while( ! String.IsNullOrWhiteSpace(linea) )
{ Console.WriteLine(linea);
ini=linea.IndexOf(':')+2;cant=linea.IndexOf(" Nick:")-ini;
tNombre=linea.Substring(ini,cant);
ini=linea.IndexOf("Nick:")+5;cant=linea.IndexOf(" Capital:")-ini;
tNick=linea.Substring(ini,cant);
ini=linea.IndexOf('$')+1;
tCapital=double.Parse( linea.Substring(ini) );
linea=archSocios.ReadLine();
nombre[i]=tNombre; nick[i]=tNick;capital[i++]=tCapital;
Console.WriteLine("\n\n\nEl archivo no fue encontrado. Imposible leer datos....");
Console.WriteLine("\nPresione enter para continuar");
public static int CantSocios(double[] capital)
foreach (double valor in capital)
if (valor > 0) cantidad++;
public static double LeerCapital()
double capital = 0; string error = "";
Console.Write("{0}Ingrese capital: $ ", error);
capital = double.Parse(Console.ReadLine());
catch (FormatException e)
public static void EliminarDatos(ref string[] nombre, ref double[] capital, ref string[] nick)
Console.WriteLine("\n\n....ELIMINANDO DATOS DESDE MEMO+ARCHIVO DE TEXTO");
if(File.Exists("sociedad.txt") )
File.Delete("sociedad.txt");