在C#中使用数组的第一步

时间:2015-06-06 03:40:36

标签: c# arrays pointers

我试图实现数组,以便我的程序保存任何数量的数据,相当于C#的这个

 int nT, i;
cTrabajador *apTrabajador;
do{
        cout<<"\t Indique el numero de Trabajadores: ";
        cin>>nT;
        }while(nT<=0||nT>=40);
        apTrabajador=new cTrabajador[nT];
for(i=0;i<nT;i++)
        apTrabajador[i].leer();/
        system("cls");
        cout<<"\t Lista de  Trabajadores"<<endl;
for(i=0;i<nT;i++)
        apTrabajador[i].imprimir ();
        delete[]apTrabajador;
        system("pause");
        return 0;

我以前用C ++编程,程序存储nT个数组,以便获得&#34; trabajadores&#34;的所有数据。所以我试着理解我现在在C#中用C ++学习的语法,我很乐意欢迎一些帮助

Registro是类中向用户请求数据的方法,Imprimir是同一类中将存储数据打印到数组中的另一种方法

    namespace Poligono
    {
    class Program
    {
        static void Main(string[] args)
        {
            int i,n;
            int[] Calculos;

            Console.WriteLine("\n Insert the number of items");
            string entry = Console.ReadLine();
            int.TryParse(entry, out n);
            Calculos = new int[n];

            for (i = 0; i < n; i++){
                 VolumenPrisma.Registro();      //needs to be stored in "n" arrays
                }
            for (i = 0; i < n; i++){
                 VolumenPrisma.Imprimir();      //needs to be stored in "n" 
                }
        }
    }
    }

/ *该课程为* /

namespace Poligono
{
public class VolumenPrisma
{
public static int Apotema, TamLado, NumLados, Altura, Lado;
public static int Perimetro, Area, Volumen;

public static int cPerimetro (int NumLados, int Lado){
    int P;
    P=(NumLados*Lado);
    return P;    
}

public static int cVolumen(int Area, int Altura)
{
    int V;
    V = Area * Altura;
    return V;
}

public static int cArea(int Perimetro, int Apotema)
{
    int A;
    A = (Perimetro * Apotema)/2;
    return A;
}

public static void Registro(){
        Console.WriteLine("Indique No. de lados: ");
        VolumenPrisma.Lado = Int32.Parse(Console.ReadLine());

        Console.WriteLine("Indique tamanio de apotema: ");
        VolumenPrisma.Apotema = Int32.Parse(Console.ReadLine());    

        Console.WriteLine("Indique tamanio de lado: ");
        VolumenPrisma.TamLado = Int32.Parse(Console.ReadLine());

        Console.WriteLine("Indique la altura: ");
        VolumenPrisma.Altura = Int32.Parse(Console.ReadLine());
        Console.WriteLine("----------------------------------------");

        Perimetro= cPerimetro(TamLado, Lado);   
        Area = cArea(Perimetro, Apotema);
        Volumen = cVolumen(Area, Altura);
}

public static void Imprimir() {
    Console.WriteLine("Lados= {0} ", Lado);
    Console.WriteLine("Tam Lado = {0} ", TamLado);
    Console.WriteLine("Apotema = {0} ", Apotema);
    Console.WriteLine("Perimetro = {0} ", Perimetro);
    Console.WriteLine("Area = {0} ", Area);
    Console.WriteLine("Volumen = {0} ", Volumen);
}
}
}

1 个答案:

答案 0 :(得分:1)

首先,您需要使用VolumenPrisma的实例数组,因为您需要存储输入数据。

VolumenPrisma[] Calculos = new VolumenPrisma[n]();

然后你注册&#34; (获取输入参数)这些数据使用:

for (i = 0; i < n; i++)
{
    Calculos[i] = new VolumenPrisma();    // create a new instance to store the data
    VolumenPrisma.Registro(Calculos[i]);      //get the parameters for this prisma
}

for (i = 0; i < n; i++)
{
    VolumenPrisma.Imprimir(Calculos[i]);      //Print results for that prisma
}

完整的代码如下:

namespace Poligono
{
    class Program
    {
        static void Main(string[] args)
        {
            int i, n;
            VolumenPrisma[] Calculos;

            Console.WriteLine("\n Insert the number of items");
            string entry = Console.ReadLine();
            int.TryParse(entry, out n);
            Calculos = new VolumenPrisma[n];

            for (i = 0; i < n; i++)
            {
                Calculos[i] = new VolumenPrisma();    // create a new instance to store the data
                VolumenPrisma.Registro(Calculos[i]);      //get the parameters for this prisma
            }

            for (i = 0; i < n; i++)
            {
                VolumenPrisma.Imprimir(Calculos[i]);      //Print results for that prisma
            }
        }
    }
}

要在VolumenPrisma类中使用静态方法,您需要将VolumenPrisma的实例作为参数传递,并修改实例字段的加速器。

public class VolumenPrisma
{
    public int Apotema, TamLado, NumLados, Altura, Lado;
    public int Perimetro, Area, Volumen;

    public VolumenPrisma()
    {
    }

    public static int cPerimetro (int NumLados, int Lado)
    {
        int P;
        P=(NumLados*Lado);
        return P;    
    }

    public static int cVolumen(int Area, int Altura)
    {
        int V;
        V = Area * Altura;
        return V;
    }

    public static int cArea(int Perimetro, int Apotema)
    {
        int A;
        A = (Perimetro * Apotema)/2;
        return A;
    }

    public static void Registro(VolumenPrisma prisma)
    {
        Console.WriteLine("Indique No. de lados: ");
        prisma.Lado = Int32.Parse(Console.ReadLine());

        Console.WriteLine("Indique tamanio de apotema: ");
        prisma.Apotema = Int32.Parse(Console.ReadLine());

        Console.WriteLine("Indique tamanio de lado: ");
        prisma.TamLado = Int32.Parse(Console.ReadLine());

        Console.WriteLine("Indique la altura: ");
        prisma.Altura = Int32.Parse(Console.ReadLine());
        Console.WriteLine("----------------------------------------");

        prisma.Perimetro = cPerimetro(prisma.TamLado, prisma.Lado);
        prisma.Area = cArea(prisma.Perimetro, prisma.Apotema);
        prisma.Volumen = cVolumen(prisma.Area, prisma.Altura);
    }

public static void Imprimir(VolumenPrisma prisma) { 
        Console.WriteLine("Lados= {0} ", prisma.Lado);
        Console.WriteLine("Tam Lado = {0} ", prisma.TamLado);
        Console.WriteLine("Apotema = {0} ", prisma.Apotema);
        Console.WriteLine("Perimetro = {0} ", prisma.Perimetro);
        Console.WriteLine("Area = {0} ", prisma.Area); 
        Console.WriteLine("Volumen = {0} ", prisma.Volumen);
       }
}

但我同意所有这些听起来有点奇怪,使用非静态方法会更容易。