View Full Version : Mi aiutate con questo esercizio ? C/C++
melomanu
23-03-2007, 16:22
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 è:
Dal 1990 l'azienda X produce 20 tipi di vino differenti. Ogni prodotto è identificato da:
- un codice (1-20)
- anno di produzione ( 1990-2007)
oltre che da altre info come nome, tipo ( vino bianco, rosso, spumante etc.. ), provenienza, quantità di bottiglie disponibili.
La vendita è gestita tramite una tabella codice x anni di produzione ( 20x15) contenente i prodotti disponibili. Ogni cliente può effettuare ordini specificando codice, anno di produzione, quantità di bottiglie desiderate.
L'esercizio richiede di:
1) definire la struttura dati
2) dato il codice prodotto, stampare a video la quantità di bottiglie disponibili per ogni anno di produzione, omettendo gli anni dove non ci sono bottiglie disponibili
3) data la richiesta di un utente, verificare la disponibilità del prodotto richiesto. se si può soddisfare la richiesta, si decrementa la disponibilità in tabella e si inserisce la richiesta in una coda FIFO. altrimenti si scarta la richiesta.
4) scrivere su file tutti i prodotti disponibli in ordine di anno.
Non so da dove metter mani, perchè prese ad una ad una, le funzioni del c++ le ho capite, ho capito gli array, le stringhe, le strutture, ma non riesco a "unirle " per creare ad esempio un programma come richiesto dall'esercizio :(
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.
:(
melomanu
23-03-2007, 16:33
:mbe:
eh si ti sembrerà strano, ma mi è capitato solo una volta di chiedere un help quì sul forum su un argomento di studio, e invece di aiutarmi m'hanno riempito d'insulti :(
stessa cosa ad altre persone prima e dopo di me..
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)?
melomanu
23-03-2007, 17:25
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)?
no avevo chiesto un'altra cosa in un'altra sezione :D ( materiale per laser, optoelettronica etc )
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...
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;
};
melomanu
23-03-2007, 17:44
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;
};
Ho pensato fosse utile per codice e anno di produzione creare due array di 20 elementi per il primo (1-20) e 18 il secondo ( 1990-2007)...
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:
void main()
{
int scelta = MENU;
while(scelta!=OUT) {
switch(scelta) {
case MENU:
scelta = men_vin();
if(scelta == MENU)
scelta = OUT;
break;
.
.
.
.
.
.
}
}
dove definisco le funzioni che mi serve avviare per il menù.
quì invece ci sarebbero le voci del menù vero e proprio:
int men_vin(void)
{
int scelta;
char invio;
int true = 1;
while(true){
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("\t\t\t GESTIONE VINI");
.
.
.
.
.
.
.
.
.
printf("\n\n\n\n\n\n\n\n\n\n\nn\n\\n\n\n\nn\n\n\n\n\n");
switch(scelta) {
.
.
.
.
..
.
.
return(scelta);
default:
break;
}
}
return(0);
}
:stordita:
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...
struct elem_lista {
struct vino info;
struct elem_lista *next;
};
melomanu
23-03-2007, 18:21
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...
struct elem_lista {
struct vino info;
struct elem_lista *next;
};
:idea:
vedrò di lavorarci su, poi mi dirai se ciò che ho partorito è ok :D
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.
melomanu
25-03-2007, 12:21
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
???
Lord|DaNg3R
05-07-2008, 09:50
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> ;) fa sapere!
OT
eh si ti sembrerà strano, ma mi è capitato solo una volta di chiedere un help quì sul forum su un argomento di studio, e invece di aiutarmi m'hanno riempito d'insulti :( per curiosità, link :D :D :D
e adesso si scopre che ero io che facevo il nerd... :asd:
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...
oddio non avevo visto la data :rotfl:
Lord|DaNg3R
07-07-2008, 11:12
LOL manco io :P :P :P
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.