Anteprima
Vedrai una selezione di 10 pagine su 390
Programmazione a Oggetti Homework - Tracce d'esame svolte Pag. 1 Programmazione a Oggetti Homework - Tracce d'esame svolte Pag. 2
Anteprima di 10 pagg. su 390.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti Homework - Tracce d'esame svolte Pag. 6
Anteprima di 10 pagg. su 390.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti Homework - Tracce d'esame svolte Pag. 11
Anteprima di 10 pagg. su 390.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti Homework - Tracce d'esame svolte Pag. 16
Anteprima di 10 pagg. su 390.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti Homework - Tracce d'esame svolte Pag. 21
Anteprima di 10 pagg. su 390.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti Homework - Tracce d'esame svolte Pag. 26
Anteprima di 10 pagg. su 390.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti Homework - Tracce d'esame svolte Pag. 31
Anteprima di 10 pagg. su 390.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti Homework - Tracce d'esame svolte Pag. 36
Anteprima di 10 pagg. su 390.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti Homework - Tracce d'esame svolte Pag. 41
1 su 390
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

OUTPUT:

output.txt

Mario, Molinara, 1250, 6 18 23 28 30 30 30

Francesco, Fontanella, 1251, 10 23 24 23 25 24 28 19 22 18 28

Claudio, De Stefano, 1252, 5 24 22 29 24 18

Claudio, Marrocco, 1258, 5 23 25 24 28 29

Francesco, Bianchi, 1235, 6 25 30 18 21 24 22

*/

//

====================================================================

========

// Name : PO_4lug2014_B.cpp

// Author : Giulio

// Version :

// Copyright : Your copyright notice

// Description : Hello World in C++, Ansi-style

//

====================================================================

========

#include <iostream>

#include <cstdlib>

#include <fstream>

#include "Studente.h"

#include <algorithm>

#include <list>

using namespace std;

ostream& operator<<(ostream &os, const list<Studente> &l);

istream& operator>>(istream &is, list<Studente> &l);

void elimina(list<Studente> &l, int s);

float compMedia(const list<Studente> &l);

int main() {

ifstream is;

ofstream os;

list<Studente> l1, l2, l3;

float m1, m2;

/***** INPUT 1 *****/

is.open("input1.txt");

if (is) is>>l1;

else { cerr<<"ERRORE: impossibile aprire il file

input1.txt"<<endl;

exit (EXIT_FAILURE);

}

is.close();

/***** INPUT 2 *****/

is.open("input2.txt");

if (is) is>>l2;

else { cerr<<"ERRORE: impossibile aprire il file

input2.txt"<<endl;

exit (EXIT_FAILURE);

}

is.close();

/***** MEDIE *****/

m1 = compMedia(l1);

m2 = compMedia(l2);

/***** ELIMINAZIONE *****/

if ( m1 < m2 )

elimina(l2, m1);

else elimina(l1, m2);

/***** UNIONE LISTE *****/

l3.splice(l3.begin(), l2);

l3.splice(l3.begin(), l1);

/***** OUTPUT *****/

os.open("output.txt");

if (os) os<<l3;

else { cerr<<"ERRORE: impossibile aprire il file

output.txt"<<endl;

exit (EXIT_FAILURE);

}

os.close();

return 0;

}

ostream& operator<<(ostream &os, const list<Studente> &l){

list<Studente>::const_iterator iter;

for (iter=l.begin(); iter!=l.end(); iter++)

os<<*iter;

return os;

}

istream& operator>>(istream &is, list<Studente> &l){

Studente tmp;

while (is>>tmp){

l.push_back(tmp);

//cout<<tmp;

}

return is;

}

void elimina(list<Studente> &l, int s){

list<Studente>::iterator iter;

iter=l.begin();

while (iter!=l.end()){

if (iter->mediaVoti() >= s){

l.erase(iter);

}

else iter++;

}

}

float compMedia(const list<Studente> &l){

list<Studente>::const_iterator iter;

int c = 0;

float s = 0.0;

for (iter=l.begin(); iter!=l.end(); iter++){

s += iter->mediaVoti();

c++;

}

return ( s/c );

}

/*

* Studente.cpp

*

* Created on: 11 set 2018

* Author: giuliorusso

*/

#include <iostream>

#include <cstdlib>

#include <fstream>

#include "Studente.h"

#include <algorithm>

#include <list>

using namespace std;

//COSTRUTTORE

Studente::Studente(){

}

//COSTRUTTORE DI COPIA

Studente::Studente(const Studente &o){

/*nome = o.getNome();

cognome = o.getCognome();

matricola = o.getMatricola();

esami = o.esami;*/

this->setNome(o.nome);

this->setCognome(o.cognome);

this->setMatricola(o.matricola);

esami=o.esami;

}

//OPERATORE DI ASSEGNAZIONE

Studente& Studente::operator=(const Studente &o){

if (&o!=this){

setNome(o.nome);

setCognome(o.cognome);

setMatricola(o.matricola);

esami = o.esami;

}

return *this;

}

//==

bool Studente::operator==(const Studente &o){

return ( matricola == o.matricola );

}

//<<

ostream& operator<<(ostream &os, const Studente &s){

os<<s.nome<<", ";

os<<s.cognome<<", ";

os<<s.matricola<<", ";

int num = s.esami.size();

for (int i=0; i<num; i++)

os<<s.esami[i];

return os;

}

//>>

istream& operator>>(istream &is, Studente &s){

int n, tmp;

is >> getline (is, s.nome, ',');

is >> getline (is, s.cognome, ',');

is >> getline (is, s.matricola, ',');

is >> n;

/* Pulisco il vettore da eventuali residui */

s.esami.clear();

for (int i=0; i<n; i++){

is >> tmp;

s.esami.push_back(tmp);

}

return is;

}

//ADD

void Studente::addEsame(int v){

esami.push_back(v);

}

//CLEAR

void Studente::clear(){

esami.clear();

}

//MEDIA

float Studente::mediaVoti() const{

int num = esami.size();

float s = 0.0;

for (int i=0; i<num; i++)

s = s + esami[i];

return (s/num);

}

/*

* Studente.h

*

* Created on: 11 set 2018

* Author: giuliorusso

*/

#include <iostream>

#include <cstring>

#include <vector>

using namespace std;

class Studente {

string nome;

string cognome;

string matricola;

vector<int> esami;

public:

Studente();

//~Studente();

Studente(const Studente &o);

Studente& operator=(const Studente &o);

bool operator==(const Studente &o);

friend ostream& operator<<(ostream &os, const Studente &s);

friend istream& operator>>(istream &is, Studente &s);

// Funzioni SET

void setNome(string n) { nome = n; }

void setCognome(string c) { cognome = c; }

void setMatricola(string m) { matricola = m; }

// Funzioni GET

string getNome() const{ return nome; }

string getCognome() const{ return cognome; }

string getMatricola() const{ return matricola; }

// Altre Funzioni

void addEsame(int v); // aggiunge un nuovo esame al vettore

esami void clear(); // azzera il vettore degli esami

float mediaVoti() const; // calcola e restituisce la media

dei voti

};

