Avatar billede swamboo Seniormester
03. februar 2008 - 00:02 Der er 11 kommentarer og
1 løsning

dobbelt array

Hvordan definerer man en dobbelt array?
Jeg skal bruge en der hedder:
Kontrol(400,3)
Meget gerne en int, datetime, datetime - hvis det er muligt

Og hvordan skriver man i den?

Er det bare Kontrol(2,3)=datetime.today;
Avatar billede arne_v Ekspert
03. februar 2008 - 00:03 #1
Lav et 1 dimensionelt array af en class/struct med 3 fields.
Avatar billede arne_v Ekspert
03. februar 2008 - 00:04 #2
Syntaxen vil så være:

Kontrol[i].T = DateTime.Now;
Avatar billede arne_v Ekspert
03. februar 2008 - 00:05 #3
object[,] kontrol = new object[400,3];
kontrol[2,3] = DateTime.Now;

er syntaktisk validt, men noget forfærdeligt kode !
Avatar billede swamboo Seniormester
03. februar 2008 - 00:12 #4
Jeg kan godt li din kommentar "noget forfærdeligt kode !".

Men jeg har brug for at angive et ref.nr, med start og slut dato. Hvordan holder jeg ellers styr på det - jeg er fra gamle dage vant til at bruge disse dobbelt array's - men tiden er måske løbet fra dem...
Avatar billede arne_v Ekspert
03. februar 2008 - 00:14 #5
Som jeg skrev: lav en struct med 3 felter eller en klasse med 3 private fields ? 3 public properties og lav så et 1 dimensionelt array af det.
Avatar billede swamboo Seniormester
03. februar 2008 - 00:16 #6
OK - jeg beklager - men jeg fatter ikke hvad du skriver - jeg er nok lidt for ny i c# til at fange fidusen i det...
Avatar billede arne_v Ekspert
03. februar 2008 - 00:24 #7
En class var nok pænere end en struct, men lad os starte med en struct.

public struct D
{
  public int Id;
  public DateTime T1;
  public DateTime T2;
}
...
D[] kontrol = new D[400];
...
kontrol[2].T2 = DateTime.Now;
Avatar billede swamboo Seniormester
03. februar 2008 - 00:29 #8
OK ja, nu giver det mening...
Jeg må hellere give dig point med det samme, for det kommer nok til at tage et par dage at få det ind i min kode.
Men jeg tror jeg har ideen nu... 1000 tak!

Denne kode giver ingen problemer i at tildele kontrol[96].t2 en værdi før alle de forrige, vel...
Avatar billede arne_v Ekspert
03. februar 2008 - 00:47 #9
Nej.

Og svar.
Avatar billede swamboo Seniormester
09. februar 2008 - 00:49 #10
Hej Arne
Det her Struct virker fint!
Men jeg har lige et par uddybende spørgsmål - hvis det er ok - ellers åbner jeg bare et nyt spørgsmål.
1) Er det meget besværligt at sortere Id - og følger T1 og T2 i så fald med?
2) Er det muligt at redefinere D[] kontrol = new D[400];
eller glemmer den så alle data??
Avatar billede arne_v Ekspert
09. februar 2008 - 21:28 #11
Eksempel på sortering:

using System;

namespace E
{
    public struct D
    {
          public int Id;
          public DateTime T1;
          public DateTime T2;
    }
    public class Program
    {
        public static void Main(string[] args)
        {
            D[] kontrol = new D[3];
            kontrol[0].Id = 102;
            kontrol[0].T1 = DateTime.Now;
            kontrol[0].T2 = DateTime.Now.AddHours(1);
            kontrol[1].Id = 103;
            kontrol[1].T1 = DateTime.Now;
            kontrol[1].T2 = DateTime.Now.AddHours(2);
            kontrol[2].Id = 101;
            kontrol[2].T1 = DateTime.Now;
            kontrol[2].T2 = DateTime.Now.AddHours(3);
            Console.WriteLine("Before sort:");
            foreach(D d in kontrol)
            {
                Console.WriteLine(d.Id + " " + d.T1 + " " + d.T2);
            }
            Array.Sort<D>(kontrol, delegate(D x, D y){ return x.Id - y.Id; });
            Console.WriteLine("After sort:");
            foreach(D d in kontrol)
            {
                Console.WriteLine(d.Id + " " + d.T1 + " " + d.T2);
            }
            Console.ReadKey();
        }
    }
}
Avatar billede arne_v Ekspert
09. februar 2008 - 21:29 #12
Hvis du med redefinere mener ændre antallet af elementer, så skift fra D[] til List<D>.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester