ESAME DI FONDAMENTI DI INFORMATICA - SIMONCINI – 03/06/99 - C++
1.
Un campionato di calcio
a N squadre può essere rappresentato mediante una matrice camp quadrata di
interi di dimensione (N+1)x(N+1). Le
squadre partecipanti al campionato sono numerate da 1 ad N e sono
identificabili attraverso il corrispondente numero.
Ogni elemento Camp[i][j] della matrice contiene i punti acquisiti dalla squadra
i quando ha incontrato la squadra j:
Camp[i][j]= 3 se la partita fra la squadra i e la squadra j si é conclusa con la vittoria di i;
Camp[i][j]=0 se la partita fra la squadra i e la squadra j si é conclusa con la vittoria di j;
Camp[i][j] =1 se la partita fra la squadra i e la squadra j si é conclusa in pareggio;
Camp[i][j] =-1 altrimenti.
Si
definisca una classe campionato ogni
oggetto della quale rappresenta un campionato. Sugli oggetti della suddetta
classe é possibile compiere le seguenti operazioni:
·
Campionato
c;
costruttore
che inizializza un campionato (ogni elemento = -1);
·
match
();
inserisce
nella matrice il risultato di una
partita leggendo i dati da tastiera (squadra i,
squadra j e risultato).
·
Primo
();
Stampa
sul monitor il numero della squadra prima in classifica (che ha totalizzato il
maggior numero di punti), nel caso vi siano più di una squadra in testa alla
classifica viene visualizzata la squadra a più bassa numerazione;
1. Si
scriva una funzione elimina_minori(l)
che riceve come parametro il puntatore ad un lista semplice. La funzione legge da tastiera
un vzlore intero n,
e calcola la media aritmetica m fra n ed il vaolre
massimo degli elmementi della lista.
Infine elimina dalla lista tutti gli elementi che hanno valore minore di m, restituendo la lista così modificata.
2.
Un file dati.txt contiene, per ciascuna riga, le informazioni relative
all’esito di un esame. Ogni riga é composta dal numero di matricola e il cognome
di uno studente e il voto conseguito (compreso fra 0 e 30). Si scriva un
programma che visualizza sul monitor il numero di matricola degli studenti che
hanno conseguito un punteggio superiore a 15 e visualizza la media aritmetica
dei voti. Si consideri che ogni cognome non supera i 15 caratteri.
3.
Data la seguente mappa
di Karnaugh si determini il vaolre delle uscite “non specificate” in modo da
ottenere la forma minima ottimale e se ne disegni il circuito.
AB
00 01
11 10
C
0 |
|
1 |
- |
|
1 |
1 |
|
- |
1 |
10 |
10 |
10 |
3 |
1)
//camp.h
const int N=18;
class campionato {
int
partite[N+1][N+1];
public:
void
primo ();
void
match ();
campionato();
}
//camp.cc
#include <iostream.h>
#include
"camp.h"
campionato::campionato()
{
for (int
i=0; i<N+1; i++)
for
(int j=0; j<N+1; j++)
partite[i][j]=-1;
}
void campionato::match() {
char
risu;
int
s1, s2;
cout << "Inserisci
numero della squadra di casa: ";
cin >> s1;
cout << "Inserisci numero
della squadra ospite: ";
cin >> s2;
cout<< "Inserisci il risultato:\n"
"i -
vittoria interna; \n"
"e -
vittoria esterna; \n"
"p -
pareggio; \n";
cin
>> risu;
switch
(risu) {
case
'i': {
partite[s1][s2]
= 3;
partite[s2][s1]
= 0;
break;}
case
'e': {
partite[s1][s2]=0;
partite[s2][s1]=3;
break;}
case
'p': {
partite[s1][s2]=partite[s2][s1]=1;
break;}
default:
{
cout
<< "valore errato";
break;
};
}
}
void
campionato::primo () {
int p_max=0;
int
p=0;
int
primo=0;
for
(int i=1; i<N+1; i++) {
for
(int j=1; j<N+1; j++)
if(partite[i][j]>=0)
p+=partite[i][j];
if
(p>p_max) {
primo=i;
p_max=p;}
}
cout << "La squadra
numero " << primo <<" è prima in classifica\n";
}
2)
#include <iostream.h>
struct elem {
int info;
elem * succ;
};
void elimina_minori (elem *&l) {
elem * l1;
elem *aux;
int i=0;
int n, h;
int max = 0;
if (l==0) {
cout<<"lista
vuota!";
return;
}
cout
<< "Inserisci un valore:\n";
cin >> n;
aux = l;
while
(aux !=0) {
i++;
if
(aux->info>max) max = aux->info;
aux = aux->succ;
}
cout << "max =" << max <<
"\n";
h=(max+n)/2;
cout << "h
="<<h<<"\n";
l1 = l;
while ((l1->info <h)&&(l1!=0)) {
aux=l1;
l1
= l1->next;
l = l1 ;
delete aux ;
}
aux =l ;
l1 =
l->next ;
while(l1=!0) {
if (l1->info <h)
{
aux->next
= l1 ->next;
delete
l1;
l1 = aux ->next; }
else {
aux =
aux ->next ;
l1 =l1->next ;
}
}
}
3)
# include <fstream.h>
void main () {
const int
N=31;
int v1=0;
int j,
matr, voto, media, somma;
char
nome[15];
char
cognome [15];
fstream f;
f.open("esame.txt",
ios::in);
j=0;
somma=0;
while (!f.eof()) {
f >>
matr>>nome>>cognome>>voto;
v1+=voto;
if (voto>15)
cout << matr << "\n";
j++;
}
media = v1/j;
cout << "Media voti: " << media
<<"\n";
}
4)
|
1 |
- |
|
1 |
|
- |
1 |
|
1 |
1 |
|
1 |
|
|
1 |
_
_
BC + BC