Buongiorno a tutti.
Sto creando, tramite php, una sorta di "programma conta verghe (tubi)".
Mi spiego meglio.
In molte carpenterie sono presenti delle macchine laser che tagliano le verghe (ossia i tubi) in vari pezzi disegnati dagli uffici tecnici.
Queste verghe hanno una lunghezza fissa di 5800 mm.
Ora, mettiamo il caso che in ordine ci sono:
5 pezzi di lunghezza 3000 mm
5 pezzi di lunghezza 2000 mm
5 pezzi di lunghezza 500 mm
e 5 pezzi di lunghezza 300 mm
Per ottimizzare la quantità di verghe da utilizzare, bisogna far si che in ogni verga ci sia il maggior numero di pezzi possibili.
Per esempio:
Verga 1: 1 pezzo da 3000 mm, 1 pezzo da 2000 mm, 1 pezzo da 500 mm e un pezzo da 300mm.
Si procede così fino a quanto le quantità da produrre vengono termitate.
Al giorno d'oggi questa gestione avviene manualmente, ma con l'avvento delle nuove tecnologie bisogna ottimizzarsi sotto ogni punto di vista.
Ora, io mi sto cimentando in questa programmazione ma mi sorgono delle difficoltà (non utilizzando php e html da diverso tempo).
Avevo in mente di chiedere all'utente il numero di articoli da dover tagliare (nell'esempio precedente 4 per intenderci), in modo da generare un array multidimensionale composto da 4 righe.
Tramite il metodo POST (o anche GET dato che non sono dati sensibili), ricevere questa informazione dalla pagina html e generare questo array dove si richiedono anche:
Dimensioni dei pezzi, quantità e codice articolo.
Avendo un risultato del genere:
$fabbisogni = array(
"Codice" => array ();
"Dimensione" => array ();
"Quantità" => array ();
);
Dopodichè, tramite cicli for e while, ottimizzare l'utilizzo delle verghe e stampare a video il numero di verghe utilizzate ed il modo in cui vengono utilizzate, per ottenere un risultato simile:
Numero verghe utilizzate: 5
Verga 1: codice1 (3000 mm quantità 1), codice2 (2000mm quantità 1) ...... e così via.
Verga 2: .....
.....
N.B: Se in una verga avanzano, per esempio, 200 mm, ma il pezzo più piccolo misura 300 mm, non posso utilizzare questi 200 mm e 100 mm di un'altra verga. La quantità rimasta sarebbe dunque da considerare "scarto".
Mi sorgono delle difficoltà nella creazione dinamica di questi array e nei cicli.
In particolare nei seguenti punti:
- Permettere all'utente di aggiungere articoli in base alle necessità (non sapendo a priori di quanti articoli differenti necessita).Sostanzialmente dovrei inserire un pulsante "+" chie aggiungerà due tre campi di testo ("codice articolo", "lunghezza" e "quantità").
- Memorizzare i dati in un array composto da altri 3 array ("codice articolo", "lunghezza", "quantità")
- Creazione di un ciclo che scorra gli aray "lunghezza" e "quantità". Questo ciclo, partendo dalla misura del tubo "nuovo" (lunghezza fissa memorizzata in una variabile "tubo"), comincerà a sottrarre i tubi da tagliare, verificando sempre se il più lungo ci possa stare o altrimenti passando immediatamente a quello più corto e così via
- Ogni volta che un tubo viene terminato memorizzare gli articoli tagliati all'interno di quel tubo in un ulteriore array che verrà stampato a video al termine di tutti gli articoli richiesti dall'utente
- Ogni volta che un tubo arriva a "0" o comunque non c'è pià spazio per tagliare altri pezzi, "tubo" ritorna alla sua lunghezza fissa di partenza e la variabile "tubi utilizzati" aumenta di 1.
Come risultato finale l'utente avrà: - Numero di tubi utilizzati
- Come viene tagliato ogni singolo tubo
So che chiedo tanto, tantissimo, ma non riesco veramente a tirarmene fuori
Qualcuno può darmi una mano?
Grazie in anticipo