Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Star Wars Zero Company è l'erede di XCOM 2
Star Wars Zero Company è l'erede di XCOM 2
Bit Reactor porta nell’universo di Star Wars una struttura tattica che richiama apertamente XCOM 2, ma la arricchisce con legami tra i personaggi, progressione ruolistica, gestione della base e un sistema di combattimento costruito attorno a tre Punti Azione e alle risorse condivise della squadra
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Abbiamo provato per una settimana intera la Can-Am Origin, la Dual Sport elettrica del gruppo canadese BRP: ecco com'è andata tra città, autostrada e un primo assaggio di sterrato
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Nelle ultime settimane abbiamo provato il mouse Logitech G305, la tastiera G316 X 98 e le cuffie G325. Si tratta del setup entry-level di Logitech che ormai, di "entry-level" ha ben poco. Tastiera e mouse offrono prestazioni di livello competitivo con quasi nessuna rinuncia e un livello di personalizzazione estremamente elevato. Le cuffie, invece, hanno mostrato qualche debolezza, ma propongono un ventaglio di funzionalità completo che consente di abbandonare completamente i cavi
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-04-2007, 11:55   #1
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
[concettuale]scrittura di un metodo

Ciao a tutti

Avrei da risolvere un problemuccio che però credo di non riuscire ad inquadrare.

Su un'ipotetica griglia, ho 5 celle; La quinta cella deve darmi un risultato che è la differenza di alcuni valori.

Le mie possibili condizioni sono:

1) Ho solo le prime due celle che contengono un valore e quindi la quinta cella deve darmi la differenza di: cella2 - cella1

2) Ho solo la terza e quarta cella che contengono un valore e quindi la quinta cella deve darmi la differenza di: cella4 - cella1

3) Ho tutte e quattro le celle che contengono un valore e quindi la quinta cella deve darmi: (cella2 - cella1) + (cella4 - cella3)

Questo problema l'ho risolto con una serie infinita di "if - else", ma non mi piace assolutamente. Dato che è un'operazione che devo svolgere spesso su questo programma, intuisco che devo astrarre il concetto in maniera migliore.

Come posso fare?

Grazie mille.

RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 12:14   #2
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Quote:
Originariamente inviato da RaouL_BennetH Guarda i messaggi
Ciao a tutti

Avrei da risolvere un problemuccio che però credo di non riuscire ad inquadrare.

Su un'ipotetica griglia, ho 5 celle; La quinta cella deve darmi un risultato che è la differenza di alcuni valori.

Le mie possibili condizioni sono:

1) Ho solo le prime due celle che contengono un valore e quindi la quinta cella deve darmi la differenza di: cella2 - cella1

2) Ho solo la terza e quarta cella che contengono un valore e quindi la quinta cella deve darmi la differenza di: cella4 - cella1

3) Ho tutte e quattro le celle che contengono un valore e quindi la quinta cella deve darmi: (cella2 - cella1) + (cella4 - cella3)

Questo problema l'ho risolto con una serie infinita di "if - else", ma non mi piace assolutamente. Dato che è un'operazione che devo svolgere spesso su questo programma, intuisco che devo astrarre il concetto in maniera migliore.

Come posso fare?

Grazie mille.

RaouL.
fai dei cicli for:

bool ok=false;
a=0
for i=0 i<5 i++
if(cella[i]>0)
a++;

if(a==4)
ok=true;//hai tutte le 4 celle con un valore quindi calcoli
if(ok){
cella[5]=(cella2 - cella1) + (cella4 - cella3)
}else{
for i=0 i<5 i++
for j=i+1; <5 i++
if(cella[j]>0 && cella[i]>0)
cella[5]=cella[j]-cella[i];
}


perlomeno per quanto hai scritto...

un'appunto è che sull'else cella[5] viene sovrascritto... per ora!... se i valori di cella i e j sono >0
okay è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 12:23   #3
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
più o meno corrisponde all'idea che mi ero fatto, solo che non so perchè non mi convince

Attualmente ho abbozzato così:


Codice:
private void GetTotal(MyGridCellEventArgs e)
{
    DateTime dt1, dt2, dt3, dt4;
    bool b1, b2, b3, b4;

    
    //prima condizione, le prime due celle contengono un valore e le altre no
    if(grid.Rows[e.RowIndex].Cells[0].Value != null && grid.Rows[e.RowIndex].Cells[1].Value != null)
    {
       b1 = DateTime.TryParse(grid.Rows[e.RowIndex].Cells[0].Value.ToString(), out dt1);
       b2 = DateTime.TryParse(grid.Rows[e.RowIndex].Cells[1].Value.ToString(), out dt2);

       TimeSpan ts = dt2.SubTract(dt1);
       grid.Rows[e.RowIndex].Cells[4].Value = ts.ToString();
    }
    
    //seconda condizione: solo la terza e quarta cella contengono un valore
    if(grid.Rows[e.RowIndex].Cells[2].Vale != null && grid.Rows[e.RowIndex].Cells[3].Value != null)
    {
       b3 = ....
       b4 = ....
       TimeSpan ts =  .....
    }

    //terza condizione: tutte e quattro le celle contengono un valore
    {
       b1 = .... out dt1;
       b2 = .... out dt2;
       b3 = .... out dt3;
       b4 = .... out dt4;

       TimeSpan ts1 = dt2 - dt1;
       TimeSpan ts2 = dt4 - dt3;
       TimeSpan total = ts2 + ts1;
    }
//end of horror code pretty candidate to the daily wtf
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 13:24   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Fai un metodo che ti fa la differenza fra due celle:
Codice:
TimeSpan GetSubTotal(MyGridCellEventArgs e, int first, int second)
{
   DateTime dt1, dt2;
   if(grid.Rows[e.RowIndex].Cells[first].Value == null || grid.Rows[e.RowIndex].Cells[second].Value == null)
      return new TimeSpan(0); //non so come esprimerlo, ritorna un time span in cui la differenza è zero
   DateTime.TryParse(grid.Rows[e.RowIndex].Cells[first].Value.ToString(), out dt1);
   DateTime.TryParse(grid.Rows[e.RowIndex].Cells[second].Value.ToString(), out dt2);

   return dt2.SubTract(dt1);
}

private void GetTotal(MyGridCellEventArgs e)
{
   TimeSpan total = GetSubTotal(e, 0, 1) + GetSubTotal(e, 2, 3);
   grid.Rows[e.RowIndex].Cells[4].Value = ts.ToString();
}
Potrebbe andare ?

Ultima modifica di cionci : 21-04-2007 alle 13:48.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 13:40   #5
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da cionci Guarda i messaggi
Potrebbe andare ?
Ecco, questo si che significa leggere nel pensiero !

Si, credo che come concetto sia esattamente ciò che cercavo !


Grazie mille

RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 13:46   #6
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Ma se fai un metodo per leggere il valore della cella e uno per farne il totale non fai prima?:
Codice:
int getCellValue(int n){
    int value=grid.Rows[e.RowIndex].Cells[n].Vale
    if(value!=null) return value;
    else return 0;
}

int doCalc(int cell1, int cell2, int cell3, int cell4){
    return (cell2-cell1)+(cell4-cell3);
}
Non va bene?
Corrisponde a quello che hai detto.
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 13:46   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Avevo lasciato due !=

E' una specie di NullObject pattern

Ultima modifica di cionci : 21-04-2007 alle 13:57.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 13:49   #8
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
C'è qualcosa che mi sfugge...io non vedo la difficoltà mi sa.
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 13:57   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da MEMon Guarda i messaggi
C'è qualcosa che mi sfugge...io non vedo la difficoltà mi sa.
Guarda, io ho fatto circa la stessa cosa che hai fatto te...soltanto che il contenuto delle celle non è un int
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 13:58   #10
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
aaaaaa ecco
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 14:02   #11
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da MEMon Guarda i messaggi
Ma se fai un metodo per leggere il valore della cella e uno per farne il totale non fai prima?:
Codice:
int getCellValue(int n){
    int value=grid.Rows[e.RowIndex].Cells[n].Vale
    if(value!=null) return value;
    else return 0;
}

int doCalc(int cell1, int cell2, int cell3, int cell4){
    return (cell2-cell1)+(cell4-cell3);
}
Non va bene?
Corrisponde a quello che hai detto.
Se fossero interi o double o float, andrebbe bene anche così.

Il fatto è che i valori che ho sono di tipo DateTime e per fare le differenze o addizioni necessito di un oggetto di tipo TimeSpan, il quale, non ammette lo stesso tipo di aritmetica dei tipi classici.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 14:04   #12
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Sisi ho capito, magari se lo specificavi anche nel primo post lo capivo prima
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 14:13   #13
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da MEMon Guarda i messaggi
Sisi ho capito, magari se lo specificavi anche nel primo post lo capivo prima
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 14:14   #14
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da RaouL_BennetH Guarda i messaggi
noooooo spero che non mi hai frainteso, volevo dire che io parto subito per la tangente, mi sono poi accorto dopo che ti serviva un qualcosa di concettuale!
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2007, 00:11   #15
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12113
EDIT
non avevo capito una mazza
__________________

Ultima modifica di ^TiGeRShArK^ : 22-04-2007 alle 00:14.
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Sovranità sui dati: AWS è ...
Il nuovo nome della distro Linux mobile ...
Due ventole da 220 mm e non solo: Cooler...
Truffa telefonica via Google Ads: il bro...
Google pensiona le Gems di Gemini: cosa ...
Flight 14: incertezza per un problema a ...
C'è un problema con i robot Tesla: i dip...
Raggi gamma anomali dalla Via Lattea sve...
NIO vende il 30% della divisione scambio...
Sony brevetta un DualSense capace di acc...
Un volto per l'assistenza IA: cosa pu&og...
NVIDIA autorizza un buyback da 150 milia...
Come il T-1000 di Terminator 2: circuiti...
Cloudflare: risolto il bug di memoria ch...
Lunex spegne gli antivirus con un driver...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 17:05.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v