ESAME DI FONDAMENTI DI INFORMATICA - SIMONCINI – 04/06/2004 - C++
1. Sia
dato un file numeri.dat contenente un insieme non vuoto di
numeri interi. Si scriva una funzione crea_file() che legge
l’ultimo valore del file numeri.dat e costruisce un nuovo file solo_maggiori.dat
contenente i soli elementi di numeri.dat maggiori di
tale numero.
2. Si
scriva una funzione ok=verifica(s) che riceve in ingresso una
stringa s di lunghezza qualsiasi e restituisce il valore true
se essa è palindroma, false altrimenti.
(Nota: Palindroma è una parola o una frase che
si può leggere indifferentemente da sinistra verso destra o viceversa da destra
verso sinistra. Es. Anna, radar, …).
3. Si
scriva una funzione inserisci(a, l) che riceve in ingresso un
valore intero a e una lista semplice a valori interi
l non vuota e che non contiene
elementi ripetuti al suo interno. La funzione inserisci
verifica che non esista in l alcun elemento con campo informativo
uguale ad a e in questo caso inserisce in coda a l un nuovo
elemento con campo informativo uguale ad a.
4. Dati i numeri decimali A=108, B=-91 e C=-79, 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-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 crea_file()
{
fstream leggi, scrivi;
int last, x;
leggi.open(“numeri.dat”, ios::in);
while(leggi>>last)
;
leggi.close();
scrivi.open(“solo_maggiori.dat”, ios::out);
leggi.open(“numeri.dat”,
ios::in);
while((leggi>>x)
if(x>last)
scrivi<<x<<” “;
scrivi.close(),
leggi.close(); }
2.
boolean verifica(char *s)
{
int c=0;
for(int i=0; s[i]!=0, i++)
c++;
for(int j=0; j<i/2; j++)
{
if(s[j]!=s[c-j-1])
return false;
}
return true; }
3.
struct elem
{ int info;
elem* next; };
void inserisci(int a, elem *l)
{
elem *aux, *aux1;
for(aux=l; aux!=0;
aux=aux->next)
{ if(aux->info==a)
return;
aux1=aux; }
aux=new elem;
aux->info=a;
aux->next=0;
aux1->next=aux;
}