• Non ci sono risultati.

telefoniassumendo che le possibili operazioni siano le seguenti:

N/A
N/A
Protected

Academic year: 2021

Condividi "telefoniassumendo che le possibili operazioni siano le seguenti:"

Copied!
1
0
0

Testo completo

(1)

U N I V E R S I T À D E G L I S T U D I D I P I S A F A C O L T À D I I N G E G N E R I A

CORSO di LAUREA in INGEGNERIA delle TELECOMUNICAZIONI

ESAME DI FONDAMENTI DI INFORMATICA - SIMONCINI – 13/02/2006 - C++

1. Una sistema di ricariche di telefoni cellulari può essere rappresentato mediante un’array a valori interi di N posizioni. Ciascun elemento dell’array rappresenta l’ammontare de credito disponibile sul telefono cellulare di uno degli N clienti della società di telefonia (identificati con numeri progressivi da 0 a N-1). Si definisca una classe telefoni

assumendo che le possibili operazioni siano le seguenti:

 telefoni(): inizializzazione con tutti i depositi a zero;

 bool consumo(int i, int c): effettua una riduzione del credito dell’i-esimo cliente per un importo pari a c. Se l’ammontare del credito è minore dell’importo del consumo, viene restituito false, altrimenti viene restituito il valore true.

 ricarica(int i, int d): registra l’incremento del credito del cliente i-esimo di una cifra di denaro pari a d.

 int crediti_esauriti(): restituisce il numero dei clienti con un credito minore o uguale a zero.

2. Siano dati due file chiamati numeri1.dat e numeri2.dat contenenti ciascuno un elenco di numeri interi positivi diversi fra loro. Si scriva una funzione booleana comuni() che crea un nuovo file numeri_com.dat che contiene i soli numeri che compaiono sia in numeri1.dat che in numeri2.dat. Se esiste almeno un numero in comune fra i due file, la funzione restituisce true, altrimenti, se non esistono numeri in comune, il file numeri_com.dat risulterà vuoto e la funzione restituisce false.

3. Data una lista semplice a valori interi l ordinata in senso crescente, scrivere una funzione elimina(l, n) che riceve in ingresso la lista l e in intero n e dealloca tutti gli elementi di l che hanno il campo informativo maggiore di n.

4. Dati i numeri decimali A=201, B=65 e C=-64, 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

Risultati e Soluzione del compito:http://www.iei.pi.cnr.it/~glami/elenco-compiti.htm

(2)

U N I V E R S I T À D E G L I S T U D I D I P I S A F A C O L T À D I I N G E G N E R I A

CORSO di LAUREA in INGEGNERIA ELETTRONICA

Es. 1 // telefoni.h const int N=100;

class telefoni { int TC[N];

public:

telefoni() ;

bool consumo (int i, int c) ; void ricarica (int i, int d);

int crediti_esauriti();

}

// telefoni.cc

#include “telefoni.h”

#include <iostream.h>

telefoni::telefoni()

{ for (int i=0; i<N; i++) TC[i]=0;

}

boolean telefoni::consumo (int i, int c) { TC[i]-=c;

if (TC[i]<0) {

cout<<”Il credito è esaurito\n”;

return false; } return true;

}

void telefoni::ricarica (int i, int d) { TC[i]+=d; }

int telefoni:: crediti_esauriti( ) { int cont=0;

for (int i=0; i<N; i++)

if(TC[i]<=0) cont++;

return cont; }

Es. 2

#include <fstream.h>

bool comuni() { fstream f1, f2, g;

f1.open(“numeri1.dat”, ios::in);

g.open(“numeri_com.dat”, ios::out);

int n1, n2;

bool trovato=false ; while(f1>>n1) {

f2.open(“numeri2.dat”, ios::in);

while(f2>>n2) {

if(n1==n2) { g<<n1<<”\n”

trovato=true;

break; } }

f2.close();

(3)

U N I V E R S I T À D E G L I S T U D I D I P I S A F A C O L T À D I I N G E G N E R I A

CORSO di LAUREA in INGEGNERIA ELETTRONICA

}

f1.close();

g.close();

return trovato;

} Es. 3

void elimina(elem*& l, int n) { elem *aux, *aux1;

if(l==0) return;

if(l->info > n) { aux=l;

while(aux!=0) { l=l->next ; delete aux;

aux=l;

} } else {

aux=l->next ; aux1=l ;

for( ; aux->info<=n ; aux=aux->next) aux1=aux ;

while(aux !=0) {

aux1->next=aux->next ; delete aux ;

aux=aux1->next ; }

} }

Riferimenti

Documenti correlati

SERVIZIO 14 Russo Giuseppina ISTRUTTORE DIRETTIVO giuseppina.russo@regione.sicilia.it 0917070917 SERVIZIO 14 Sabatino Biagio FUNZIONARIO DIRETTIVO

se troverai accanto alla scritta un numero che indica il numero delle operazioni che necessitano di approvazione in questo caso sono tutte le richieste di ricarica dove

Inoltre, nell’app AirKey viene conservata la panoramica delle autorizzazioni di accesso e viene controllato lo stato della batteria del cilindro AirKey.. Il telefono cellulare

TRICLORURO-DI-FERRO(7705-08-0) SE TROVATO NELLA SEGUENTI LISTE DI REGOLAMENTI Accordo europeo che regola il trasporto di merci pericolose su strada (ADR 2019, Francese) Accordo

i dati personali diversi da quelli sensibili e giudiziari potranno essere comunicati esclusivamente a soggetti pubblici se previsto da disposizioni di legge o regolamento, in

✓ n.. 1 Barrare l’opzione che interessa. 1 Barrare l’opzione che interessa. 1 Convenzione tra Ministero dell’Università e Consiglio Nazionale dei dottori

All’atto della sottoscrizione del contratto in Filiale riceverai il Codice Titolare (lo trovi sulla tua copia del contratto “Servizi via internet, cellulare e telefono”) e

Cosa mettere: Assorbenti, calze in nylon, canne per innaffiare, carta autocopiante, carta chimica o oleata o sporca, carta da forno, carta per alimenti, CD e DVD, cenere