# Aiuto su un problema

**URL:** <https://www.ruby-forum.com/t/aiuto-su-un-problema/234626>\
**Category:** IT\
**Created:** [March 18, 2015, 1:31pm UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626 "2015-03-18T13:31:10Z")\
**Posts on this page:** 19\
**Page:** 4

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [May 14, 2015, 7:12pm UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/61 "2015-05-14T19:12:07Z")

</div>

Gotcha  
On May 14, 2015 7:05 PM, “Maurizio De Santis”  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [May 14, 2015, 7:16pm UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/62 "2015-05-14T19:16:13Z")

</div>

E infatti my fault:

> If you do not explicitly specify an initial value for memo, then the  
> first element of collection is used as the initial value of memo.

Il giorno gio 14 mag 2015 19:14 maurizio de magnis \<  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\> ha scritto:

---

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [May 14, 2015, 10:35pm UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/63 "2015-05-14T22:35:17Z")

</div>

scusate ragazzi ma giuro che non vi seguo …

perche il segno \* è presente qui:  
sum = Dir[’\*.txt’]

avendo sempre un nome diverso i file non vedo come potrei risolvere

---

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [May 14, 2015, 7:14pm UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/64 "2015-05-14T19:14:27Z")

</div>

Mmh, ma sai che forse no?  
Forse basta aggiungere || 0 in coda alla inject.  
On May 14, 2015 7:05 PM, “Maurizio De Santis”  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [May 14, 2015, 10:43pm UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/65 "2015-05-14T22:43:37Z")

</div>

Ti consiglio vivamente di:

- aprire il terminale
- posizionarti nella cartella contenente i file .txt
- lanciare la console Ruby con: irb
- provare ad eseguire alcuni comandi come: Dir[’\*.txt’]

è il principale vantaggio di Ruby 😉

2015-05-14 22:35 GMT+02:00 Francesco V. \<  
removed\_email\_address@domain.invalid\>:

---

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [May 15, 2015, 1:27am UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/66 "2015-05-15T01:27:12Z")

</div>

- nei nomi dei file spesso indica una wildcard, cioè tutto ciò che c’è  
in  
quel punto: per cui con \*.txt prendi tutti i file che finiscono per .txt

Il giorno gio 14 mag 2015 22:44 maurizio de magnis \<  
removed\_email\_address@domain.invalid\> ha scritto:

---

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [May 14, 2015, 10:44pm UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/67 "2015-05-14T22:44:47Z")

</div>

In realtà con la tua osservazione ho pensato che la mia soluzione non  
coprisse il caso in cui Dir[‘\*.txt’].count == 0 🙂  
Infatti [].inject(&:+) # =\> nil

2015-05-14 19:15 GMT+02:00 Maurizio De Santis  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

---

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [May 15, 2015, 8:48am UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/68 "2015-05-15T08:48:13Z")

</div>

# per esempio eseguendo il programma e avendo come:

subtotale = 9

#salvando il file nella cartella entrate:

current\_timestamp = Time.now.strftime(’%F\_%H-%M-%S\_%z’)

entrate = “entrate/subtotale\_#{current\_timestamp}.txt”

File.write entrate, subtot

#eseguendo il programma varie volte mi ritrovo vari file nella  
#cartella entrate ad esempio

subtotale\_2015-05-15\_08-14-39\_+0200.txt

subtotale\_2015-05-15\_08-30-30\_+0200.txt

#a fine giornata devo eseguire l’operazione di sommare i vari subtotale

# quindi a questo punto

chiusura = gets.chomp  
if chiusura == ‘chiusura serale’  
sum = Dir[‘entrate/\*.txt’].map do |entrate|  
File.read(entrate)  
end.map do |content|  
content.strip.to\_f  
end.inject(&:+)

non riesco a capire come riuscire a sommarli

---

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [May 15, 2015, 11:13am UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/69 "2015-05-15T11:13:24Z")

</div>

Continuo a non capire quali valori dovrei inserire se non ho un nome  
fisso per i file dato che cambia continuamente la data e l’ora .  
Poi non capisco come avviare irb partendo dalla directory del programma

---

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [May 15, 2015, 9:47am UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/70 "2015-05-15T09:47:14Z")

</div>

# dal tuo codice

testi = Dir[‘entrate/\*.txt’].map do |entrate|  
File.read(entrate)  
end

# testi # [“1”,“2.3”,“3”]

valori = testi.map do |content|  
content.strip.to\_f  
end

# valori # [1.0, 2.3, 3.0]

sum = valori.inject(&:+)

# sum # 6.3

# gioca con irb per vedere cosa sisalva nelle variabili come ti

suggerivano

# Gio

Il 15/mag/2015 08:48 “Francesco V.”  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
ha scritto:

---

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [May 15, 2015, 11:17am UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/71 "2015-05-15T11:17:23Z")

</div>

Ad esempio scrivo

C:\Users\PC\>desktop\meva\entrate\irb

non va , mi parte avviando normalmente cosi :

C:\Users\PC\>irb

---

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [May 15, 2015, 2:09pm UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/72 "2015-05-15T14:09:20Z")

</div>

scusami per la mia stupidaggine se lo ripeto ancora una volta,  
allora apro il prompt dei comandi e scrivo la directory dei file

desktop\meva\entrate e premo invio

e mi restituisce questo

“desktop\meva\entrate” non è riconosciuto come comando interno o  
esterno,  
un programma eseguibile o un file batch.

come faccio a posizionarmi nella cartella e lanciare il comando ruby -e  
‘p Dir["\*.txt"]’

---

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [May 15, 2015, 11:20am UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/73 "2015-05-15T11:20:42Z")

</div>

> Continuo a non capire quali valori dovrei inserire se non ho un nome  
> fisso per i file dato che cambia continuamente la data e l’ora .

Allora fai cos:

- Tramite terminale posizionati nella cartella d’interesse: cd  
/percorso/verso/entrate
- Lancia questo comando: ruby -e ‘p Dir[“\*.txt”]’

Vedrai la lista dei tuoi file .txt: questo perch “\*.txt” sta per “prendi  
tutti i file che finiscono con .txt”.

> Poi non capisco come avviare irb partendo dalla directory del programma

Basta che prima di lanciare irb entri nella cartella d’interesse:

cd /percorso/verso/entrate  
irb

–

Maurizio De Santis

Il giorno 15 maggio 2015 11:13, Francesco V. \<  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\> ha scritto:

---

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [May 15, 2015, 2:13pm UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/74 "2015-05-15T14:13:38Z")

</div>

Devi fare cd: cd C:/users/PC/desktop/meva/entrate

Il giorno ven 15 mag 2015 14:09 Francesco V. \<  
removed\_email\_address@domain.invalid\> ha scritto:

---

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [May 15, 2015, 2:20pm UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/75 "2015-05-15T14:20:14Z")

</div>

ok ora si , a cosa si riferisce cd

---

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [May 15, 2015, 2:55pm UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/76 "2015-05-15T14:55:22Z")

</div>

finalmente ho capito come utilizzare al meglio un altro importantissimo  
strumento irb, tuttavia posso dire al programma di leggere questi file  
ma il ragionamento logico con il quale far si che li sommi tra di loro  
non riesco proprio a capirlo

---

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [May 16, 2015, 3:05pm UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/77 "2015-05-16T15:05:03Z")

</div>

Guarda, fondamentalmente la logica questa:

1. Prendi la lista di tutti i file della cartella
2. Ne tiri fuori i rispettivi contenuti
3. Li converti in interi
4. Sommi le conversioni ottenute

Per cui:

# 1.

files\_list = Dir[‘entrate/\*.txt’]

# 2.

files\_contents = files\_list.map { |v| File.read(v) }

# 3.

numbers = files\_contents.map { |v| v.to\_i }

# 4.

sum = numbers.reduce(&:+)

–

Maurizio De Santis

Il giorno 15 maggio 2015 14:55, Francesco V. \<  
removed\_email\_address@domain.invalid\> ha scritto:

---

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [December 16, 2015, 5:36pm UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/78 "2015-12-16T17:36:43Z")

</div>

=begin  
Un altro problema sugli array che ho riscontrato è qst:  
Ho bisogno di trovare un elemento specifico dell’array e trovata una  
corrispondenza, lo faccio passare come parametro di un metodo  
Esempio:  
=end

prodotti = [‘pasta’, ‘pane’, ‘farina’, ‘etc’]  
prezzi = [1.00, 2.00, 3.00, 4.00]

def spesa alimenti, prezzo

puts 'prezzo del ’ + alimenti + ’ = ’ + prezzo.to\_s

puts ‘Quanto prodotto ti serve?’

richiesta = gets.chomp.to\_i

totale = richiesta \* (prezzo.to\_i)

puts’ Totale: $ ’ + totale.to\_s  
end

# Apertura programma

puts ‘Quali prodotti intendi acquistare ?’  
operazione = gets.chomp

if operazione == ‘pasta’

spesa prodotti[0], prezzi[0]

elsif operazione == ‘pane’

spesa prodotti[1], prezzi[1]

elsif operazione == ‘farina’

spesa prodotti[2], prezzi[2]

else

puts ‘operazione non disponibile’

end

=begin  
E’ ovvio che così avro una ripetizione di codice assurda quindi devo  
trovare il modo per far cercare alla variabile “operazione” uno  
specifico elemento che non appena viene trovato sia passato come  
parametro.

Ho provato ad usare alcuni metodi della classe “enumerable”  
ma senza successo sarei molto felice se qualcuno mi potesse aiutare  
=end

---

<div class="post-metadata">

**Author:** ![pollopoop92](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@pollopoop92](https://www.ruby-forum.com/u/pollopoop92)\
**Post date:** [December 16, 2015, 4:46pm UTC](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626/79 "2015-12-16T16:46:24Z")

</div>

=begin  
un saluto a tutti, da qualche giorno ho necessita di risolvere una  
questione.  
Vorrei sapere se, passando come parametro di un metodo un elemento di un  
array, elaborandolo all’interno del metodo posso andarlo a sostituire  
all’interno dell’array da cui è stato preso. Per esempio avendo una  
situazione del genere:  
=end

array = [10, 20, 30, 40]

def sommare primo\_elemento

puts ‘Inserire il numero da sommare al primo elemento’

richiesta = gets.chomp

somma = richiesta + primo\_elemento

end

sommare 10

=begin  
devo andare a sostituire il valore del primo\_elemento dell’array “10”  
con il valore dato dalla variabile somma ( se per esempio avremmo  
inserito “5”) l’array risultante dovrebbe avere questi elementi :

[15, 20, 30, 40]

spero di essere stato chiaro e ringrazio tutti quelli che mi daranno una  
mano in questa piccola questione

=end

[Previous page](https://www.ruby-forum.com/t/aiuto-su-un-problema/234626.md?page=3)
