Pagina 1 di 1

Problema Array

Inviato: martedì 26 novembre 2013, 10:45
da Caos88
Salve sono nuova del forum e avrei un piccolo problema che, purtroppo non riesco a risolvere .
In pratica ho un file con degli elementi numerici e dovrei fare la somma delle differenze tra elementi successivi; mi spiego meglio :
supponiamo che nel file ci siano questi valori
1
5
6
100
dovrei sviluppare uno script che faccia : (5-1)+(6-5)+(100-6).
ho provato a scivere questo codice :
cat startingPoints.txt | while read Time
do

array=$dato
i=$(($i+1))
done && i=$i A=array


n=i=$(($i-1))
for((j=1;j<=$(($n-1));j++))
do
somma=$somma+$(($(array[j+1])-$(array[j])))
echo "Cwin = $CWIN ; Somma = $somma"
done
in pratica ho salvato i dati in un array e poi ho creato un ciclo for che scorresse l'array e valutasse queste differenze.
Cio che mi chiedo : non c'è un modo più PULITO per farlo ?
Vi ringrazio in anticipo.

Re: Problema Array

Inviato: martedì 26 novembre 2013, 11:31
da dadexix86
Premessa: conviene utilizzare il tag [code][/code] per scrivere il codice, che così è illeggibile :)

Entrando nel merito, se sommi un elemento e al passo dopo lo sottrai, si cancellano.

Nel tuo esempio devi fare

Codice: Seleziona tutto

5-1 + 6-5 + 100-6
che riordino (la somma commuta) come

Codice: Seleziona tutto

-1+5-5+6-6+100
Che fa

Codice: Seleziona tutto

100-1=99
quindi (questo è vero in generale) basta che fai l'ultimo meno il primo :P

Re: Problema Array

Inviato: martedì 26 novembre 2013, 11:56
da Caos88
Uh Grazie mille non ci avevo pensato :)))
Posso chiederti un'altra cosa?

Re: Problema Array

Inviato: martedì 26 novembre 2013, 11:59
da dadexix86
Sì, certo :)

Ma se non è legata alla domanda metti [Risolto] nel titolo del primo post e aprine un'altra ;)

Re: Problema Array

Inviato: giovedì 5 dicembre 2013, 10:07
da Caos88
oK mi sa che ho cantato vittoria troppo presto ;(
purtroppo per come sono i miei dati non vale la regola :
( S2-S1)+(S3-S2)+ ... + (Sn - Sn-1 ) = Sn - S1
in quanto potrei avere una situazione del genere :
(S4-S1)+(S6-S5)+(S8-S6)
e quindi non valgono le semplificazioni .
I dati di cui devo fare questa somma di differenze si trovano in un file strutturato per colonne , tipo
PRIMA SECONDA TERZA
e la mia colonna di interesse è la PRIMA.
Potreste aiutarmi ? Grazie in anticipo

Re: Problema Array

Inviato: giovedì 5 dicembre 2013, 22:13
da 1001001
Ciao! Potresti postare un file di esempio e chiarire come viene deciso quali elementi sommare? Voglio dire, in quali casi hai la situazione ( S2-S1)+(S3-S2)+ ... + (Sn - Sn-1 ) e in quali no? Ad esempio la situazione (S4-S1)+(S6-S5)+(S8-S6) quando si verifica?

Re: Problema Array

Inviato: sabato 7 dicembre 2013, 9:37
da Caos88
Purtroppo questo non lo so perchè mi è stato gia fornito il file con questi dati e di questi devo fare solo la somma delle differenze tutto qui.

Re: Problema Array

Inviato: sabato 7 dicembre 2013, 11:20
da dadexix86
Ok, ma con quale logica devi sommare o sottrarre le varie righe?

Re: Problema Array

Inviato: sabato 7 dicembre 2013, 13:39
da GjMan78
Se ho capito quello che devi fare, cioè ottenere la somma delle differenze di due valori consecutivi

Codice: Seleziona tutto

SOMMA = ( S2-S1)+(S3-S2)+(S4-S3) ... + (Sn - Sn-1 )
la soluzione più logica è quella che hai postato tu stesso nel primo post.