Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Sixtoex en 17 de Octubre 2014, 21:23
-
Bueno pues eso, si alguien sabe como puedo mejorar el código que lo diga
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Ejercicio
{
class Program
{
static void Main(string[] args)
{
int sumatorio = 0;
try
{
for (int i = 1; i <= 5; i++)
{
Console.Write("Ingrese el número{0}:", i);
int convertirValorSumar = int.Parse(Console.ReadLine());
sumatorio = sumatorio + convertirValorSumar;
}
Console.WriteLine("El sumatorio es: {0}", sumatorio);
}
catch (System.IO.IOException Ex)
{
Console.WriteLine(Ex.Message);
}
catch (System.OutOfMemoryException Exe)
{
Console.WriteLine(Exe.Message);
}
catch (ArgumentOutOfRangeException Exes)
{
Console.WriteLine(Exes.Message);
}
catch (OverflowException Exes)
{
Console.WriteLine(Exes.Message);
}
catch (FormatException Exes)
{
Console.WriteLine(Exes.Message);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
int factorial = 5;
Console.Write("ingrese un numero entero");
int convertirValorFactorial = int.Parse(Console.ReadLine());
for (int j = 1; j <convertirValorFactorial;j++ )
{
factorial = j * factorial;
}
Console.WriteLine(factorial);
}
}
}
-
Hola, las mejoras que yo plantearía son:
Aquí parece que hay demasiadas líneas para capturar un detalle de la excepción, pero realmente ¿es tan importante el detalle?
catch (System.IO.IOException Ex)
{
Console.WriteLine(Ex.Message);
}
catch (System.OutOfMemoryException Exe)
{
Console.WriteLine(Exe.Message);
}
catch (ArgumentOutOfRangeException Exes)
{
Console.WriteLine(Exes.Message);
}
catch (OverflowException Exes)
{
Console.WriteLine(Exes.Message);
}
catch (FormatException Exes)
{
Console.WriteLine(Exes.Message);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Yo simplemente dejaría
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Menos líneas, el programa más claro y creo que te funcionará prácticamente igual.
Más abajo has escrito int factorial = 5; pero esto no lo veo acertado. Normalmente las variables numéricas se inicializan a cero, aquí estás inicializando a 5 y eso puede confundir. Realmente da igual a qué valor inicialices porque después será sobreescrito, pero para ser más claros y no inducir confusión veo mejor inicializar a cero.
Luego hay una cosa que no estoy seguro si funciona bien: si piedes el factorial de 3 debe devolverte 1*2*3 que es 6, pero tú has puesto desde 1 hasta j<convertirValorFactorial con lo cual en vez de darte como resultado 3 te daría como resultado 2 (error porque haría 1*2 en lugar de 1*2*3). ¿Eso te funciona bien como lo tienes?