Avatar billede webcreator Nybegynder
20. oktober 2004 - 09:51 Der er 15 kommentarer og
1 løsning

Arrays uden startværdi

Hej Eksperter.

Jeg har oprettet et array : int[] positions = new int[3]

Dette array indeholder positioner (dvs. tal) til et andet array. Problemet er, at mit array som standard indeholder 0, og dermed "referere" til position 0 i et andet array. Er der en måde at tømme mit array på? Eller sætte indholdet NULL ?
Avatar billede arne_v Ekspert
20. oktober 2004 - 09:56 #1
int er en simpel data type og vil altid indeholde en værdi.

Kan du ikke lave en konvention om at -1 betyder ingen værdi ?
Avatar billede webcreator Nybegynder
20. oktober 2004 - 10:06 #2
Det tror jeg ikke.

Det jeg reelt gør er, at gennemløb et arary med tider. Her finder jeg de 3 mindste. Men for at jeg ikke får det samme tal 3 gange tjekker jeg på, om det allerede eksisterer i arrayet "positions". Og hvis det første tal i arrayet "Tider" rent faktisk ér det mindste, så vil det komme til at optræde 3 gange i "positions"
Avatar billede webcreator Nybegynder
20. oktober 2004 - 10:08 #3
.. og eftersom positioner referere til en position i et andet array (Tider), som har en fast størrelse, så kan jeg slet ikke bruge -1. Så vil jeg få en fejl. Arrayet strækker sig fra 0 - 29 (altså 30 tider)
Avatar billede arne_v Ekspert
20. oktober 2004 - 10:11 #4
-1 vil være et ulovligt array index

så kan du ikke test på om det er -1 først

for(int i = 0; i < n; i++)
{
  if(pos[ix] >= 0)
  {
      // så er der en rigtig værdi
  }
}
Avatar billede webcreator Nybegynder
20. oktober 2004 - 10:24 #5
Det tror jeg ikke jeg kan bruge. Min kode ser nemlig sådan ud :

if (tider[i] <= tider[positions[j])
    positions[j] = i;

Dvs. at positionen for tiden i arrayet "tider" bliver lagt i arrayet "positions" hvis tiden vel at mærke er højere end tiden, som der på nuværende tidspunkt referes til - håber du forstå :)
Avatar billede arne_v Ekspert
20. oktober 2004 - 10:40 #6
Måske:

if (tider[i] <= (positions[j] >= 0 ? tider[positions[j]] : int.MaxValue))
    positions[j] = i;
Avatar billede webcreator Nybegynder
20. oktober 2004 - 10:59 #7
Ja, det virkede sørme! Tusind tak :)
Jeg forsøger lige at finde ud af, hvad det helt nøjagtigt betyder. Men hvis det driller, så er det muligt jeg lige spørger dig om, hvordan og hvorledes det fungere :)
Avatar billede webcreator Nybegynder
21. oktober 2004 - 11:56 #8
Kan det passe at : positions[j] >= 0 ? tider[positions[j]] : int.MaxValue
er en slags IF-statement ?

Kunne jeg få dig til at forklare den lidt nærmere?
Avatar billede arne_v Ekspert
21. oktober 2004 - 12:00 #9
Ja.

resultat = udtryk ? værdi1 : værdi2

svarer til

if(udtryk)
{
  resultat = værdi1;
}
else
{
  resultat = værdi2;
}
Avatar billede webcreator Nybegynder
21. oktober 2004 - 12:01 #10
.. og jeg er heller ikke helt med på int.MaxValue - hvor kommer "int" nu fra ?
Avatar billede arne_v Ekspert
21. oktober 2004 - 12:07 #11
int er en type.

MaxValue er denm største værdi som typen kan antage
Avatar billede webcreator Nybegynder
21. oktober 2004 - 12:09 #12
Ok, vidste naturligvis godt at int er en type, og at MaxValue giver højeste værdi - men vidste ikke at de kunne bruges sådan - smart :)
Avatar billede arne_v Ekspert
21. oktober 2004 - 12:13 #13
Prøv at slå op i .NET dokumentation i namespace System og find
struct Int32.

Alle de metoder den har kan du også kalde på int.
Avatar billede webcreator Nybegynder
21. oktober 2004 - 13:23 #14
Ok, Tak :)

Jeg tror faktisk jeg har styr på det nu. Tusind tak for hjælpen. Kan jeg få et svar ?
Avatar billede arne_v Ekspert
21. oktober 2004 - 13:47 #15
svar
Avatar billede arne_v Ekspert
06. november 2004 - 18:19 #16
Så mangler du bare at acceptere svaret
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