• Domingo 22 de Diciembre de 2024, 14:27

Autor Tema:  Problema con struct en accion o subprograma.  (Leído 3701 veces)

principiantecsharp

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Problema con struct en accion o subprograma.
« en: Martes 27 de Agosto de 2013, 13:26 »
0
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

        }
   

       

    }
}
« última modificación: Martes 27 de Agosto de 2013, 19:20 por ProfesorX »

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:Problema con struct en accion o subprograma.
« Respuesta #1 en: Martes 27 de Agosto de 2013, 19:41 »
0
Hola principiantecsharp.

Mira, el error "An object reference is required for the non-static field, method, or property" se debe a que no puedes llamar a Metodos no estaticos desde metodos estaticos.

Dato que Main() es estatico, no puedes llamar a CreaCosaBuena();

Tienes dos soluciones a este problema:

Solucion 1. Creas una referencia al objeto donde esta el metodo CreaCosaBuena(), en este caso el objeto (clase) es Program

Código: [Seleccionar]
            Program mi_variable = new Program();
            mi_variable.CreaCosaBuena(NumRuta, ne, nr, cosilla, ev, cv, vv, cf);

Solucion 2. Declaras el metodo CreaCosaBuena() como estatico:

Código: [Seleccionar]
        static void CreaCosaBuena(int NumCosa, int ne, int nr, tipoInformacionCosa [] cosilla, float ev, float cv, float vv, float cf)

Saludos :)
« última modificación: Martes 27 de Agosto de 2013, 19:45 por ProfesorX »

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

principiantecsharp

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re:Problema con struct en accion o subprograma.
« Respuesta #2 en: Miércoles 28 de Agosto de 2013, 11:15 »
0
Muchas gracias. Lo estoy probando y al menos no me da errores al picarlo.

Espero que así funcione.

Gracias, de verdad.