Visualizza i risultati del sondaggio: E' utile questo programma?

Chi ha votato
1. Non puoi votare questo sondaggio
  • Molto utile

    1 100.00%
  • Per niente utile

    0 0%
Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17
  1. #11
    Utente di HTML.it
    Registrato dal
    Oct 2019
    Messaggi
    15
    Certo
    Praticamente ho creato 3 file, nel primo chiedo all'utente il numero di pezzi differenti da tagliare (se non sa il numero esatto può metterne quanti ne vuole, avendo come value 0, e non modificare il campo, in modo che poi quei valori vengano scartartati), nel secondo elaboro il form generando tanti campi "lunghezza" e quantità" quanto è il totale inserito dall'utente, il terzo file invece esegue i calcoli e stampa una tabella con i risultati.
    Nel terzo file ho creato una classe dove dichiaro, tra le altre cose, la dimensione fissa massima dei tubi.
    Tramite queste funzioni mi creo l'array e lo ordino:

    codice:
            public function CreateForm(){
                if(empty($this->input->post())){
                    $this->load->view('CreateForm');
                }else{
                    $this->load->view('ParseRequest',['data'=>$this->input->post('np')]);
                }
            }
            public function parseRequest(){
                $data=[];
                foreach ($_POST['data'] as $k=>$v){
                    $v['len']+=10;
                    $data[]=[$v['qta'],$v['len']];
                }
                echo $this->creaLen($data)->html;
            }
            public function creaLen($data){
                $bs=[];
                foreach ($data as $k=>$v){
                    !isset($bs[$v[1]])?$bs[$v[1]]=$v[0]:$bs[$v[1]]+=$v[0];
                }
                krsort($bs);
                $data=[];
                foreach ($bs as $k=>$v){
                    $data[]=[$v,$k];
                }
                foreach ($data as $items){
                    $this->creaTravi($items);
                }
                $this->createOutput();
                return $this;
    Una volta fatto ciò non resta che calcolare il tutto e stampare la tabella:

    codice:
    public function creaTravi($data){
                for($i=0;$i<$data[0];$i++){
                    if($this->findInPath($data))$this->findLocation($data[1]);
                }
            }
            public function findInPath($data){
                $num=$data[0];
                $el=0;
                foreach ($this->result as $k=>$v){
                    foreach ($v['values'] as $items){
                        if($items==$data[1])$el++;
                    }
                }
                if($el>=$num)return false;
                else return true;
            }
            public function findLocation($len){
                if(empty($this->result))$this->Trave($len);
                else{
                    $loc=false;
                    foreach ($this->result as $k=>$v){
                        if(!$loc && $this->result[$k]['len']-$len>=0){
                           $this->result[$k]['values'][]=$len;
                           $this->result[$k]['len']-=$len;
                           $loc=true;
                        }
                    }
                    if(!$loc)$this->Trave($len);
                }
            }
            public function Trave($in){
                $this->result[]=['values'=>[$in],'len'=>$this->mLen-$in];
            }
    
            public function createOutput(){
               $table='<table border="1" bgcolor="#ffffff" bordercolor="black">
               <thead><tr><th>Verga</th><th>Elementi</th><th></th><th>N Pezzi</th><th></th><th>Sfrido</th></tr></thead><tbody></tbody>';
               $all_t=0;
               $sf=0;
               foreach ($this->result as $k=>$v){
                    $table.='<tr><td>'.($k+1).'</td><td><ul>';
                    $all_t+=count($v['values']);
                    foreach ($v['values'] as $items)$table.='<li>'.$items.'</li>';
                    $table.='</ul></td><th></th><td>'.count($v['values']).'</td><th></th><td>'.$v['len'].'</td></tr>';
                    $sf+=$v['len'];
                }
                $table.='</tbody>';
                $table.='<tfoot><tr><th>Verghe utilizzate: '.count($this->result).'</th>
                <th></th><th>Pezzi tagliati : '.$all_t.'</th><th></th><th>Scarto totale : '.$sf.'</th></tr></tfoot>';
                $table.='</table>';
                return $this->html=$table;
    Infine richiamo classe e funzione per stampare il tutto.
    Fatemi sapere cosa ne pensate, a me funziona alla perfezione

    Spero vi sia utile

  2. #12
    Moderatore di XHTML e HTML L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    19,223
    hai tenuto conto dello spessore del taglio?
    per quanto piccolo modifica sempre il totale disponibile per singola verga.

  3. #13
    Utente di HTML.it
    Registrato dal
    Oct 2019
    Messaggi
    15
    Assolutamente.
    Nella funzione parseRequest ho questa riga:
    codice:
    $v['len']+=10;
    Il taglio occupa sempre circa 5mm da un lato e 5mm dall'altro.
    Anche se a volte si può usare il cosiddetto "taglio in comune" che non prevede aumenti, ma si usa solo in casi eccezionali

  4. #14
    Utente di HTML.it
    Registrato dal
    Oct 2019
    Messaggi
    15
    Vi mostro un esempio di funzionamento

    CreateForm.jpg
    ParseRequest.jpg
    risultato.jpg

  5. #15
    Moderatore di XHTML e HTML L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    19,223
    dagli esempi riportati vedo che non funziona come dovrebbe il calcolo del taglio perso.
    nel secondo record c'è l'esempio di 1510+1510+1260+1260+260, che da un totale di 5800 che corrisponde alla lunghezza della verga, rimane fuori lo spessore del taglio.
    lo stesso problema con gli altri record: non viene calcolata la sottrazione del taglio

  6. #16
    Utente di HTML.it
    Registrato dal
    Oct 2019
    Messaggi
    15
    Guarda che funziona correttamente
    Se ci fai caso tutte le misure nella tabella di risultato.php hanno 10mm in più rispetto alla loro lunghezza
    Infatti, per esempio, i pezzi che in ParseRequest hanno misura 1500, nella tabella finale misurano 1510

  7. #17
    Moderatore di XHTML e HTML L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    19,223
    ah ok... avevo guardato solo la tabella finale.
    dove però metterei comunque i dettagli, per chiarezza verso l'operatore

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved.