Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Sono ormai definitive le nuove norme del Codice della Strada per i monopattini elettrici. Non solo targa e assicurazione, le regole sono tante e riguardano diversi aspetti, vi spieghiamo come evitare sanzioni che possono essere salate
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5 introduce Dynamic Multi Frame Generation e MFG 6X, permettendo fino a cinque frame generati per ogni frame renderizzato. I test su Cyberpunk 2077 e 007 First Light mostrano forti incrementi di FPS e riduzione della latenza su RTX 5090 Laptop. Migliorano fluidità, stabilità e qualità visiva.
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
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


Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni Come rispettare tutte le nuove regole per i mono...
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta DLSS 4.5: con Dynamic Frame Generation e MFG 6X ...
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
SpaceX Starfall, capsule per lo sviluppo...
Fable 5, il modello Mythos di Anthropic ...
Costruire sulla Luna: i test per le futu...
La NASA ha annunciato gli astronauti del...
Mondiale 2026, Lenovo unico partner tecn...
007 First Light ha venduto più di...
Harley-Davidson, svelato il prezzo itali...
PC Windows 11 in crash: ma la colpa è di...
Dopo i 'NO 5G' arrivano i 'NO FIBRA'? Ar...
Promettono un parco e costruiscono un da...
L'aeroplano supersonico ''silenzioso'' N...
Euro-Office sbugiardata da LibreOffice: ...
I 10 sconti TOP Amazon: 4 novità ...
Galaxy Z Flip 8, in Europa avrà i...
SpaceX annuncia i satelliti AI1 destinat...
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: 03:47.


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