Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoGildo Conti Modificato 5 anni fa
1
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
2
Es. 1 Un file contiene una sequenza (di lunghezza ignota) di numeri interi positivi, uno per riga. I numeri sono scritti in lettere cifra per cifra, e sono terminati dalla parola stop. Come esempio si consideri il seguente file: otto cinque nove stop due due stop sette zero sette stop Il file contiene i numeri 859, 22 e 707. Si scriva un programma C, opportunamente organizzato in funzioni, che legga da tastiera il nome del file e stampi il valore della somma dei numeri ivi contenuti. Nell’esempio il programma deve stampare 1588.
3
Es. 2 Un file contiene una sequenza (di lunghezza ignota) di studenti iscritti per una prova d’esame. Ogni riga del file contiene la matricola, il nome, il cognome e l’anno di corso di uno studente, più un eventuale commento. Come esempio si consideri il seguente file. 29333 Mario, Rossi, RG 34211 Irene, De Neri, FC 23432 Pier Maria, Bianchi, RG ciao mamma 35211 Giuseppe, Verdi, FC odio questo esame! 36122 Luigi, Rossi, FC che sia la volta buona! 22222 Chiara, Blu, RG Si noti che il nome e il cognome possono contenere spazi bianchi e sono seguiti da una virgola. Si noti inoltre che l’anno di corso è composto da un numero, uno spazio bianco e i due caratteri FC o RG, a seconda che lo studente sia fuori corso o regolare, rispettivamente. Si assuma infine che il numero di spazi bianchi dopo la virgola sia arbitrario. Si scriva una funzione C che prenda come parametri il nome del file e un anno di corso (un intero tra 1 e 5), e restituisca il numero di studenti iscritti fuori corso per quell’anno. Nel caso che il file non esista, oppure l’anno di corso non sia compreso tra 1 e 5 la funzione deve restituire il valore -1.
4
Es. 3 Si assuma una lista composta di abbreviazioni (ad esempio TO, MI, RM) e dalle corrispondenti parole estese implementata tramite record e puntatori utilizzando la seguente struttura: struct elem { char abbr[2]; char *estesa; struct elem *next; } Scrivere una funzione C che, ricevendo come parametri il puntatore all’inizio della lista, una abbreviazione e la corrispondente parola estesa cerchi l’abbreviazione nella lista e: restituisca 0 se la coppia è presente nella lista restituisca 1 se la coppia non è presente nella lista c) restituisca 2 se l‘abbreviazione è presente ma ad essa corrisponde una parola differente. Inoltre, nel caso b) un nuovo record deve essere aggiunto in coda alla lista e nel caso c) la parola estesa deve essere sostituita da quella passata come parametro. Implementare anche due funzioni di supporto: stampa (che stampa il contenuto della lista) e crealista (che dato un numero intero k, crei una lista di k elementi chiedendo da input i valori delle coppie)
5
Es. 4 Sia dato un vettore di dimensione nota di stringhe contenenti tre o più caratteri (escluso il terminatore di stringa). Si vuole aggiungere ad ogni stringa s nel vettore la prima di quelle seguenti che abbia esattamente le prime due lettere iniziali in comune con le due finali di s, evitando di ripetere le due lettere in comune. Nel caso nessuna delle stringhe seguenti abbia due lettere in comune con s non bisogna modificare s. Ad esempio, se il vettore contiene le seguenti 7 stringhe: casa postino sasso osteria salvia notare renna dovrà essere trasformato nel seguente vettore: casasso postinotare sasso osteria salvia notarenna renna Si scriva una funzione C che ricevendo in ingresso l’indirizzo del vettore e la sua dimensione effettui la trasformazione di cui sopra.
6
Es. 5 Scrivere una funzione che cerchi un intero k all'interno di un albero binario. Scrivere una funzione che restituisca il valore massimo contenuto nei nodi di un albero binario. Scrivere una funzione che verifichi se due alberi binari sono uguali Scrivere una funzione ricorsiva che, dato un albero, inserisca in una lista solo i nodi di livello pari Scrivere una funzione che, dato un albero che rappresenta una espressione, es. (2-3)*(4+5), ne calcoli il valore e lo restituisca in output
7
Es. 5 Scrivere una funzione ricorsiva che restituisca il numero di foglie di un albero binario. Scrivere una funzione che, dati due insiemi numerici rappresentati mediante alberi binari di ricerca (senza ripetizioni), crei la lista rappresentante l'intersezione dei due insiemi. Scrivere una funzione ricorsiva che restituisca il numero di nodi interni di un albero binario.
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.