ESAME DI FONDAMENTI DI INFORMATICA - SIMONCINI – 31/01/2003 - C++
1.
Sia
dato un file numeri.dat contenente un insieme di numeri interi maggiori di zero e diversi fra
loro. Si scriva una funzione ordina() che crea un nuovo file chiamato num_org.dat
che contenga gli stessi numeri del file numeri.dat ma ordinati in senso decrescente.
2.
Si
scriva una funzione inserisci_dopo_il_max(c, l) che riceve in ingresso un
carattere c ed il puntatore ad una lista semplice a valori di
tipo carattere l. La funzione inserisce un nuovo elemento con
campo informativo uguale a c immediatamente dopo l’elemento di l con campo informativo alfabeticamente massimo. Per semplicità si
assuma che non vi siano elementi ripetuti nella lista l.
3.
Si
scriva una funzione ok=controlla_3_stringhe(s1, s2,
s3) che
riceve in ingresso tre stringhe s1, s2 e s3 di ugual lunghezza e
verifica che queste non abbiano caratteri
in comune.
4.
Dati
i numeri decimali A=111, B=43 e C=-76, si determini il minimo numero di bit necessari per rappresentare contemporaneamente
i suddetti numeri in complemento a 2 e se ne dia la rappresentazione.
Utilizzando poi lo stesso numero di bit, si esegua l’operazione D=B-C e si discuta se il risultato ottenuto è o no significativo.
Punteggio:
Es.1 |
Es.2 |
Es.3 |
Es.4 |
10 |
10 |
10 |
3 |
1.
#include
<fstream.h>
void ordina() {
int n1, n,
fstream leggi, scrivi;
int cont=1;
leggi.open(“num.dat”, ios::in);
scrivi.open(“num_ord.dat”, ios::out);
if (leggi>>n1);
else return;
while(leggi>>n)
{
if(n>n1)
n1=n;
cont++;
}
scrivi<<n1;
leggi.close( );
leggi.open(“num.dat”, ios::in);
int nb=0;
int nu=n1;
for(int i=1; i<cont; i++)
{
while(leggi>>n) {
if(nb<n<nu)
{
nb=n; n1=n; }
} scrivi<<n1; nb=0; nu=n;
leggi.close();
leggi.open(“num.dat”, ios::in);
}
}
2.
void inserisci_dopo_il_max(char c, elem *&l)
{
elem *aux, *aux1;
if(l==0) {
l=new elem;
l->info = c;
l->next
=0;
return; }
c1 = l->info;
for(aux = l;
aux !=0; aux->aux->next)
{
if(aux->info > c1)
c1=aux->info;
}
aux=l;
while(aux->info !=
c1)
aux=aux->next;
aux1=new
elem;
aux1->info =
c;
aux1->next =
aux->next;
aux->next=aux1;
}
3.
boolean
controlla_3_stringhe (char *s1, char *s2, char *s3)
{
int cont=0;
for(int
i=0; s[i]!=’\0’; i++)
cont++;
for(i=0;
i!=cont; i++)
for(int j=0; j!=cont; j++)
if(s1[i]==s2[j] ||
s1[i]==s3[j]) return F;
for(i=0;
i!=cont; i++)
for(int j=0; j!=cont; j++)
if(s2[i]==s3[j]) return F;
return T; }