Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de
Autor
|
Tema: Ejercicios C# (Leído 42,992 veces)
|
|
Hendrix
|
Propongo esta serie de ejercicios inventados al momento: Ejercicios matematicosEjercicio nº1: - Calcular la letra del DNI a partir de un numero introducido Algoritmo para sacar la letra del DNIEjercicio nº 2: - A partir del algoritmo del ejercicio anterior, crear numeros aleatorios validos para una letra del DNI previamente introducida. Ejercicio nº 3: - Crear una aplicacion que te pida un año y verifique si el año es bisiesto o no. Ejercicio nº 4: - Crear una aplicacion que pida un numero y haga la succeción de Fibonacci.Ejercicio nº 5: - Crear uina aplicacion que pida un numero de filas y respecto a estas, dibuje un triangulo como el siguiente: * *** ***** ******* ********* Ejercicio nº 6: - Crear una alpicacion que pida un numero y lo devuelva en letras, por ejemplo: Numero introducido: 356 Resultado: trescientos cincuenta y seis Ejercicios con archivos:Ejercicio nº 7: - Crear una funcion para hacer un diccionario de fuerza bruta de 4 filas y lo guarde todo en un fichero. Ejemplo de fuerza bruta aaaa aaab aaac aaad aaae .. .. .. zzzy zzzz ejercicio nº 8: - Crear una funcion la cual se le introduzca el nombre de un archivo de texto y lo guarde, palabra por palabra, por ejemplo: Archivo fuente: Esto son ejercicios para aprender a programar en C# Archivo resultado: Esto son ejercicios para aprender a programar en C# Texto a ordenar:Leonardo de Pisa o Leonardo Pisano o Leonardo Bigollo, también llamado Fibonacci, fue un matemático italiano, famoso por la invención de la sucesión de Fibonacci, surgida como consecuencia del estudio del crecimiento de las poblaciones de conejos, y por su papel en la popularización del sistema de numeración posicional en base 10 en Europa. Ejercicio nº 9: - Crear una funcion la cual, a partir del Archivo resutlado del anterior ejercicio, lo ordene alfabeticamente y lo deje del mismo formato que el Archivo resultado (es decir, linea a linea). Creo que ya es suficiente, a medida que vaya apsando el tiempo, si nadie lo postea, posteare yo mismo las soluciones (estos ejercicios son facilitos, es lo unico que se me venia a la cabeza). Un Saludo.
|
|
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
|
Meta
|
using System;
using System.Collections.Generic;
using System.Text;
namespace DNILetra
{
class Program
{
static void Main(string[] args)
{
Dictionary<int,char> Letras = new Dictionary<int,char>();
Letras.Add(0,'T'); Letras.Add(12,'N');
Letras.Add(1,'R'); Letras.Add(13,'J');
Letras.Add(2,'W'); Letras.Add(14,'Z');
Letras.Add(3,'A'); Letras.Add(15,'S');
Letras.Add(4,'G'); Letras.Add(16,'Q');
Letras.Add(5,'M'); Letras.Add(17,'V');
Letras.Add(6,'Y'); Letras.Add(18,'H');
Letras.Add(7,'F'); Letras.Add(19,'L');
Letras.Add(8,'P'); Letras.Add(20,'C');
Letras.Add(9,'D'); Letras.Add(21,'K');
Letras.Add(10,'X'); Letras.Add(22,'E');
Letras.Add(11,'B');
Console.Write("Introduce nº DNI: ");
string snumber = Console.ReadLine();
int inumber = -1;
if ((snumber.Length != 8) || (!Int32.TryParse(snumber, out inumber)))
{
throw new ArgumentException("No válido.");
}
else
{
inumber = inumber % 23;
Console.WriteLine("Letra: {0}",Letras[inumber]);
}
Console.ReadKey();
}
}
}
Un cordial saludos.
fácil no????????
|
|
|
|
|
En línea
|
|
|
|
|
Hendrix
|
fácil no????????
Nunca dije lo contrario...  Repsecto al codigo, funciona perfectamente...  Un Saludo.
|
|
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
|
Meta
|
A ver quién lo hace en modo Visual. No hace falta, pero...
... para aprender novatos está bien.
|
|
|
|
|
En línea
|
|
|
|
Yhoda
Desconectado
Mensajes: 1
|
Esta fue la solucion que encontre del arbolito de navidad
using System; using System.Collections.Generic; using System.Text;
namespace ConsoleApplication13 { class Program { static void Main(string[] args) { Console.Write("Escribe un numero"); string str = Console.ReadLine(); double f = double.Parse(str); if (f > 25) f = 25;
for (int i = 0; i < f; i++) { Console.CursorTop=i; int k = 39-i; int l = 40 + i; for (int j = k; j < l;j++ ) { Console.CursorLeft=j; Console.Write("*");
} } Console.Read(); } } }
y este al de Fibonacci
using System; using System.Collections.Generic; using System.Text;
namespace ConsoleApplication12 { class Program { static void Main(string[] args) { Console.Write("Escribe un numero"); string str = Console.ReadLine(); double f = double.Parse(str); double i = 0, g = 1, h = 0; Console.WriteLine(i); Console.WriteLine(g); for (; h <= f; ) { h = i + g; i = g; g = h; Console.WriteLine(h);
} } } }
|
|
|
|
|
En línea
|
|
|
|
ECDundy
Desconectado
Mensajes: 8
throw new exception(":)");
|
esta es mi solucion recursiva al ej 4 public static int fibonacci(int k) { int fib; if (k<=2) { fib =1; } else { fib= fibonacci(k-1)+ fibonacci(k-2); } return fib; }
|
|
|
|
|
En línea
|
public void homework(){ for(int i=0;i<100;i++)Console.WriteLine("I will not throw paper airplanes in class"); } 
|
|
|
ECDundy
Desconectado
Mensajes: 8
throw new exception(":)");
|
Esta es mi solucion recursiva al ejercicio #5(En particular este ejercicio me ah dejado dudas en cuanto a si mi codigo esta suficientemente optimisado) Espero que lo disfruten tal como yo:
using System;
namespace piramide { class Class1 { static void Main(string[] args) { for (int i=0;i<80;i++) { Piramide p = new Piramide(); p.Show (i); } }
} class Piramide { bool flag; int val,val1; public void Show(int n) { string esp=" "; string ast="*"; if(n==0&&!flag)Console.WriteLine(); else if (n==1&&!flag)Console.WriteLine(ast); else if (n==2&&!flag)Console.WriteLine(ast+ast); else { if(!flag) { val1=n; val=(n-1)/2; flag=true; } for (int i=0;i<val-1;i++)esp+=" "; for (int k=1;k<val1-2*(esp.Length);k++)ast+="*"; Console.Write(esp+ast); Console.WriteLine(); val--; if(esp.CompareTo(" ")!=0)Show(val); else { for(int j=0; j<val1;j++)Console.Write("*"); Console.WriteLine (); } } } } }
|
|
|
|
« Última modificación: 4 Mayo 2008, 06:35 por ECDundy »
|
En línea
|
public void homework(){ for(int i=0;i<100;i++)Console.WriteLine("I will not throw paper airplanes in class"); } 
|
|
|
lordram
Desconectado
Mensajes: 9
|
Ahí va mi solución para el ejercicio 1:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace ElHacker { class Program {
static Func<int, char> ObtenerLetra = x => "TRWAGMYFPDXBNJZSQVHLCKE"[x % 23];
static void Main(string[] args) { Console.Write("Introduzca su DNI: "); Console.WriteLine("Su letra es: {0}",ObtenerLetra(Convert.ToInt32(Console.ReadLine()))); }
} }
|
|
|
|
|
En línea
|
|
|
|
lordram
Desconectado
Mensajes: 9
|
Ejercicio 2:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace ElHacker { class Program {
static void Main(string[] args) { Console.Write("Introduzca la letra del DNI: "); char letra = Convert.ToChar(Console.ReadLine().ToUpper()); int posicionLetra = "TRWAGMYFPDXBNJZSQVHLCKE".IndexOf(letra);
Console.Write("Introduzca cuantos números deséa generar: "); int numero = Convert.ToInt32(Console.ReadLine());
Random rnd = new Random(DateTime.Now.Millisecond); for (int i = 0; i < numero;i++) Console.Write("{0} ", 23 * rnd.Next(1000000, 3500000) + posicionLetra); }
} }
|
|
|
|
|
En línea
|
|
|
|
lordram
Desconectado
Mensajes: 9
|
Para el 3º:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace ElHacker { class Program {
static void Main(string[] args) { Console.Write("Introduzca un año: "); int year = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("El año {0}es bisiesto", EsBisiesto(year) ? "" : "NO "); }
static Func<int, bool> UltimoAno = x => x % 100==0; static Func<int, bool> SecularBisiesto = x => x % 400==0; static Func<int, bool> Bisiesto = x => x % 4 == 0;
static bool EsBisiesto(int ano) { if (!Bisiesto(ano)) return false; return (UltimoAno(ano) && SecularBisiesto(ano) || !UltimoAno(ano)); }
} }
|
|
|
|
|
En línea
|
|
|
|
lordram
Desconectado
Mensajes: 9
|
Ejercicio 4:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace ElHacker { class Program {
static Func<int, int> TerminoN = numero => Enumerable.Range(0, numero).Aggregate(new { X = 1, Y = 0 }, (p, a) => new { X = p.Y, Y = p.X + p.Y }).Y;
static void Main(string[] args) { Console.Write("Introduzca un número: "); int number = Convert.ToInt32(Console.ReadLine()); for (int i = 0; i < number; i++) Console.Write("{0} ", TerminoN(i)); }
} }
|
|
|
|
|
En línea
|
|
|
|
ECDundy
Desconectado
Mensajes: 8
throw new exception(":)");
|
Respuesta al ej #6using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace letras_a_numeros { class Program { static void Main(string[] args) { Console.WriteLine(enletras(Console.ReadLine())); Console.ReadLine(); }
public static string enletras(string nu) {
string res, dec = "";
Int64 int_s;
int tens;
double nro;
try {
nro = Convert.ToDouble(num);
}
catch {
return "";
}
int_s = Convert.ToInt64(Math.Truncate(nro));
tens = Convert.ToInt32(Math.Round((nro - int_s) * 100, 2));
if (tens > 0) {
dec = " CON " + tens.ToString() + "/100";
}
res = toText(Convert.ToDouble(int_s)) + dec;
return res;
}
private static string toText(double value) {
string Num2Text = "";
value = Math.Truncate(value);
if (value == 0) Num2Text = "CERO";
else if (value == 1) Num2Text = "UNO";
else if (value == 2) Num2Text = "DOS";
else if (value == 3) Num2Text = "TRES";
else if (value == 4) Num2Text = "CUATRO";
else if (value == 5) Num2Text = "CINCO";
else if (value == 6) Num2Text = "SEIS";
else if (value == 7) Num2Text = "SIETE";
else if (value == 8) Num2Text = "OCHO";
else if (value == 9) Num2Text = "NUEVE";
else if (value == 10) Num2Text = "DIEZ";
else if (value == 11) Num2Text = "ONCE";
else if (value == 12) Num2Text = "DOCE";
else if (value == 13) Num2Text = "TRECE";
else if (value == 14) Num2Text = "CATORCE";
else if (value == 15) Num2Text = "QUINCE";
else if (value < 20) Num2Text = "DIECI" + toText(value - 10);
else if (value == 20) Num2Text = "VEINTE";
else if (value < 30) Num2Text = "VEINTI" + toText(value - 20);
else if (value == 30) Num2Text = "TREINTA";
else if (value == 40) Num2Text = "CUARENTA";
else if (value == 50) Num2Text = "CINCUENTA";
else if (value == 60) Num2Text = "SESENTA";
else if (value == 70) Num2Text = "SETENTA";
else if (value == 80) Num2Text = "OCHENTA";
else if (value == 90) Num2Text = "NOVENTA";
else if (value < 100) Num2Text = toText(Math.Truncate(value / 10) * 10) + " Y " + toText(value % 10);
else if (value == 100) Num2Text = "CIEN";
else if (value < 200) Num2Text = "CIENTO " + toText(value - 100);
else if ((value == 200) || (value == 300) || (value == 400) || (value == 600) || (value == 800)) Num2Text = toText(Math.Truncate(value / 100)) + "CIENTOS";
else if (value == 500) Num2Text = "QUINIENTOS";
else if (value == 700) Num2Text = "SETECIENTOS";
else if (value == 900) Num2Text = "NOVECIENTOS";
else if (value < 1000) Num2Text = toText(Math.Truncate(value / 100) * 100) + " " + toText(value % 100);
else if (value == 1000) Num2Text = "MIL";
else if (value < 2000) Num2Text = "MIL " + toText(value % 1000);
else if (value < 1000000) {
Num2Text = toText(Math.Truncate(value / 1000)) + " MIL";
if ((value % 1000) > 0) Num2Text = Num2Text + " " + toText(value % 1000);
}
else if (value == 1000000) Num2Text = "UN MILLON";
else if (value < 2000000) Num2Text = "UN MILLON " + toText(value % 1000000);
else if (value < 1000000000000) {
Num2Text = toText(Math.Truncate(value / 1000000)) + " MILLONES ";
if ((value - Math.Truncate(value / 1000000) * 1000000) > 0) Num2Text = Num2Text + " " + toText(value - Math.Truncate(value / 1000000) * 1000000);
}
else if (value == 1000000000000) Num2Text = "UN BILLON";
else if (value < 2000000000000) Num2Text = "UN BILLON " + toText(value - Math.Truncate(value / 1000000000000) * 1000000000000);
else {
Num2Text = toText(Math.Truncate(value / 1000000000000)) + " BILLONES";
if ((value - Math.Truncate(value / 1000000000000) * 1000000000000) > 0) Num2Text = Num2Text + " " + toText(value - Math.Truncate(value / 1000000000000) * 1000000000000);
}
return Num2Text;
}
}
}
|
|
|
|
|
En línea
|
public void homework(){ for(int i=0;i<100;i++)Console.WriteLine("I will not throw paper airplanes in class"); } 
|
|
|
ECDundy
Desconectado
Mensajes: 8
throw new exception(":)");
|
Respuesta al ejercicio #8 public static void Write_Text(string str,string FileName) {
try { if (File.Exists(FileName)) { using (StreamWriter writer = new StreamWriter(FileName)) { string[] Separated = str.Split(' '); foreach (string k in Separated) { writer.WriteLine(k); } writer.Close(); } } } catch (Exception ex) { throw new Exception("Error" + ex); }
}
|
|
|
|
|
En línea
|
public void homework(){ for(int i=0;i<100;i++)Console.WriteLine("I will not throw paper airplanes in class"); } 
|
|
|
ECDundy
Desconectado
Mensajes: 8
throw new exception(":)");
|
Ejercicio #7 Mi solucion recursiva no debe ser la mas optima. Pero he tenido que pensarla unos cuantos dias para hacerla. Asi que buena o mala aqui esta. El algoritmo recursivo para toda la cadena sale en 3 lineas pero para un numero espesifico de caracteres es un poco mas complicado. En este caso mi codigo les permite espesificar el numero de caracteres a combinar con todos los caracteres de un array de caracteres. El constructor te pide el archivo a crear o guardar el index, que son la cantidad de caracteres a combinar y finalmente un array de caracteres como referencia. Agradecimientos especiales al primo William UH, ya que sin el no hubiera esclarecido algunas dudas respecto a la combinatoria en general. using System; using System.Collections.Generic; using System.Text; using System.IO;
namespace ECDundy.Programmer { class ECDundy_Combinatorial { static void Main(string[] args) {
char[] arr = new char[26] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; Combinatorial p = new Combinatorial(@"c:\Combinations.txt", 4, arr); p.Create();
}
} class Combinatorial { private char[] Elements; private string Result, FileName; private List<string> _List; private int Count,Index; StreamWriter writer; public Combinatorial(string FileName, int Index, params char[] Elements) { this.FileName = FileName; this.Elements = Elements; this.Index = Index; writer = new StreamWriter(FileName); Count=-1; Result = ""; _List = new List<string>(); } public void Create() { Combining_Characters(Elements, Result, _List, Index); writer.Close(); } private void Combining_Characters(char[] Elements, string Result, List<string> _List, int Index) { char[] temp = new Char[Index]; string temp2 = "";
if (Result.Length == Elements.Length) { Count++; for (int i = Elements.Length - 1, k = 0; i > (Elements.Length) - Index - 1; i--, k++) { temp[k] = Result; } temp2 = new string(temp); if (!_List.Contains(temp2)) { _List.Add(temp2); Write_Text(temp2); } } else { for (int i = 0; i < Elements.Length; i++) { if (Count == _List.Count) break; else Combining_Characters(Elements, Result + Elements, _List, Index); } } } private void Write_Text(string str) { try { writer.WriteLine(str); } catch (Exception ex) { throw new Exception("Error" + ex); }
} } }
|
|
|
|
« Última modificación: 10 Julio 2008, 08:40 por ECDundy »
|
En línea
|
public void homework(){ for(int i=0;i<100;i++)Console.WriteLine("I will not throw paper airplanes in class"); } 
|
|
|
chrominum
Desconectado
Mensajes: 564
Viceroy: No es lo que tengo, es COMO lo tengo
|
Estoy aprendiendo C# desde que me baje Visual Studio 2005 (es decir, ayer), asi que no se metan conmigo si hago cosas innecesarias o mal hechas  Mi solución al ejercicio 1: using System; using System.Collections.Generic; using System.Text; namespace LetraDNI { class LetraDNIApp { static void Main(string[] args) { int NumerosDNI; string LetrasDNI = "TRWAGMYFPDXBNJZSQVHLCKE"; char[] Letras = new char[22]; Letras = LetrasDNI.ToCharArray(); Console.Write("Escriba sus numeros de DNI: "); NumerosDNI = Convert.ToInt32(Console.ReadLine()); Console.Write("Su letra del dni es la {0}.", Letras[NumerosDNI % 23]); int Pausa = Console.Read(); } } } Mi solución al ejercicio 3: using System; using System.Collections.Generic; using System.Text; namespace Ejericicio3 { class Ejericicio3App { static void Main(string[] args) { int Año; Console.Write("Introduce un año: "); Año = Convert.ToInt32(Console.ReadLine()); Console.Write("El año {0} ", Año); if ((Año % 4 == 0 && Año % 100 != 0) || Año % 400 == 0) { Console.WriteLine("es bisiesto."); } else { Console.WriteLine("no es bisiesto."); } Console.Read(); } } } Mi solución al ejercicio 4: using System; using System.Collections.Generic; using System.Text; namespace Ejericio4 { class Ejericio4App { static void Main(string[] args) { Console.Write("Introduce un numero: "); int Numero = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("f({0}) = {1}", Numero, Fibonacci(Numero)); Console.ReadKey(); } public static int Fibonacci(int Numero) { return (Numero < 2) ? Numero : Fibonacci(Numero - 1) + Fibonacci(Numero - 2) ; } } }
|
|
|
|
« Última modificación: 14 Agosto 2008, 10:55 por ArcheritONE »
|
En línea
|
|
|
|
|
|