Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Recensione Borderlands 4, tra divertimento e problemi tecnici
Recensione Borderlands 4, tra divertimento e problemi tecnici
Gearbox Software rilancia la saga con Borderlands 4, ora disponibile su PS5, Xbox Series X|S e PC. Tra le novità spiccano nuove abilità di movimento, un pianeta inedito da esplorare e una campagna che lascia al giocatore piena libertà di approccio
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
NXTPAPER 60 Ultra è il primo smartphone con tecnologia NXTPAPER 4.0 per il display, un ampio IPS da 7,2 pollici. Con finitura anti-riflesso, processore MediaTek Dimensity 7400, fotocamera periscopica e modalità Max Ink per il detox digitale, NXTPAPER 60 Ultra punta a essere il riferimento tra gli smartphone pensati per il benessere degli occhi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-02-2006, 11:22   #1
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
[Visual C++] Creare una Look-Up Table

Salve

devo risolvere a breve un problema per me gravissimo...

il mio programma legge dei valori da un array, in pratica creo una lookup table della radice quadrata e leggo così i valori...

finora ho dichiarato una variabile globale

static float SQRTTAB[32768];

e la caricavo così

unsigned short val;

for (val=0;val<32768,++val)
SQRTTAB[val] = (float)sqrt((double)val);

però quando la uso, mi ritrovo tutti zeri all'interno....

come devo fare?
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2006, 15:22   #2
alesnoce
Member
 
Iscritto dal: May 2005
Messaggi: 80
Butto là una risposta:
considerando che la dichiarazione della funzione radice quadrata è

double sqrt(double x);

float sqrtf(float x);

long double sqrtl(long double x);

mentre te hai scritto
Quote:
SQRTTAB[val] = (float)sqrt((double)val);
ti consiglio di definire uno static double[] e fare il cast esterno a double anziché a float
alesnoce è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2006, 22:03   #3
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
ma guarda te se ancora oggi devo vedere usati sti trucchetti da PC Underground!!!

mitico libro che era quello...
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2006, 08:43   #4
alesnoce
Member
 
Iscritto dal: May 2005
Messaggi: 80
Ho cliccato il link a pcunderground e mi ha incuriosito.
Se l'hai letto mi puoi dare per favore qualche esempio di argomento trattato?
In questo momento sto debuggando qualche migliaio di righe di codice c++ e, anche se applico poco e male le buone tecniche di programmazione, sono convinto che in c++ senza conoscere trucchetti pratici non si va da nessuna parte.
Ciao
alesnoce è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2006, 13:12   #5
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da alesnoce
Ho cliccato il link a pcunderground e mi ha incuriosito.
Se l'hai letto mi puoi dare per favore qualche esempio di argomento trattato?
In questo momento sto debuggando qualche migliaio di righe di codice c++ e, anche se applico poco e male le buone tecniche di programmazione, sono convinto che in c++ senza conoscere trucchetti pratici non si va da nessuna parte.
Ciao
non sono molto d'accordo se ho capito cosa intendi per "trucchetti pratici"... moltissimi programmi sono ottimi pur essendo totalmente privi di "hacks".
comunque si tratta di un libro che oggi non leggerebbe più nessuno: è dei tempi di Windows 95 e tratta argomenti e tecniche di programmazione spesso mirate su un risparmio di risorse che con l'hardware di oggi chiunque con un po' di buonsenso considererebbe veramente maniacale
parla molto di programmazione assembly; io quando lo lessi mi interessavo di grafica, e così mi interessava particolarmente il capitolo dove parlava della VGA standard: descriveva ranges di memoria e di IO della VGA e insegnava ad usarla IN ASSEMBLY x86!!!
a volte metteva addirittura pezzi di assembly in programmi Pascal...
oggi credo che quei programmetti neanche funzionerebbero più in modalità protetta... provando ad eseguirli dal CD fornito col libro ricordo che andavano perfettamente su Windows 98 ma già col 2000 qualcuno aveva problemi.
questa storia della tabella delle radici quadrate mi ha ricordato quel libro perché a un certo punto il libro parlando di grafica 3D e parlando di come realizzare le rotazioni, per velocizzare il calcolo di seno e coseno anziché calcolarli lì sul momento ne calcolava tantissimi che metteva poi in una tabella
ovviamente tutto in assembly
roba da masochisti, ti posso veramente assicurare che programmare a quel modo con l'hardware di oggi è assurdo.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2006, 13:34   #6
alesnoce
Member
 
Iscritto dal: May 2005
Messaggi: 80
Mi sono espresso male dicendo trucchetti, forse era meglio dire esperienza di programmazione spicciola.
Per fare un esempio, nel programma che sto debuggando ci sono blocchi di codice che devono leggere stringhe, ed eseguire operazioni differenti a seconda di ciò che le stringhe contengono.
Con la stringa "boolA=false" nel codice seguente viene eseguito l'if iniziale !!!!!
Codice:
      if ( ((_action.find_last_of("true")) > (_action.size()-6)) &&
           ((_action.find_last_of("true")) > equalPosition)  )
      {
             ...................................
      }
      else if ( ((_action.find_last_of("false")) > (_action.size()-7)) &&
                ((_action.find_last_of("false")) > equalPosition)  )
      {
              .....................................
      }
