• Viernes 19 de Abril de 2024, 10:00

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - principiantecsharp

Páginas: [1]
1
C# / Redondear a más y redondear a menos
« en: Miércoles 12 de Marzo de 2014, 20:34 »
Hola, ante todo muchas gracias por leer mi duda.

Querría saber la manera para poder redondear al entero mayor y al entero menor el resultado de una función que será un número real.

Es decir:
En el primer caso, necesito el código para que de un cálculo que obtenga un número real, éste me lo redondee al entero mayor, así pues como ejemplo:

2,2334 = 3; 45,44=46; etc.

En segundo lugar, lo mismo, pero que me redondee al entero inferior:
2,2334 = 2; 45,44=45; etc.

Muchas gracias.

2
C# / Re:Problema con struct en accion o subprograma.
« en: Miércoles 28 de Agosto de 2013, 11:15 »
Muchas gracias. Lo estoy probando y al menos no me da errores al picarlo.

Espero que así funcione.

Gracias, de verdad.

3
C# / Problema con struct en accion o subprograma.
« en: Martes 27 de Agosto de 2013, 13:26 »
Hola, necesito algún consejo, explicación o algo por el estilo para mi siguiente problema.
Para empezar mis conocimientos de programación son muy limitados y las únicas nociones que tengo son con C++, que apenas recuerdo, pero por cosas de la vida debo realizar un programa para consola con C# (quiero decir que por favor las respuestas sean lo más sencilla posible y dirigidas a la solución).
Estoy realizando el programa, y pretendía delegar operaciones a subprogramas como acciones y funciones. En las funciones, no tengo ningún problema, pues ya he mirado que funcionaran, pero sí que me lío en las acciones.
Intento hacer una acción donde se me construya una estructura que he declarado previamente, pero me indica el error: Error   1   An object reference is required for the non-static field, method, or property 'ConsoleApplication1.Program.CreaCosaBuena(int, int, int, ConsoleApplication1.Program.tipoInformacionCosa [], float, float, float, float)'
En CrearCosaBuena, también tendré que introducir acciones y funciones, pero supongo que si resuelvo este caso, me servirá la misma metodología para entonces.
No estoy seguro de si el problema viene, porque estoy metiendo la struct, y lo hago mal o es que no se puede, o debería crear la acción de otro modo.


El programa resumido es:
Código: [Seleccionar]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;


namespace ConsoleApplication1
{
    class Program
    {
        static int ne, nr, Num;
        static int i;
        static float cv, ev, vv, cf;
       

        static double[,] M;


       struct tipoInformacionCosa
        {

            public int valuno;
            public int valdos;
           

        }

        struct CosaBuena
        {
            public List<int> p;
public float l;
           

        }

        struct Ordren
        {
            public List<int> c;
        }


        private static void Main(string[] args)
        {

            //Introducción de datos generales.           



            ne = Convert.ToInt32(Console.ReadLine());

            tipoInformacionCosa cosilla = new tipoInformacionCosa [ne];

           
            cv = Convert.ToSingle(Console.ReadLine());
           
            ev = Convert.ToSingle(Console.ReadLine());
           
            vv = Convert.ToSingle(Console.ReadLine());
                        cf = Convert.ToSingle(Console.ReadLine());

            //Introducció de los datos de cosilla.

            i = 0;
            while (i <= ne)
            {

               

                cosilla [i].valuno = Convert.ToInt32(Console.ReadLine());

               
                cosilla [i].valdos = Convert.ToInt32(Console.ReadLine());

                i = i + 1;

            }

            //Calcul de la matriz.
           
            M = new double[ne + 1, ne + 1];

            for (int f = 0; f < M.GetLength(0); f++)
            {
                for (int c = 0; c < M.GetLength(1); c++)
                {

                    M [f, c] =
} }



            //Calculo nr.
            nr = Calculanr(ne);
           

            //Calculo CosaBuena.

            Cosa = 1;

            while (CosasPorHacer(Cosa, nr))
            {
                CreaCosaBuena(NumRuta, ne, nr, cosilla, ev, cv, vv, cf);
                Cosa = Cosa + 1;

            }

     
        }


// Colección de acciones y funciones.

        //Función per a calcular el nr, no me da problemas.
        public static int Calculanr(int num)
        {
            ….
            return v;
        }

        //Utilitzada en la funció anterior.
        public static int factorial(int n)
        {
            int f = n;
            for (int i = 1; i < n; i++)
                f *= i;
            return f;
        }


        //Funció boleana per al bucle de construcció de Cosas, tampoco me da problema.
        public static bool RutesPerFer(int Num,int nr)
        {
            ….
            return sigue;
        }

        // Acció per a construir la Cosa Buena.

        void CreaCosaBuena(int NumCosa, int ne, int nr, tipoInformacionCosa [] cosilla, float ev, float cv, float vv, float cf)
        {
//Aquí dento me gustaría crear un CosaBuena a partir de realizar acciones y funciones donde intervienen la struct cosilla,
//los demás parámetros, y los que me crearé del tipo Orden

        }
   

       

    }
}

