Newsgroup: it.hobby.fai-da-te
Titolo: quesito matematico-informatico

Ciao a tutti.
Mi sono costruito un piccolo software che, date le dimensioni del pezzo,
mi 
calcola i pezzi/lamiera.
Facile.
 
Ora lo dovrei fare per i cerchi... e lě č un po' piů complesso. Perchč 
posizionando i tondi a righe disassate tra loro, ottengo un numero piů
alto.
Ora lo faccio in autocad, il programmino mi sarebbe proprio utile. Ne ho
visto 
uno vecchissimo sotto dos, ma non posso averlo.
Avete qualche idea di quale potrebbe essere il calcolo da fare?
 
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
 
 
 

alto.
 
Stai parlando di nesting?
 
-- 
Ciao, Alessio - 
http://www.sleepers.it
 
 
Materiale in italiano per Agent: 
http://agentit.altervista.org/
 

> Stai parlando di nesting?
 
Precisamente.
Ma devo programmare una macchina, devo solo per avere i costi.


 Ma devo programmare una macchina, devo solo per avere i costi.
 
ma cosa ho scritto?
NON devo programmare una macchina; devo invece avere i costi del pezzo.



meno male, sembrava scritto con la macchina Enigma del Terzo Raich.
 
 
 
 


 
Sul Manuale di Tranciatura e Stampaggio (Hoepli?) in appendice c'erano le 
tabelle (con formule) proprio per questo tipo ti tranciatura "da fascia" su 
una, due e tre file.
Cerca in rete.
 
 
 
 
 
 

 Avete qualche idea di quale potrebbe essere il calcolo da fare?
 
Ho tirato giů un becero programma in C:
Mancano tutti gli include e l'inserimento dei dadi l1, l2, d
Il programma č valido solo se ci sono meno di 100 righe e/o colonne di 
cerchi.
Il programma č molto ... becero ma dovrebbe funzionare.
 
 
/* l1 = larghezza lamiera */
/* l2 = lunghezza lamiera */
/* d = diametro cerchio */
 
float d1;   /* Punto di massima larghezza della fila da verificare */
float d2;   /* Punto di massima lunghezza della fila da verificare */
int i,j;
int pezzi = 0;  /* Numero di pezzi */
int riga = 0;   /* swap delle righe sfalsate 0=pari, 1=dispari */
 
for(i==0;i<100;i++)
{
 
   if(riga==0)
      d1 = d;
   else
      d1 = 3.0/2.0 * d;
 
   for(j=0;j<100;j++)
   {
      if(d1<l1 && d2<l2)
      {
         pezzi++;
         d1 += d;
      }
   }
   if(riga == 1) riga = 0;
   if(riga == 0) riga = 1;
   d2 += sqrt(3.0)/2.0 * d;
 
}
 
 
 

 Il programma č molto ... becero ma dovrebbe funzionare.
 
urca... ottimo, provo.
Grazie mille!


 Grazie mille!
 
Ogni errore e/o imprecisione non sarà addebitabile al sottoscritto.
Ricordo ancora quando feci un programma su carta, senza alcun test, un SORT. 
Poteva funzionare se non ci fosse stato una dimenticanza fatale ;)
 
Michele 
 
 

 se non ci fosse stato una dimenticanza fatale ;)
 
pensa te che io sono così vecio che potei essere uno degli
ultimi utenti dell'Univac dell'uni... a schede! Era un
vero tormento e mi fanno sorridere gli utenti win che si
lamentano se quel che devono fare richiede aprire una shell :D
 


Coi perforatori col char set Honeywell, incompatibile con quello univac. 
PEr cui, dopo aver scritto il programma sul quaderno, dovevi correggerlo 
in char set univac-honeywell. Poi perforavi le schede, portavi il tuo 
pacco all'addetto al lettore ed il giorno dopo passavi a ritirare il 
risultato dell'elaborazione. Che per le prime volte, immancabilmente, 
era un semplice "Abort" a caratteri cubitali su un foglio da 136 colonne 
e 66 righe... :)
 
Non sei il solo vecio, qui...

 Non sei il solo vecio, qui...
 
sigh, dovremmo aprire un ospizio informatico... :/

 sigh, dovremmo aprire un ospizio informatico... :/
 
Io era quello dall'altra parte dell'alveare... quello che raccattava le 
scatole di schede. Ma lavoravo su IBM 7090 e 360/67 all'inizio...
Fra i banchi di memoria del 360 tenevamo la brandina per dormire durante i 
turni di notte...
 