e ho dovuto scrivere invece
Codice:
      if ( ((_action.find_last_of("true")) > (_action.size()-6)) &&
           ((_action.find_last_of("true")) > equalPosition) &&
           ((_action.find("false")) == string::npos) )
      {
            ....................................
      }
      else if ( ((_action.find_last_of("false")) > (_action.size()-7)) &&
                ((_action.find_last_of("false")) > equalPosition) &&
                ((_action.find("true")) == string::npos) )
      {
                  ....................................
      }
per ottenere un funzionamento corretto.

Lo so che è un "trucchetto" inelegante, però funziona
alesnoce è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2006, 15:16   #7
Qu@ker
Member
 
Iscritto dal: Apr 2004
Messaggi: 130
Quote:
Originariamente inviato da alesnoce
Con la stringa "boolA=false" nel codice seguente viene eseguito l'if iniziale !!!!!
Non capisco, se stanno ricercando l'ultima occorrenza di false o true perche' non utilizzano string::rfind()?
Qu@ker è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2006, 15:25   #8
alesnoce
Member
 
Iscritto dal: May 2005
Messaggi: 80
Quote:
Originariamente inviato da Qu@ker
Non capisco, se stanno ricercando l'ultima occorrenza di false o true perche' non utilizzano string::rfind()?
Perché sono ignorante..
Con questa osservazione credo tu mi abbia risolto molti problemi, sarà meglio che mi studi meglio i metodi di string
alesnoce è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2006, 12:41   #9
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
raga mi dispiace di aver sollevato un polverone

cmq vi ringrazio moltissimo, anche se alla fine ho risolto facendo direttamente la sqrt().....

era solo un modo per fare prima, in quanto se ho ben capito la velocità computazionale dell'accesso ai vettori è fissa, mentre quello della funzione può variare...

alla fine nn mi cambia nulla, quindi....

GRAZIE!!
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2006, 15:17   #10
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da swarm
cmq vi ringrazio moltissimo, anche se alla fine ho risolto facendo direttamente la sqrt().....
te l'avevo detto io
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2006, 15:23   #11
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
Quote:
Originariamente inviato da 71104
te l'avevo detto io
infatti ora ho riletto con calma il tuo post...

la "tecnica" della look-up table infatti era usata da un vecchio software scritto in C su un 386-25Mhz.....

byez
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2006, 09:30   #12
alexanderf
Junior Member
 
Iscritto dal: Feb 2006
Messaggi: 11
Salve ragazzi co sto programmino in java che mi visualizza i numeri primi però no riesco a far visualizzare i suoi divisori. Esempio ciò 3 e divisible solo con 3 oppure cio 4 e divisibile con 2 e 4 ecc.
public class NumeriPrimi{
static int primo;
static int i;
public static String numeroPrimo(int primo){
if(primo==2){
return"è un numero primo";
}else if (primo==3){
return "è un numero primo";
}else if (primo==5){
return "è un numero primo";
}

if ((primo%2)==0) {

return"non è numero primo";
}else if ((primo%3)==0){
return"non è un numero primo";
}else if ((primo%5)==0){
return"non è un numero primo";
}
return"é un numero primo";

}

public static void main(String args[])
{
//NumeriPrimi primo = new NumeriPrimi();
String risposta=NumeriPrimi.numeroPrimo(3) System.out.println(risposta);
}
}
alexanderf è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2006, 12:42   #13
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
Quote:
Originariamente inviato da alexanderf
Salve ragazzi co sto programmino in java che mi visualizza i numeri primi però no riesco a far visualizzare i suoi divisori. Esempio ciò 3 e divisible solo con 3 oppure cio 4 e divisibile con 2 e 4 ecc.
public class NumeriPrimi{
static int primo;
static int i;
public static String numeroPrimo(int primo){
if(primo==2){
return"è un numero primo";
}else if (primo==3){
return "è un numero primo";
}else if (primo==5){
return "è un numero primo";
}

if ((primo%2)==0) {

return"non è numero primo";
}else if ((primo%3)==0){
return"non è un numero primo";
}else if ((primo%5)==0){
return"non è un numero primo";
}
return"é un numero primo";

}

public static void main(String args[])
{
//NumeriPrimi primo = new NumeriPrimi();
String risposta=NumeriPrimi.numeroPrimo(3) System.out.println(risposta);
}
}
aridaglie
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni Nokia Innovation Day 2025: l’Europa ha bisogno d...
Cartello del carburante: l'AGCM ha emess...
HONOR presenta un outfit progettato con ...
CA Auto Bank e Drivalia al Salone di Tor...
Sembra un sottobicchiere, ma è un...
SPID a pagamento: Poste Italiane valuta ...
Chery lancia Lepas in Europa: il nuovo b...
Dongfeng Box, primo contatto: il perch&e...
Candidato smaschera i recruiter AI con u...
Colpo al 'pezzotto': smantellato il 70% ...
Tineco FLOOR ONE i6 Stretch a soli 299€ ...
Denodo presenta la versione 9.3 della su...
Stati Uniti, attivata la prima batteria ...
Xpeng si espande in Europa: debutto in 5...
Robot aspirapolvere in offerta su Amazon...
Rilasciato finalmente Windows ML: come c...
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:15.


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