Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Dal palco di Proofpoint Protect 2025 emerge la strategia per estendere la protezione dagli utenti agli agenti IA con il lancio di Satori Agents, nuove soluzioni di governance dei dati e partnership rafforzate che ridisegnano il panorama della cybersecurity
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
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


Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
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...
Addio Amazon? ChatGPT ora ti fa comprare...
YouTube chiude la causa con Trump: accor...
Avio: contratto da 40 milioni di € da ES...
Claude Sonnet 4.5, il nuovo modello di A...
Silent Hill f è un successo: gi&a...
Nuova Jeep Compass: aperti i preordini p...
La PS5 Slim con SSD più piccolo s...
Zero combustibili fossili e controllo qu...
Corsair NAUTILUS 360 RS LCD: raffreddame...
Nuovo record nel mondo dei computer quan...
Sony e Universal combatteranno l'IA con....
Il Chips Act europeo attuale è un...
OnePlus 15: debutto globale con design '...
Amazon Prime: addio alla prova gratuita ...
Windows 11 25H2: guida passo-passo per l...
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: 05:32.


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