Salve ragazzi, domani ho un esame di Informatica. Ho provato a procedere autonomamente, ma non ci riesco, avendo passato settimane a prepararmi sul C ignorando il C++. Potreste aiutarmi con questo esercizio, per favore?
Prima parte.
Progettare una libreria per il software per il calcolo del computo metrico di un cantiere con le seguente classi:
- fornitore (contenente almeno nominativo, num di telefono, num di fax, partita iva e numero di conto corrente);
- materiale (contenente almeno descrizione, fornitore, prezzo unitario e aliquota iva.
Il progetto che si richiede comporta la definizione dei membri dato delle classi suddette e di altre classi che si ritiene opportuno definire (le classi fornitore e materiale possono ereditare o contenere come membri oggetti di altre classi). Si definisca inoltre una classe magazzino (contenente almeno un array di un certo quantitativo di oggetti materiale e altri membri che si ritengono necessari per l'utilizzo).
Seconda parte.
Scrivere il codice C++ che realizzi il progetto di cui al punto precedente e codifichi, su oggetti della classe magazzino, una funzione acquisto per inserire un quantitativo di materiale acquistato (NB: se in magazzino esiste già del materiale di un certo tipo e se ne acquista altro, la funzione deve andare a modificare le quantità disponibile dello stesso materiale, non inserire un altro elemento nel vettore) e una funzione vendita che, dato un certo quantitativo ed un certo materiale, detragga dal magazzino il materiale nel quantitativo indicato (o segnali la non disponibilità di detto materiale), consentendo l'archiviazione e la gestione dei dati su un file.
Allora per quanto concerne la prima parte, ho fatto quanto segue.
Ho creato una libreria chiamandola computometrico.h con al suo interno questo:
Secondo voi va bene la libreria in questo modo? Tra l'altro io ho supposto che quando mi chiede il fornitore nella classe materiale, si riferisca alla classe fornitore, cioè che mi chieda tutti i dati del fornitore che appunto fornisce il materiale. Fatto così va bene? Invece per quanto riguarda la classe magazzino ho azzardato scrivendo un vettore di tipo materiale, ma non so se è giusto...
Per quanto riguarda la seconda parte, ciò che sono riuscito a fare è questo:
Quando lo faccio andare e mi chiede di inserire il nome, un volta inserito si blocca e stampa tutte le informazioni sbagliate, inserendo solo la prima lettera del nome e numeri random.
Per favore, vi chiedo una mano. Almeno per la libreria, vorrei farla nel modo giusto.
Grazie.
Prima parte.
Progettare una libreria per il software per il calcolo del computo metrico di un cantiere con le seguente classi:
- fornitore (contenente almeno nominativo, num di telefono, num di fax, partita iva e numero di conto corrente);
- materiale (contenente almeno descrizione, fornitore, prezzo unitario e aliquota iva.
Il progetto che si richiede comporta la definizione dei membri dato delle classi suddette e di altre classi che si ritiene opportuno definire (le classi fornitore e materiale possono ereditare o contenere come membri oggetti di altre classi). Si definisca inoltre una classe magazzino (contenente almeno un array di un certo quantitativo di oggetti materiale e altri membri che si ritengono necessari per l'utilizzo).
Seconda parte.
Scrivere il codice C++ che realizzi il progetto di cui al punto precedente e codifichi, su oggetti della classe magazzino, una funzione acquisto per inserire un quantitativo di materiale acquistato (NB: se in magazzino esiste già del materiale di un certo tipo e se ne acquista altro, la funzione deve andare a modificare le quantità disponibile dello stesso materiale, non inserire un altro elemento nel vettore) e una funzione vendita che, dato un certo quantitativo ed un certo materiale, detragga dal magazzino il materiale nel quantitativo indicato (o segnali la non disponibilità di detto materiale), consentendo l'archiviazione e la gestione dei dati su un file.
Allora per quanto concerne la prima parte, ho fatto quanto segue.
Ho creato una libreria chiamandola computometrico.h con al suo interno questo:
C:
// libreria computo metrico
#ifndef COMPUTOMETRICO_H
#define COMPUTOMETRICO_H
#define SIZE 50
using namespace std;
class fornitore {
char modello[SIZE];
int numTel;
int numFax;
int IVA;
int conto;
public:
void impostaModello();
char prendiModello();
void impostaTelefono();
int prendiTelefono();
void impostaFax();
int prendiFax();
void impostaIVA();
int prendiIVA();
void impostaConto();
int prendiConto();
};
void fornitore::impostaModello() {
cin >> modello[SIZE];
}
char fornitore::prendiModello() {
return modello[SIZE];
}
void fornitore::impostaTelefono() {
cin >> numTel;
}
int fornitore::prendiTelefono() {
return numTel;
}
void fornitore::impostaFax() {
cin >> numFax;
}
int fornitore::prendiFax() {
return numFax;
}
void fornitore::impostaIVA() {
cin >> IVA;
}
int fornitore::prendiIVA() {
return IVA;
}
void fornitore::impostaConto() {
cin >> conto;
}
int fornitore::prendiConto() {
return conto;
}
class materiale : public fornitore {
char desc[SIZE];
int prezzoUnitario;
int aliquotaIVA;
fornitore forn;
public:
void impostaDesc(char);
char prendiDesc();
void impostaPrezzo(int);
int prendiPrezzo();
void impostaAliquota(int);
int prendiAliquota();
};
void materiale::impostaDesc(char desci) {
desc[SIZE] = desci;
}
char materiale::prendiDesc() {
return desc[SIZE];
}
void materiale::impostaPrezzo(int num) {
prezzoUnitario = num;
}
int materiale::prendiPrezzo() {
return prezzoUnitario;
}
void materiale::impostaAliquota(int num) {
aliquotaIVA = num;
}
int materiale::prendiAliquota() {
return aliquotaIVA;
}
class magazzino : public materiale {
materiale array[20];
};
#endif // !COMPUTOMETRICO_H
Per quanto riguarda la seconda parte, ciò che sono riuscito a fare è questo:
C:
#include <iostream>
#include "computometrico.h"
using namespace std;
int main() {
fornitore f;
materiale m;
magazzino g;
cout << "Inserisci il nominativo del fornitore, il suo telefono,\n"
"il suo fax, la sua imposta IVA e il suo numero di conto.\n";
f.impostaModello();
f.impostaTelefono();
f.impostaFax();
f.impostaIVA();
f.impostaConto();
cout << "Il nominativo del fornitore e' " << f.prendiModello();
cout << "\nIl suo telefono e' " << f.prendiTelefono();
cout << "\nIl suo fax e' " << f.prendiFax();
cout << "\nLa sua imposta IVA e' " << f.prendiIVA();
cout << "\nIl suo numero di conto e' " << f.prendiConto();
/* BISOGNEREBBE CONTINUARE, MA MI SONO FERMATO */
return 0;
}
Per favore, vi chiedo una mano. Almeno per la libreria, vorrei farla nel modo giusto.
Grazie.
Ultima modifica da un moderatore: