ESAME DI FONDAMENTI DI INFORMATICA - SIMONCINI – 27/9/2001 - C++
1. Dato un file di testo parole.txt si scriva una funzione scrivi_random() che costruisce il file recipiente.txt secondo il seguente criterio:
a. si legge una parola dal file parole.txt
b. si calcola la lunghezza n della parola letta;
c. si scrive questa parola in recipiente.txt;
d.
si leggono n parole dal file parole.txt
senza scriverle in recipiente.txt
e. si riparte dal punto a. fino alla fine del file.
2.
Si scriva una funzione ok=verifica_formato(M) che
riceve in ingresso una matrice M a valori interi. La
funzione verifica che M
abbia il formato illustrato in
figura e restituisce T in caso affermativo, restituisce F altrimenti.
3.
Sia data una lista circolare semplice a valori interi l
ordinata in senso decrescente. Si
scriva una funzione inserisci (l) che legge da tastiera un valore
intero e, se non esiste alcun elemento in l con campo informativo
uguale a n, inserisce un nuovo elemento nella lista l con campo
informativo uguale a n mantenendo
l’ordinamento. Altrimenti non modifica la lista e stampa sul monitor un
messaggio congruente.
4. Dati i numeri decimali A=65, B=-102 e C=109, 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=A-B e si dica se il risultato ottenuto è o no significativo.
10 |
10 |
10 |
3 |
#include <fstream.h>
#include <string.h>
void scrivi_random ()
{
char *s1; *s2;
fstream f,g;
int salti;
f.open(“parole.txt”,
ios::in);
g.open(“recipiente.txt”,
ios::out);
while(f>>s1)
{
salti=strlen(s1);
g<<s1;
while(salti>0)
{
salti--;
if(f>>s1);
else return;
}
}
f.close();
g.close();
}
2.
enum bool{F;T};
const nit N=12;
bool verifica_formato(int
M[N][N])
{
for(int i=0; i<N; i++)
for(int j=0; j<N; j++)
{
if ((A[i][j]==0)
&&(j>i));
else if
(A[i][j]== i-j+1);
else return F;
}
return
T;
}
3.
#include
<iostream.h>
struct
elem { int info;
elem* next;
}
void
inserisci( elem*& l)
{
int
val;
elem*
aux, *aux1, *aux3;
cout<<”inserisci un
valore\n”;
cin>>val;
//caso lista vuota
if(l==0) { aux2=new
elem;
aux2->info = val;
l=aux2 ;
aux2->next =l ;
return; }
//inserimento in testa
if
(l->info<val)
{ for(aux3=l; (aux3->next!=l);
aux3=aux3->next) ;
aux2=new
elem;
aux2->info
= val;
aux2->next =l ;
l=aux2,
aux3->next=l ;
}
//caso generale
aux1=l ;
for(aux3=l->next;
(aux3!=l)&&(aux3->info>val); aux3=aux3->next)
aux1=aux3;
if (aux3->info !=
val) //se si deve inserire
{ aux2=new elem;
aux2->info=val;
aux1->next=aux2;
}
else
cout<<”elemento già
presente!!!\n”;
}