4
C# / Crear estas rutas?
« en: Viernes 16 de Agosto de 2013, 13:34 »
Hola a todos,
Estoy realizando una aplicación de consola en C#, y necesito crear una serie de rutas entre determinados puntos de la siguiente manera:
Las rutas que pretendo encontrar son todas las que existan obtenidas aplicando la heurística del vecino más próximo. Quiero guardar todos los casos para luego trabajar  con ellos, las rutas no deben repetir puntos.
Por ejemplo si tengo 4 puntos más el inicial que llamo 0:

Las de solo un punto, que siempre las tendré: 0-1-0, 0-2-0, 0-3-0, 0-4-0.
Las de dos puntos, que también las deberé coger todas: 0-1-2-0, 0-1-3-0, 0-1-4-0, 0-2-3-0, 0-2-4-0, 0-3-4-0.
Y a partir de aquí sí que el orden es importante. En las rutas con tres puntos, necesito en cada caso la más corta:
Para mí no es lo mismo en 1,2,3: 0-1-2-3-0, que 0-3-1-2-0 o 0-2-3-1-0. Y de estas solo necesito la más corta según distancias. Lo mismo con los conjuntos 1,2,4; 1,3,4; 2,3,4.
Luego en este ejemplo de 4 puntos, me quedaría hacer la ruta de menos distancia  con 1,2,3,4.
Tengo los datos de los puntos y la distancia entre ellos en una estructura y una matriz respectivamente:
La matriz de distancias es simétrica:
static double[,] Mdist;

Los puntos me los guardo en una struct:

        struct tipoPunto
        {

            public int Y;
            public int Z;
            public float peso;
           
        }

Y para guardar estas estructuras que deseo crear, había pensado en una estructura donde en el List guardo el orden y  la ruta  en sí, en l la longitud del recorrido y en t, la del tiempo que lo obtendré a partir de la distancia.

        struct InfoRuta
        {
            public List<int> p;
            public float l;
            public float t;
            public float d;
            public float tp;
            public float c;

        }

Muchas gracias por leer mi pregunta.

5
C# / Re:Cómo guardar rutas?
« en: Jueves 15 de Agosto de 2013, 18:09 »
Muchas gracias ProfesorX por tu respuesta.
Ahora el siguiente paso de mi problema, es a manera de establecer las rutas, a ver si alguien me puede ayudar siguiendo este mismo hilo.

Las rutas que pretendo encontrar son todas las que existan obtenidas aplicando la heurística del vecino más próximo. Quiero guardar todos los casos para luego trabajar  con ellos, las rutas no deben repetir puntos.
Por ejemplo si tengo 4 puntos más el inicial que llamo 0:
Las de solo un punto, que siempre las tendré: 0-1-0, 0-2-0, 0-3-0, 0-4-0.
Las de dos puntos, que también las deberé coger todas: 0-1-2-0, 0-1-3-0, 0-1-4-0, 0-2-3-0, 0-2-4-0, 0-3-4-0.
Y a partir de aquí sí que el orden es importante. En las rutas con tres puntos, necesito en cada caso la más corta:
Para mí no es lo mismo en 1,2,3: 0-1-2-3-0, que 0-3-1-2-0 o 0-2-3-1-0. Y de estas solo necesito la más corta según distancias. Lo mismo con los conjuntos 1,2,4; 1,3,4; 2,3,4.
Luego en este ejemplo de 4 puntos, me quedaría hacer la ruta de menos distancia  con 1,2,3,4.

Ahora la parte del programa resumida sería esta:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;


namespace ConsoleApplication1
{
    class Program
    {
        static int ne, nr;
        static int i;
        static float cv;
        static int nposibilidades, ContadorRutas1, ContadorRutas2, nclientesruta, puntoactual;

        static double[,] Mdist;


        struct tipoPunto
        {

            public int Y;
            public int Z;
            public float p;
           


        }

        struct InfoRuta
        {
            public List<int> o;
            public float l;
            public float t;
            public float p;

        }



        private static void Main(string[] args)
        {

            //Introducción de datos           

            i = 1;


            Console.WriteLine(" Numero de puntos:");
            ne = Convert.ToInt32(Console.ReadLine());

            tipoPunto[] punto = new tipoPunto[ne + 1];

            Console.WriteLine(" Velocidad:");
            cv = Convert.ToSingle(Console.ReadLine());
           

            //Introducción de los datos del punto de partida.

           
            Console.WriteLine(" Y:");
            punto[0].Y = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine(" Z:");
            punto[0].Z = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine(" p:");
            punto[0].p = Convert.ToSingle(Console.ReadLine());

           

            //Introducción de datos de los otros puntos.

           

            while (i <= ne)
            {

                Console.WriteLine(" Entrar nuevo punto");
                Console.WriteLine(" Y:");
                cliente.Y = Convert.ToInt32(Console.ReadLine());

                Console.WriteLine(" Z:");
                cliente.Z = Convert.ToInt32(Console.ReadLine());

                Console.WriteLine(" p:");
                cliente.cs = Convert.ToSingle(Console.ReadLine());

               

                i = i + 1;

            }

            //Calculo de la matriz de distancias.

            Mdist = new double[ne + 1, ne + 1];

            for (int f = 0; f < Mdist.GetLength(0); f++)
            {
                for (int c = 0; c < Mdist.GetLength(1); c++)
                {

                    Mdist[f, c] = Math.Sqrt(Math.Pow(cliente[c].Y - cliente[f].Y, 2) + Math.Pow(cliente[c].Z - cliente[f].Z, 2));
                    Console.WriteLine(Mdist[f, c]);




                }
            }



            //Calculo número de rutas.
            nr = CalculaNumRutas(ne);

            //Calculo de rutas.

            ContadorRutes1 = 1;
            InfoRuta[] ruta = new InfoRuta[nr];
            nclientsruta = 1;
            ContadorRutes2 = 1;

            while (ContadorRutes1 <= nr)
            {

                nposibilitats = CalculPosibilitats(ne, nclientsruta);
                ContadorRutes2 = 1;

                while (ContadorRutes2 <= nposibilitats)
                {
                    ruta[ContadorRutes1].p = new List<int>();
                   
                    for (int j = 0; j < nclientsruta & puntactual <= ne; j++)
                    {


                        ruta[ContadorRutes1] = RutaSeleccionada(nclientsruta, puntactual, ruta[ContadorRutes1]);

                        puntactual = puntactual + 1;

                    }

                   
                    ContadorRutes2 = ContadorRutes2 + 1;
                    ContadorRutes1 = ContadorRutes1 + 1;

                }

                nclientsruta = nclientsruta + 1;

            }












        }

Y es  RutaSeleccionada(nclientsruta, puntactual, ruta[ContadorRutes1]); donde tenía pensado resolver el tema de las rutas.
Com ya dige, mis conocimientos son muy limitados y posiblemente haya maneras de optimizarlo, pero por eso pido ayuda.

Gracias de nuevo.


6
C# / Cómo guardar rutas?
« en: Miércoles 14 de Agosto de 2013, 14:22 »
Ante todo gracias por leer mi pregunta y aviso que quizás pregunto algo obvio, pero soy  muy novato.

El problema que tengo es que quiero hacer rutas (por ejemplo obtenidas aplicando HEURÍSTICA DEL VECINO MÁS PRÓXIMO), y no sé cómo guardar, o que variable crear para tenerlas almacenadas en un programa de consola en C#.

Por ahora tengo los puntos en una "struct", y las distancias entre ellos en una matriz (simétrica).

El caso es que me gustaría poder guardar las rutas que construya aplicando esa heurística teniendo para cada una de ellas, el orden de los puntos y ya guardar información como la distancia, el tiempo etc.
Y no solo eso, sino que fueran agrupando distinto número de puntos. Por ejemplo:
Ruta1: 1,2(pasa por esos puntos), su distancia es 3 y su tiempo 20.
Ruta2: 1,3(pasa por 1 y  3), y su  distancia es 6 y  su tiempo 40.
......
Ruta234: 3,5,8,4,1 (pasa por el punto 3, siguiendo 5,8,4 y acabando en 1), y su distancia es 134 y su tiempo 231.

Había pensado en algo estilo:

 struct Ruta
         {
             public Ordren p;
             public float l;
             public float t;             
             

         }

         y luego crear un vector o lo que fuese llamado "Orden" en el cual almaceno el orden de los puntos.

Lo he probado y no me sale, ni el construir las rutas ni el crearme las variables.

Vuelvo a darles las gracias y  espero sus respuestas.

7
C# / Que creo para guardar esta información?
« en: Miércoles 10 de Julio de 2013, 12:14 »
Buenos días,
Soy muy nuevo en el tema, y estoy intentando hacer un programa que necesito en C#.

Quería saber qué necesito y como lo creo y manipulo (no se si me vale una struct, o necesito una clase, una matiz, una tabla, una base de datos...) para almacenar lo siguiente:

Datos de clientes, de los cuales quiero guardar: nombre, coordenada x, coordenada y, demanda, coste. Así por ejemplo Cliente1: Juan, 34, 123, 5,5, 1345,45; Cliente2: María, 56, 34, 34,6, 6,00...
La cosa es que me gustaría poder guardar varios y controlar la cantidad con un contador, para acceder a ellos con algo parecido a :
cliente[1].nombre, o cliente[12].coste+cliente[9].coste, etc.

Supongo que es algo muy sencillo, pero yo no tengo ni idea... si además hay varias posibilidades y me las explican, mucho mejor.

Gracias de antemano.

Páginas: [1]