Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
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


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Dopo 23 anni di silenzio, Warcraft 3 spi...
Roblox sfida l'ecosistema gaming: app st...
OpenAI accusata di plagio dai migliori m...
Altro attacco hacker dell'IA: gli agenti...
Stiamo davvero perdendo il controllo del...
Microsoft perde un pilastro: Frank Shaw ...
Diablo V annunciato a sorpresa: il colpo...
Meno di 5 euro per il 5G: l'offerta Kena...
World of Warcraft: Forever è il Classic+...
La Serie A con DAZN e Amazon Prime con l...
Giochi Ubisoft su Steam senza Ubisoft Co...
Miami Beach ha autorizzato la maxi opera...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
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: 13:40.


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