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;

}