Arne Skrevet 24. juli 2007 Del Skrevet 24. juli 2007 Hei! Eg lurer på ein ting. Om eg har ein double med verdien 8,5 som skal fortelje kor midt-elementet i ein vector er, korleis skal eg gjere det då? vector[8,5] -----> Vil dette gi ein verdi, eller vil det gi verdien til den som har 8 i index, eller den som har 9 i index? Litt merkeleg, dette! Eg har nemleg ein double som endrer seg etter kor mange element som er i. Eg skal finne medianen, og då må eg vite om 8,5 vert runda opp til 9 eller skoren av til 8. Takk! Lenke til kommentar
GeirGrusom Skrevet 24. juli 2007 Del Skrevet 24. juli 2007 Tall blir alltid rundet nedover, så 8,5 vil bli 8, samme med 8,9 for den saks skyld. Det er mulig jeg blander mellom C++ og assembly nå da Men unasett så kan du ikke skrive vector[8.9] fordi indexeren kun tar integer som parameter, så du må i så fall caste til integer først vector[(int)8.5] Lenke til kommentar
Arne Skrevet 24. juli 2007 Forfatter Del Skrevet 24. juli 2007 I boka mi, så har dei vector[variabel], og variabelen kan t.d ha verdien 8.5. Boka heiter Acccelerated C++. Er det då ein feil i boka? Lenke til kommentar
GeirGrusom Skrevet 24. juli 2007 Del Skrevet 24. juli 2007 (endret) sikker på at det ikke står 8, 5? edit: kanskje forklare litt nærmere. Dette kan brukes i multidimensjonale arrays, altså matriser i dette tilfellet, som har to dimensjoner. En todimensjonal array kan defineres på to måter: Som et array av arrays, eller en array som blir delt opp. Nå er ikke jeg helt sikker på syntaksen her, siden jeg som regel gjør slike ting manuelt, men noe slikt: // Vanlig array med to dimensjoner int[,] arr; // Array av array int[][] arr; Hvis man vil oversette begge til pekere, ser de slik ut: // Vanlig array med to dimensjoner int *arr; // Array av array int **arr; Endret 24. juli 2007 av GeirGrusom Lenke til kommentar
Arne Skrevet 24. juli 2007 Forfatter Del Skrevet 24. juli 2007 Jo, det er sant! Det står 8,5, men har det noka betydning? Lenke til kommentar
GeirGrusom Skrevet 24. juli 2007 Del Skrevet 24. juli 2007 (endret) Ja, 8.5 er desimaltall (double), "8, 5" betyr at det er to dimensjoner. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 <- Dette er 8, 5 Endret 24. juli 2007 av GeirGrusom Lenke til kommentar
Arne Skrevet 24. juli 2007 Forfatter Del Skrevet 24. juli 2007 Vel, eg tek ein double og delar på to, og om doublen er t.d 9, får eg 4.5 eller 4,5 då? Lenke til kommentar
GeirGrusom Skrevet 24. juli 2007 Del Skrevet 24. juli 2007 (endret) Jeg kjenner egentlig ikke så mye til vector klassen må jeg inrømme. Men den bruker åpenbart operator [] Endret 24. juli 2007 av GeirGrusom Lenke til kommentar
Arne Skrevet 24. juli 2007 Forfatter Del Skrevet 24. juli 2007 Ja, han gjer nok det. Om ein t.d skal ha tak i det fyrste elementet i vectoren, skriv ein vector[0]. Lenke til kommentar
GeirGrusom Skrevet 24. juli 2007 Del Skrevet 24. juli 2007 Men uansett så er alltid[/] komma brukt til å skille parameter, i alle tilfeller i C++ punktum er desimalpunkt. Lenke til kommentar
Arne Skrevet 24. juli 2007 Forfatter Del Skrevet 24. juli 2007 Oki, takk skal du ha! Så slutninga vart då at resultatet vart 8? Lenke til kommentar
Arne Skrevet 25. juli 2007 Forfatter Del Skrevet 25. juli 2007 Hehe, no når eg faktisk brukte hjernen min, så fann eg ut at ein median faktisk kan vere eit deimaltal... Oppgåva gjekk ut på å lage eit program der ein skulle taste inn fleire verdiar etterfulgt av Ctrl + Z. Så skulle ein gi bådde gjennomsnittet og medianen. Lenke til kommentar
GeirGrusom Skrevet 25. juli 2007 Del Skrevet 25. juli 2007 (endret) vector<double> vec = vector<double>(); // Legg inn verdier; double val = 0; for(int i = 0; i > vec.length; val += vec[i++]); val /= vec.length; sånn? vet ikke om det heter length da.... Endret 25. juli 2007 av GeirGrusom Lenke til kommentar
Arne Skrevet 25. juli 2007 Forfatter Del Skrevet 25. juli 2007 (endret) Nei, slik gjer eg det: typedef vector<double>::size_type vecsz; vecsz size = numbers.size(); vecsz mid = size / 2; double median; double average = sum / ant; median = size % 2 == 0 ? (numbers[mid] + numbers[mid-1]) /2 : numbers[mid]; PS: Det er vector.size(). Endret 25. juli 2007 av Arne Lenke til kommentar
Arne Skrevet 25. juli 2007 Forfatter Del Skrevet 25. juli 2007 Ja, og så lurer eg på ein ting til, dette har med utrekning av gjennomsnitt. Om eg deler ein double på ein annan double, t.d 15 / 5, så får eg resultatet 5.28e-258. Kva betyr det...? Lenke til kommentar
GeirGrusom Skrevet 25. juli 2007 Del Skrevet 25. juli 2007 (endret) det er matematisk visning av tall med for mange desimaler. Scientific Notation edit: merker jeg er ganske rusten på C++ Like greit, jeg bruker det jo aldri Endret 25. juli 2007 av GeirGrusom Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå