P P Medlem sedan jan. 2001 2 204 inlägg Frågan 1 nov. 2004 18:51 #1 Har två arrayer som ser ut så här
1
{A,x1,x2,x3,x4,A,x5,x6,x7,x8,x9...}
x1,x2...xn godtyckliga tal.
När arrayen slutar så lägger jag till till ett element "A", så att jag får början och slut med "A"
och
{1,5}
arrayen talar om vilka element i första arrayen som är "A".
Jag vill beräkna medelavståndet mellan de olika A:na. Hade helt enkelt tänkt mig:
(array1.element.size-1)/(array2.element.size+1)
men får helt orimliga resultat....
Medelavstånd? Mellan vad?
Och hur menar du, ska sista och första elementen i array1 båda vara=A?
P P Medlem sedan jan. 2001 2 204 inlägg
nitro2k01 skrev:
Medelavstånd? Mellan vad?
Medelavstånd mellan de olika "A":na, alltså medelavstånd i element räknat.
nitro2k01 skrev:
Och hur menar du, ska sista och första elementen i array1 båda vara=A?
Sista elementet är inte A från början, utan jag lägger till det i arrayen för att få "jämt" antal, eller hur man nu ska säga...
P PeW Medlem sedan juni 2000 10 432 inlägg Borde väl vara antal_ej_A/(antal_A-1)
Så som pseudo:
array = "AxxAxA"
nof_A=0
nof_E=0
loop array to end
if element == 'A' then
nof_A = nof_A + 1
else
nof_E = nof_E + 1
end loop
average = nof_E/(nof_A-1)
Ger ett average om 1.5
edit:
Bättre exempel
P P Medlem sedan jan. 2001 2 204 inlägg ok, formulerade mig lite otydligt kanske;
arrayen: "A12A123" borde ju ge ett medel på 2,5. "A12A123A" borde väl ge ett medel på 1.66....
P PeW Medlem sedan juni 2000 10 432 inlägg
P skrev:
ok, formulerade mig lite otydligt kanske;
arrayen: "A12A123" borde ju ge ett medel på 2,5. "A12A123A" borde väl ge ett medel på 1.66....
Jag ändrade mitt exempel innan du postade ;)
Ifall man gör som du menar att alltid mata in ett A, sist. Så ger "A12A123A" ett medel på 2.5 i den editerade lösningen ovan.
P P Medlem sedan jan. 2001 2 204 inlägg array = "AxxAxA"
Borde väl ge medel på 1 och
array = "AxxAx"
Medel, 1,5
* red , ok läste fel.
P PeW Medlem sedan juni 2000 10 432 inlägg
P skrev:
array = "AxxAxA"
Borde väl ge medel på 1 och
array = "AxxAx"
Medel, 1,5
* red , ok läste fel.
Fast förutsättningen du gav är ju att arrayen startar och slutar med A.
P PeW Medlem sedan juni 2000 10 432 inlägg AxxAxA borde med den givna förutsättningen om att arrayen avslutas med ett A, ge ett medel om 1.5
AxxAx bör inte ens inträffa om man tänker på den förutsättningen. Men om det ändå gör det bör medel då bli 2 och inte 1.5, fast då får man lägga in lite mer villkor i min givna algoritm eftersom den förutsätter att arrayen avslutas med ett A såsom angavs i första inlägget i tråden.
P PeW Medlem sedan juni 2000 10 432 inlägg Ifall att "AxxAxx" ska vara godtagbart är det bara att peta in en "rollback" efter den första traverseringen:
if last element != 'A' then
while array[--index] != 'A' do
nof_E = nof_E - 1
Så kommer bara de mellanrummen (mellan A:na)som finns räknas med.