Ejercicios C#

Iniciado por Hendrix, 27 Abril 2007, 22:42 PM

0 Miembros y 1 Visitante están viendo este tema.

lordram

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));
        }

    }
}

ECDundy

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;

        }

    }

}
public void homework(){
for(int i=0;i<100;i++)Console.WriteLine("I will not throw paper airplanes in class");
}

ECDundy

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);
            }

        }
public void homework(){
for(int i=0;i<100;i++)Console.WriteLine("I will not throw paper airplanes in class");
}

ECDundy

#13
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.
Citarusing 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);
            }

        }
    }
}
public void homework(){
for(int i=0;i<100;i++)Console.WriteLine("I will not throw paper airplanes in class");
}

chrominum

#14
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  :xD

Mi solución al ejercicio 1:

Código (csharp) [Seleccionar]
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:
Código (csharp) [Seleccionar]
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:

Código (csharp) [Seleccionar]
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) ;
        }
    }
}

ECDundy

respecto al metodo Fibonacci. ArcheritONE le dio un bonito toque, sin embargo esta incorrecto. Al igual que el mio en parte, explico:
si n=0 en el problema de Fibonacci tenemos que la sucecion no tiene solucion. Y es facilmente demostrable.
Luego si n<=2 el resultado siempre sera 1 como corresponde.
Quedaria entonces de la siguiente manera.
   public static long Fibonacci(int n)
        {
            if (n == 0) throw new InvalidOperationException();
            else return (n <= 2) ? 1 : Fibonacci(n - 2) + Fibonacci(n - 1);
        }
saludos
public void homework(){
for(int i=0;i<100;i++)Console.WriteLine("I will not throw paper airplanes in class");
}

Ruben Yiyo

Ejercicio 1:
Escribe un programa que calcule la letra del NIF a partir del número del DNI. La letra se obtiene calculando el resto de la división del número del DNI por 23. A cada resultado le corresponde una letra: 0=T; 1=R; 2=W; 3=A; 4=G; 5=M; 6=Y; 7=F; 8=P; 9=D; 10=X; 11=B; 12=N; 13=J; 14=Z; 15=S; 16=Q; 17=V; 18=H; 19=L; 20=C; 21=K; 22=E.
Ejemplo:
Dime tu DNI: 19901130

Tu NIF es: 19901130 - N


Ejercicio 2:
Escribe un programa que convierta números inferiores a 5000 escritos con cifras árabes en números escritos con números romanos. El valor de los diferentes números romanos es el siguiente: I=1, V=5, X=10, L=50, C=100, D=500, M=1000. Para hacer más fácil el ejercicio, puedes utilizar la notación romana antigua, en que podía haber hasta cuatro símbolos iguales seguidos.
Ejemplo:
Dime un número: 3799

En números romanos, 3799 se escribe MMMDCCLXXXXVIIII

Ejercicio 3:
Escribe un programa que pida dos años y calcule el número de años bisiestos que hay entre esos dos años (incluyendo los dos años) y el número de días total entre esos dos años (incluyendo los dos años).
Ejemplo:
Dime un año: 1800

Dime otro año: 1900

Entre 1800 y 1900 (ambos incluidos) hubo 24 años bisiestos y en total 36889 días.



Ejercicio 4:
Escribe un programa que te permita jugar a una versión simplificada del juego Master Mind. El juego consistirá en adivinar una cadena de números distintos. Al principio, el programa debe pedir la longitud de la cadena (de 2 a 9 cifras). Después el programa debe ir pidiendo que intentes adivinar la cadena de números. En cada intento, el programa informará de cuántos números han sido acertados (el programa considerará que se ha acertado un número si coincide el valor y la posición).
Ejemplo:
Dime la longitud de la cadena: 4

Intenta adivinar la cadena: 1234

Con 1234 has adivinado 1 valores. Intenta adivinar la cadena: 1243

Con 1243 has adivinado 0 valores. Intenta adivinar la cadena: 1432

Con 1432 has adivinado 2 valores. Intenta adivinar la cadena: 2431

Con 2431 has adivinado 4 valores. Felicidades



Ejercicio 5:
Escribe un programa que sea capaz de jugar al Master Mind con las reglas del ejercicio anterior. Al principio, el programa debe pedir la longitud de la cadena (de 2 a 9 cifras). Después, el programa debe ir intentando adivinar la cadena de números.
Ejemplo:
Dime la longitud de la cadena: 4

Piensa una cadena de 4 cifras distintas.

¿Es 2431 ? Dime cuántas cifras he acertado: 1

¿Es 1324 ? Dime cuántas cifras he acertado: 2

¿Es 4321 ? Dime cuántas cifras he acertado: 0

¿Es 1234 ? Dime cuántas cifras he acertado: 4

Gracias por jugar conmigo.




POR FAVOR AYUDENME EN ESTOS EJERCICIOS LO MAS PRONTO POSIBLE !!! SALUDOS !!!!
Código (csharp) [Seleccionar]