Paolo 
 
 

 ha scritto nel messaggio 
news:jguaq3$j44$1...@speranza.aioe.org...

Negli anni '70 le "schedine perforate" usate (carta da macero) erano pagate 
sui 250-270 Lire al Kg!
L'altra "carta" era buttata via.... a 25-30 Lire/kg.
Altra "merce" di valore era la "Plastica Termo-retrattile" delle confezioni 
di bottiglie per le cantine: stesso prezzo delle schedine. 
 
 

Dopo dura riflessione, Gustavo. ha scritto :

e un bel ma chicazzo senefrega non ce lo mettiamo?
 
 

 e un bel ma chicazzo senefrega non ce lo mettiamo?
 
No. 
 

 Il programma č molto ... becero ma dovrebbe funzionare.
 
Ecco .. riguardandolo mi sono accorto che mancava un inizializzazione per d2 
:)
 
/* l1 = larghezza lamiera */
/* l2 = lunghezza lamiera */
/* d = diametro cerchio */
 
float d1;   /* Punto di massima larghezza della fila da verificare */
float d2;   /* Punto di massima lunghezza della fila da verificare */
int i,j;
int pezzi = 0;  /* Numero di pezzi */
int riga = 0;   /* swap delle righe sfalsate 0=pari, 1=dispari */
 
d2 = d;    /* inizializzazione d2 */
 
for(i==0;i<100;i++)
{
... ecc. ecc.
 
Michele 
 
 

 Il programma è molto ... becero ma dovrebbe funzionare.
 
Provando a fare qualcosa di meno becero:
 
/* l1 = larghezza lamiera */
/* l2 = lunghezza lamiera */
/* d = diametro cerchio */
 
int pezzi = 0;  /* Numero di pezzi */
int n_righe = 0;   /* numero di righe totali */
int n_righe1 = 0;   /* numero di righe pari */
int n_righe2 = 0;   /* numero di righe dispari */
int n_cerchi1 = 0;   /* numero di cerchi nelle righe pari */
int n_cerchi2 = 0;   /* numero di cerchi nelle righe dispari */
 
if(d<l2)
{
   n_righe = int((l2-d)/(sqrt(3)/2*d))+1;
   n_righe1 = int(n_righe/2)+1;
   n_righe2 = n_righe-n_righe1;
}
else
{
   n_righe = 0;
   n_righe1 = 0;
   n_righe2 = 0;
}
 
if(d<l1)
{
   n_cerchi1 = int(l1/d);
   n_cerchi2 = int((l1-d/2)/d);
}
else
{
   n_cerchi1 = 0;
   n_cerchi2 = 0;
}
 
n_pezzi = n_righe1 * n_cerchi1 + n_righe2 * n_cerchi2;
 
Ovviamente anche stavolta non garantisco il funzionamento.
Sicuramente anche qui avrò ficcato qualche errore :) (anche di ortografia)
 
Michele 
 
 

 .... ecc. ecc.
 
E c'è un = di troppo nel for ;-)
 
deve essere for(i=0;i<100;i++)
......
 
 
 
-- 
Ricky
 
Scrivimi saltando i cancelletti ( * = . )
mb#ox#*#ric#ky@yah#oo*it
 
oppure usa il seguente link
http://www.mynewsgate.net/mp.php?u=19024
 
 

 ......
 
Ecco ... poi mi dimentico sempre i ; a fine riga e magari qualche 
parentesi tonda :D
Fortuna che ci chi se ne accorge per me :p
 
Michele

 Fortuna che ci chi se ne accorge per me :p
 
Di questo sei sicuro?
 
 
    if riga == 1: riga = 0
    if riga == 0: riga = 1

    if riga == 0: riga = 1
 
 
Azz, stavo traducendo in Python, volevo dire:



In ANSI C l'assegnazione si fa con =, il test di uguaglianza si fa con ==
 
Non sono mai sicuro di niente ma non vedo errori.
Certo, per fare lo swap potevo usare il modulo 2 ch'era molto più elegante 
ma non sono sicuro di cosa restituisce quindi ho evitato.
 
Michele 
 
 

 Certo, per fare lo swap potevo usare il modulo 2 ch'era molto più elegante
 
Quando riga == 1 rimane sempre a 1 perche' il secondo if la riporta a
1.

 1.
 
Azz ... errore di logica (grave):
    if(riga == 1) riga = 0;
    else if(riga == 0) riga = 1;
 
Cosě va meglio, vero? :)
 
Michele