/*

************************** AVVISO

***********************************

il tempo a disposizione per la soluzione della traccia Ë 2 (due)

ore.

Durante la prova, Ë assolutamente VIETATO:

-- consultare libri e/o altro materiale online e/o offline

-- comunicare in qualsiasi modo con i propri colleghi e/o chiunque

altro (tranne il docente)

-- usare il cellulare e/o qualsiasi altro dispositivo

IMPORTANTE!: La violazione delle norme di cui sopr‡ comporter‡

l'ANNULLAMENTO della prova!

************************** TRACCIA

**********************************

Siano dati:

il file input.txt realizzato come segue:

nome, codice, #valori valore1 valore2 .... valore#valori

il prototipo della classe Titolo (da implementare):

class Titolo {

string nome;

string codice;

int num;

float* valori;

public:

Titolo();

friend ostream& operator<<(ostream &os, const Titolo &t);

friend istream& operator>>(istream &is, Titolo &t);

// Funzioni SET

void setNome(const string n);

void setCodice(const string c);

// Funzioni GET

string getNome();

string getCodice();

// Altre Funzioni

void addValore (float v); // aggiunge un nuovo valore al

vettore dei valori

float compMedia(); // restituisce la media dei valori

};

ed i prototipi delle seguenti 3 funzioni (da implementare):

ostream & operator<<(ostream &os, const list<Titolo> &l);

istream & operator>>(istream &is, list<Titolo> &l);

void sposta(list<Titolo> &l1, list<Titolo> &l2, float s);

// INPUT: una lista l1, una lista l2 ed un float s

// OUTPUT: modifica la lista l1 spostando nella lista l2 tutti gli

elementi con una media dei valori al di sotto della soglia s.

Scrivere un programma C++ che:

1) implementi la classe di cui sopra. A tal fine:

-- Si definiscano, se necessario, il costruttore di copia,

l'operatore di assegnazione e il distruttore.

-- si aggiungano i qualificatori private e const in maniera

opportuna.

2) Carichi in una lista l1 i dati contenuti nel file input.txt

3) Chieda all'utente il valore di un float a

4) Sposti in una lista l2 tutti gli elementi di l1 con una media dei

valori al di sotto del valore a chiesto all'utente

5) salvi nel file output1.txt la lista l1 e nel file output2.txt la

lista l2

6) Si tenga presente che dati due oggetti t1 e t2 della classe

Titolo, t1 Ë uguale a t2 se e solo se i codici coincidono.

// ************************ SUGGERIMENTI

*****************************

la funzione per il caricamento da stream di un oggetto string Ë la

seguente:

istream& getline (istream& is, string& str, char delim);

che estrae dallo stream is e memorizza nell'oggetto str tutti i

caratteri finchË non trova il carattere delimitatore delim

INPUT:

input.txt

Informatica Cassino, IC98-001, 10 2.04 2.30 2.80 3.00 3.30 3.20 3.90

2.90 3.00 3.10

Servizi Frosinone, SF09-007, 8 3.10 3.15 3.05 3.23 3.80 4.12 4.08

4.34

Catering Formia, CF87-065, 7 4.85 5.33 4.81 4.21 4.11 4.23 4.12

Roccasecca Franchising, RF12-009, 9 1.15 1.30 1.31 1.29 1.31 1.34

1.35 1.29 1.43

Factoring Pignataro, FP99-078, 11 5.28 5.22 5.18 5.17 5.19 5.21 5.23

5.26 5.18 5.22 5.23

Arce Trasporti, AT78-001, 12 9.23 9.24 9.33 9.25 9.29 9.28 9.29

9.34 9.38 9.18 9.23 9.28

Nautica Gaeta, NG01-178, 6 2.33 2.37 2.48 2.41 2.37 2.30

a = 3.0

OUTPUT:

output1.txt

Servizi Frosinone, SF09-007, 8 3.10 3.15 3.05 3.23 3.80 4.12 4.08

4.34

Catering Formia, CF87-065, 7 4.85 5.33 4.81 4.21 4.11 4.23 4.12

Factoring Pignataro, FP99-078, 11 5.28 5.22 5.18 5.17 5.19 5.21 5.23

5.26 5.18 5.22 5.23

Arce Trasporti, AT78-001, 12 9.23 9.24 9.33 9.25 9.29 9.28 9.29

9.34 9.38 9.18 9.23 9.28

output2.txt

Informatica Cassino, IC98-001, 10 2.04 2.30 2.80 3.00 3.30 3.20 3.90

2.90 3.00 3.10

Roccasecca Franchising, RF12-009, 9 1.15 1.30 1.31 1.29 1.31 1.34

1.35 1.29 1.43

Nautica Gaeta, NG01-178, 6 2.33 2.37 2.48 2.41 2.37 2.30

*/

//

====================================================================

========

// Name : PO_10set2015_B.cpp

// Author : Giulio

// Version :

// Copyright : Your copyright notice

// Description : Hello World in C++, Ansi-style

//

====================================================================

========

#include <iostream>

#include <cstdlib>

#include <cstring>

#include <fstream>

#include "Titolo.h"

#incl

Dettagli
Publisher
A.A. 2019-2020
390 pagine
2 download
SSD Ingegneria industriale e dell'informazione ING-INF/03 Telecomunicazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher GiulioRusso di informazioni apprese con la frequenza delle lezioni di Programmazione ad oggetti e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Cassino e del Lazio Meridionale o del prof Fontanella Francesco.