• Non ci sono risultati.

Prova d’esame di Laboratorio di Programmazione Strutturata per il corso di laurea in Scienze e Tecnologia dei Media Prova scritta – 2 Luglio 2013

N/A
N/A
Protected

Academic year: 2021

Condividi "Prova d’esame di Laboratorio di Programmazione Strutturata per il corso di laurea in Scienze e Tecnologia dei Media Prova scritta – 2 Luglio 2013"

Copied!
2
0
0

Testo completo

(1)

Prova d’esame di Laboratorio di Programmazione Strutturata per il corso di laurea in Scienze e Tecnologia dei Media

Prova scritta – 2 Luglio 2013

• Esercizio 1

Si scriva una propria versione della function di libreria strchr. Per fissare le idee, il prototipo della function richiesta `e il seguente:

char *prima pos car in stringa(char stringa[], char lettera);

esattamente come la function di libreria strchr, prima pos car in stringa deve restituire il primo indirizzo di memoria (a partire dall’inizio di stringa) corrispon- dentemente al quale si trova proprio il carattere lettera, che viene passato in ar- gomento.

Qualora il carattere lettera non sia tra quelli presenti tra l’inizio e il carattere di fine stringa, allora prima pos car in stringa dovr`a restituire l’indirizzo NULL.

• Esercizio 2

Si consideri una lista concatenata che `e implementata in linguaggio C, in modo tale che ogni suo nodo `e rappresentato da una struct costituita da due campi: il primo `e di tipo int e il secondo `e un puntatore alla struttura che rappresenta il nodo successivo della sequenza. Per fissare le idee, ogni nodo di tipo NodoLista sia definito come segue:

struct NODO { int info;

struct NODO *next;

};

typedef struct NODO NodoLista;

Come al solito, la lista concatenata `e definita grazie a un puntatore al primo elemento della sequenza. `E quindi utile introdurre il tipo Lista definito come segue:

typedef struct NodoLista* Lista;

Si scriva una function il cui prototipo `e il seguente:

int totale(Lista L);

essa deve restituire la somma di tutti i numeri info che compaiono nei nodi della lista concatenata, il cui primo elemento `e identificato dal puntatore L passato in argomento. Come al solito, quando L `e uguale a NULL, allora si intende che la lista

`e vuota e, quindi, la function totale dovr`a semplicemente restituire il valore 0.

• Esercizio 3 (facoltativo)

Si scriva una function ricorsiva il cui prototipo `e il seguente:

NodoLista *trova somma parziale(Lista L, int somma parz);

che ha lo scopo di restituire il puntatore p all’ultimo elemento che gode della seguente propriet`a: la somma parziale di tutti i numeri info che compaiono nei nodi della lista concatenata, a partire dall’elemento corrispondente all’indirizzo L fino a quello individuato da p, `e inferiore al valore di somma parz che viene passato in argomento.

(2)

2

Nella scrittura della function trova somma parziale si tengano presenti le seguenti convenzioni:

1. quando la lista individuata da L `e vuota, allora la function dovr`a semplicemente restituire NULL;

2. quando il numero info del primo elemento della lista (cio`e quello corrispon- dente all’indirizzo L) `e maggiore o uguale al valore di somma parz, allora la function dovr`a restituire NULL;

3. quando la somma di tutti i numeri info che compaiono nei nodi della lista con- catenata `e inferiore al valore di somma parz, allora la function deve restituire il puntatore all’ultimo elemento della lista concatenata;

4. siccome la function trova somma parziale deve soddisfare la richiesta di es- sere di tipo ricorsivo, allora essa deve richiamare se stessa, a meno che non siano verificate quelle condizioni banali che “sciolgono la ricorsione”, tali che l’indirizzo p da restituire pu`o essere determinato senza ulteriori richiami alla function stessa.

Riferimenti

Documenti correlati

b) l’energia totale del sistema delle due cariche. Durante la trasformazione la pressione varia linearmente con il volume ed il gas compie un lavoro pari a W AB = +100

Dopo l’urto perfettamente anelastico, in cui il proiettile si conficca nel blocco, il blocco si mette in moto e sale lungo un piano scabro, inclinato di 30 ° rispetto al

a) determinare la velocità del corpo all’istante di stacco dalla molla, nel punto A alla fine del tratto orizzontale e nel punto B, alla sommità del piano liscio di lunghezza

c) Facoltativo: la minima velocità che occorre impartire alla carica q , affinchè sfugga definitivamente da Q. a) si disegni il ciclo nel diagramma (p,V) e si calcoli il

2mgsen60° e la forza di attrito F a =  2mg cos 60° , entrambe parallele al piano inclinato e opposte allo spostamento.. Tali forze sono dirette come le congiungenti AP e BP..

b) supponendo ora il tratto d scabro e con coefficiente di attrito dinamico µ d , determinare µ d tale per cui la velocità alla fine del tratto piano d sia la metà di

a) la velocità della sferetta quando ripasserà per il punto A, dopo essere stata lasciata libera di muoversi. Si precisi se la quantità di calore è assorbita o ceduta. b) Si calcoli

(2) Fornire lo Fornire lo scheletro scheletro della classe Java della classe Java VettoreReali VettoreReali (solo campi d'istanza e intestazioni dei metodi). (solo campi d'istanza