Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
MSI FORGE GK600 TKL WIRELESS: switch lineari hot-swap, tripla connettività, display LCD e 5 strati di fonoassorbimento. Ottima in gaming, a 79,99 euro
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI porta un importante aggiornamento alla sua linea di gimbal camera tascabili con Osmo Pocket 4: sensore CMOS da 1 pollice rinnovato, gamma dinamica a 14 stop, profilo colore D-Log a 10 bit, slow motion a 4K/240fps e 107 GB di archiviazione integrata. Un prodotto pensato per i creator avanzati, ma che convince anche per l'uso quotidiano
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-07-2010, 14:18   #1
fenix576
Member
 
Iscritto dal: Nov 2007
Messaggi: 96
[c] operazioni tra float e int, possibili???

dovrei moltiplicare un float per un int, è possibile fare ciò???
es.
numcopie è int,
mentre *****.prezzo sono float.

registro[0].prezzo = articolo[0].prezzo * numcopie;

con questo comando non funziona, cè un modo???

Ultima modifica di fenix576 : 19-07-2010 alle 15:06.
fenix576 è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2010, 15:10   #2
fenix576
Member
 
Iscritto dal: Nov 2007
Messaggi: 96
visto che mi ci trovo chiedo anche un ultima cosa:

nell' archivio che sto facendo (gestito con struct di stringhe)
vorrei far apparire la scritta "l'archivio è vuoto" se facendo un controllo, isultasse che un campo dell'articolo in posizione 0 risultasse vuoto.

esempio: se articolo[0].nome == 'vuoto', stampa l'archivio è vuoto.
al posto di vuoto cosa dovrei metterci?
fenix576 è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2010, 15:13   #3
mic85rm
Senior Member
 
Iscritto dal: Dec 2003
Città: roma
Messaggi: 1629
penso tu debba fare un cast...
mic85rm è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2010, 15:27   #4
Isildur84
Member
 
Iscritto dal: Jan 2005
Città: Torino
Messaggi: 144
Dipende da come hai implementato la tua stringa. Se è implementata come un puntatore, allora semplicemente potresti vare

if (articolo[0].nome == null) Errore.

Oppure potresti tenere un contatore delle posizioni occupate, o alla prima libera e quindi ti basterebbe un controllo sul suo valore.

Cosa intendi con "con questo comando non funziona"? Dà errore o produce risultati errati?
Isildur84 è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2010, 15:41   #5
fenix576
Member
 
Iscritto dal: Nov 2007
Messaggi: 96
Quote:
Originariamente inviato da Isildur84 Guarda i messaggi
Dipende da come hai implementato la tua stringa. Se è implementata come un puntatore, allora semplicemente potresti vare

if (articolo[0].nome == null) Errore.

Oppure potresti tenere un contatore delle posizioni occupate, o alla prima libera e quindi ti basterebbe un controllo sul suo valore.

Cosa intendi con "con questo comando non funziona"? Dà errore o produce risultati errati?
avevo sbagliato io a digitare per quanto riguarda la moltiplicazione tra in e float.

cmq
if (articolo[0].band == 'null') printf("L'INVENTARIO E' VUOTO\n"); non funziona
senza le ' ' manco, 'NULL' manco. non come fare a controllare se la stringa è vuota.
fenix576 è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2010, 16:14   #6
Isildur84
Member
 
Iscritto dal: Jan 2005
Città: Torino
Messaggi: 144
Quote:
Originariamente inviato da fenix576 Guarda i messaggi
avevo sbagliato io a digitare per quanto riguarda la moltiplicazione tra in e float.

cmq
if (articolo[0].band == 'null') printf("L'INVENTARIO E' VUOTO\n"); non funziona
senza le ' ' manco, 'NULL' manco. non come fare a controllare se la stringa è vuota.
La giusta dichiarazione è NULL. Non è una stringa, quindi gli appici non hanno senso.
Mi sa che il problema è più profondo.
Come è fatta la tua struttura articolo?

Cerco di spiegarti:

In C le stringhe sono rappresentate da vettori di caratteri terminati dal carattere nullo. Inoltre in C, vettori e puntatori sono, per così dire, intercambiabili e infatti di norma si utilizzano vettori allocati dinamicamente per memorizzare le stringhe.

Ad esempio la tua struttura potrebbe essere così definita (perdona gli errori del linguaggio ma è da un po' che non lo uso)

Codice:
struct Articolo {
   char * nome;
}
In fase di inizializzazione si farebbe poi una cosa del genere:

Codice:
for (i = 0; i < MAX; i++)
   articolo[i].nome = NULL;
In questo modo sarebbe facilissimo capire quando un nome è presente o meno

infine per riepire i nomi, supponendo di leggere i dati e di salvarli in un vettore di char chiamato stringaLetta basterebbe fare

Codice:
articolo[i].nome = strdup(stringaLetta);
Spero di esserti d'aiuto.
Isildur84 è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2010, 19:00   #7
fenix576
Member
 
Iscritto dal: Nov 2007
Messaggi: 96
in pratica ho definito prima le stringhe con

typedef char string[200];

e poi cè lo struct con

typedef struct {
string band;
string album;
etc
} articolo

ho una funzione che riempie a ogni ciclo l'archivio con i dati:
a partire dall'inidce a 0.

non ho ben capito come implementare il codice da te consigliato.
fenix576 è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2010, 20:43   #8
Isildur84
Member
 
Iscritto dal: Jan 2005
Città: Torino
Messaggi: 144
Il tuo codice ha uno spreco abbastanza grande di risorse, inoltre non permette grandi controlli.

Una soluzione a cui non avevo pensato è quella di usare la funzione strlen, a patto che tu riempi le stringhe con il carattere di terminazione se sono vuote.

Altrimenti potresti passare ad un'allocazione di tipo dinamico

typedef struct {
char* dato1;
char* dato2;
} articolo;


Ti conviene fare un primo ciclo del tipo

for (i =0; i < MAX; i++)
articolo[i].dato1 = NULL;
articolo[i].dato2 = NULL;

A quel punto potrai riempire le stringhe attraverso la funzion strdup.
che ti ho consigliato prima.
Visto che i dati sono stati inizializzati a NULL avrai modo di controllare se é pieno o meno.

Ultima modifica di Isildur84 : 19-07-2010 alle 21:08.
Isildur84 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless Tastiera gaming MSI GK600 TKL: switch hot-swap, ...
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
iPhone 18 Pro: il componente che garanti...
DeepL alza il livello: con Voice-to-Voic...
Apple sta utilizzando sempre più ...
Il MacBook Neo vende tanto? Microsoft le...
AST SpaceMobile BlueBird 7: Blue Origin ...
È il momento migliore per comprar...
Svendita MacBook Pro: c'è il mode...
Oggi questa TV TCL QLED da 43 pollici co...
Il caricatore multiplo da 200W che va be...
Top 7 Amazon, il meglio del meglio di qu...
Spento lo strumento LECP della sonda spa...
Voyager Technologies ha siglato un accor...
GoPro annuncia la linea MISSION 1 con tr...
Alcune varianti dei futuri Samsung Galax...
Il ridimensionamento di OnePlus in Europ...
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:44.


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