Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-04-2007, 12: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, 13: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, 13: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, 14: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 14:48.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 14: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, 14: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, 14: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 14:57.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 14: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, 14: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, 14: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, 15: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, 15: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, 15: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, 15: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, 01:11   #15
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
EDIT
non avevo capito una mazza
__________________

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


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Dongfeng sfida la NATO: navi dalla Cina ...
5G Standalone per il mondo marittimo: Er...
Nova Lake-S: configurazioni fino a 52 co...
Baxi presenta la pompa di calore Alya E ...
PC ASUS e Acer vietati in Germania: il t...
Stellantis rilancia il diesel in Europa:...
Truffa per utenti Trezor e Ledger: lette...
Wi-Fi 7 conveniente: FRITZ! lancia 4630,...
La Formula 1 dei robot tagliaerba miglio...
Il nuovo gioco del creatore di God of Wa...
Grok arriva sulle Tesla in Europa: l'int...
Assassin's Creed IV: Black Flag Remake p...
Il padre di God of War attacca Sons...
È operativo il primo computer qua...
Western Digital avverte: anche gli hard ...
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: 20:32.


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