|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | |
|
Bannato
Iscritto dal: Apr 2002
Città: Messina
Messaggi: 6002
|
Mi aiutate con questo esercizio ? C/C++
Ragazzi, ho questo esercizio di informatica ( programmazione c/c++) che non riesco a risolvere. Premetto che sto faticando non poco a prendere dimestichezza con la programmazione, ma tant'è mi tocca e spero possiate aiutarmi.
Il testo è: Quote:
Please non scrivete i soliti insulti come spesso capita con richieste del genere; se non volete aiutarmi non scrivete, non importa, ma almeno evitate gli insulti. |
|
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Apr 2002
Città: Messina
Messaggi: 6002
|
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
melomanu: magari perché chiedevi/chiedevano la risoluzione per intero di un esercizio, ma una mano a risolvere un problema la diamo sempre
Cosa puoi usare ? La template library del C++ l puoi usare (vector, string e compagnia bella)? |
|
|
|
|
|
#4 | |
|
Bannato
Iscritto dal: Apr 2002
Città: Messina
Messaggi: 6002
|
Quote:
ad ogni modo, posso usare stringhe, array, vettori etc classici del c++. ho provato ad impostare una base per la struttura, del tipo struct vino { int codice[20]; int anno_prod[18]; char nome; char tipo; int bott_disp; }; ma poi mi perdo perhcè non riesco a capire come inizializzare e dimensionare le stringhe per nome, tipo, percè non hanno una dimensione definita, ma potrebbero variare a seconda della lunghezza del termine inserito. per la creazione dl menù, ci sono quasi ( uso la funzione void con dei cicli while if etc ), ma poi mi perdo... |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Perchè il codice l'hai fato di venti elementi ?
Comunque dovresti limitare la dimensione delle stringhe (ad esempio 100 nell'esempio sotto) oppure usare l'allocazione dinamica...la struttura migliore credo che sia questa: struct vino { int codice; int anno_prod; char nome[100]; char tipo[100]; char provenienza[100]; int bott_disp; }; |
|
|
|
|
|
#6 | ||
|
Bannato
Iscritto dal: Apr 2002
Città: Messina
Messaggi: 6002
|
Quote:
sul dimensionare in maniera arbitraria le stringhe di nome, tipo provenienza ci avevo pensato, dando ad esempio un valore come il tuo di 100 caratteri, ma non sapevo se era giusto. pensi dimensionarlo dinamicamente sia più corretto? ( non saprei come fare, però.... ).. per il menù, ho pensato ad una cosa del genere: Quote:
|
||
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quella che ti ho scritto io è la struttura per un solo tipo di vino.
Se hai 10 vini dovrai creare una struttura di 10 elementi, ad esempio un lista o un array statico o dinamico. Conosci le liste ? Questa è un'ottima situazione in cui applicarle... Codice:
struct elem_lista {
struct vino info;
struct elem_lista *next;
};
|
|
|
|
|
|
#8 | |
|
Bannato
Iscritto dal: Apr 2002
Città: Messina
Messaggi: 6002
|
Quote:
![]() vedrò di lavorarci su, poi mi dirai se ciò che ho partorito è ok |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1454
|
io eviterei la lista per quanto riguarda la "base di dati" dei vini, basta un'array 20*15 (o 18, non so perché il testo dica 15 se gli anni sono 18...) in cui ogni elemento è una struttura fatta così:
struct vino { char nome[100]; char tipo[100]; char provenienza[100]; int bott_disp; }; la posizione all'interno dell'array (determinata dai due indici) discrimina i vini per anno e per codice. volendo fare qualcosa di più sofisticato, si può fare una classe in modo da ottimizzare lo spazio utilizzato tramite l'allocazione dinamica delle stringhe. le richieste che si possono soddisfare sono strutture di questo tipo: struct richiesta { int codice; //volendo si può dichiarare come char per risparmiare memoria int anno; //volendo si può dichiarare come char per risparmiare memoria int nbott; richiesta* next; }; qui ovviamente il metodo più semplice per implementare la coda FIFO è una lista. Ultima modifica di Furla : 24-03-2007 alle 21:09. |
|
|
|
|
|
#10 |
|
Bannato
Iscritto dal: Apr 2002
Città: Messina
Messaggi: 6002
|
raga, ma per svolgere il punto due, non si potrebbe:
-creare un array con 18 colonne (anni) x 20 righe ( codice prodotto ) -fare in modo che inserendo il codice, venga stampata la relativa riga ??? |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2004
Città: Matrix.Digital.Pixel.World
Messaggi: 386
|
secondo il mio modesto parere dovresti sfatare prima il problema di questa tabella...xkè 20*15 invece che 20*18. in + devi capire se vuole che ci sia cmq una tabella statica di fondo oppure diciamo una base + dinamica xkè nel primo caso la fai cn un array bi-dimensionale,che se si può, io farei di puntatori; altrimenti ri costruisci 15 (o 18) liste in base all'anno del vino!
io la struct la farei così cmq: struct vino { int codice; int anno_prod; char*nome; char*tipo; char*provienienza; int disp; }; volendo ti fai 2 csotruttori...uno di default e uno a 6 parametri! se char * non ti piace fai un typedef char* stringa oppure usa direttamente string dalla libreria #include <string> |
|
|
|
|
|
#12 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Ma dopo un anno e mezzo spero che l'esercizio l'abbia risolto.
A costo di usare un block notes al posto di un computer...
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#14 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
oddio non avevo visto la data
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Apr 2004
Città: Matrix.Digital.Pixel.World
Messaggi: 386
|
LOL manco io :P :P :P
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:42.






















