Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x scommette tutto, forse troppo, sulla batteria da 7500 mAh e sulla certificazione ArmorShell per farsi notare nella fascia più economica del mercato: lo abbiamo messo alla prova per capire a chi è rivolto questo smartphone che sacrifica un po' prestazioni, display e fotocamera per offrire l'autonomia migliore possibile a un prezzo decisamente contenuto
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
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


Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
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...
Pixel 11a trapela in anticipo: design qu...
ECOVACS, sconti fino a 300€ su robot asp...
Modern Warfare 4, tutti i dettagli tecni...
Il Big Mac costa in base al quartiere: M...
Il riconoscimento facciale IA fa cilecca...
XBOX, la funzione disc-to-digital arriva...
Più unico che raro: mini PC con 3...
Cybersecurity proattiva: viaggio nel SOC...
I dispositivi Amazon più scontati: Fire ...
Nuvacore, dagli ex di Nuvia arriva un'id...
Microsoft porta i container Linux in Win...
Sonos Beam Ultra e Ace Ultra arrivano ne...
Cina, record mondiale per uno sciame di ...
E-bike da 645€: SAMEBIKE RS-A01 Pro o Bo...
John Ternus vuole rendere Apple pi&ugrav...
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: 10:26.


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