Corso di Fondamenti di Informatica (M-Z)

Размер: px
Начинать показ со страницы:

Download "Corso di Fondamenti di Informatica (M-Z)"

Транскрипт

1 Corso di Fondamenti di Informatica (M-Z) Avvertenze Consegnare solo fogli formato A4. Scrivere su un solo lato (no fronte retro) In ordine di preferenza usare inchiostro nero, matita, inchiostro blu. In testa a ciascun foglio scrivere: cognome, nome, numero progressivo di pagina rispetto al totale; esempio per il secondo foglio di 3 consegnati: Giuseppe Russo 2/3 Mantenere sul banco il libretto o altro documento di riconoscimento fino a controllo avvenuto Nient altro deve trovarsi sul banco: non è consentito consultare libri, dispense, appunti, ecc. La correzione di riferimento per l autovalutazione verrà effettuata in questa stessa aula alla fine della prova La consegna delle fotocopie dei compiti avverrà al termine della correzione Chi si presenta all orale deve portare l implementazione al computer della propria soluzione, eventualmente corretta, corredata di tutto quanto necessario alla verifica del corretto funzionamento. Prova Scritta 6/12/2004 Si scriva un programma per determinare il numero di occorrenze di ogni parola in un testo. Il programma chiede il file di testo da elaborare e costruisce una lista di strutture con due campi: la parola ed il relativo numero di occorrenze. La lista viene costruita ed aggiornata man mano che si leggono le parole dal file, mantenendola sempre ordinata rispetto al numero di occorrenze riscontrate. Al termine della lettura del file il programma stampa la lista sullo standard output. #include <iostream.h> #include <fstream> using std::cout; using std::cin; using std::ios; using std::fstream; fstream file_da_leggere; // stream per leggere il file char nome_del_file[32]; // stringa per ospitare il nome del file // da leggere struct elemento // questa e' la struttura dell'elemento della char parola[100]; // lista int occorrenza; elemento* succ; ; typedef elemento* lista; // tipo di dato da far restituire alle funzioni // Questa procedura inserisce l'elemento preso al secondo argomento nella // lista presa per riferimento al primo. L'inserimento avviene in // maniera ordinata rispetto al campo occorrenza degli elementi void inserisci_ordinato(lista& i, elemento e) lista p = 0, q, r; for (q = i; q!= 0 && q->occorrenza > e.occorrenza; q = q->succ) p = q; r = new elemento; *r = e; r->succ = q;

2 // controlla se si deve inserire in testa if (q == i) i = r; else p->succ = r; // Questa funzione restituisce il valore true se e solo se le stringhe // contenute nei due vettori presi in input sono identiche bool div(char vet1[], char vet2[]) int i = 0; while ((vet1[i]!= '\0') && (vet2[i]!= '\0') && (vet1[i] == vet2[i])) i++; if (vet1[i] == '\0' && vet2[i] == '\0') return false; else return true; // Questa funzione estrae un elemento dalla lista presa per riferimento al // primo argomento. L'elemento estratto e' quello la cui stringa contenuta // nel suo campo parola è identica alla stringa contenuta nel campo // parola dell'elemento preso pure per riferimento al secondo argomento bool estrai_elem_dato(lista& i, elemento& e) lista p = 0, q; for (q = i; q!= 0 && div(q->parola,e.parola); q = q->succ) p = q; if (q == 0) return false; if (q == i) i = q->succ; else p->succ = q->succ; e.occorrenza = q->occorrenza; delete q; return true; // Questa procedura stampa la lista sullo standard output. La stampa // avviene un elemento per riga, prima il numero di occorrenze e poi // la parola void stampalista(lista p0) lista p = p0; while (p!= 0) cout << p->occorrenza << ' ' << p->parola << '\n'; p = p->succ; // questo e' il programma principale che deve: // 1. chiedere quale sia il file di testo da elaborare // 2. aprire il flusso in lettura // 3. costruire ed aggiornare la lista delle parole con le relative // occorrenze; la parola è un testo compreso fra due spazi // 4. chiudere il flusso

3 // 5. stampare la lista sullo standard output int main() char r; lista parole = 0; elemento el; cout << "Quale file vuoi analizzare?\n"; cin >> nome_del_file; file_da_leggere.open(nome_del_file, ios::in); while (file_da_leggere >> el.parola) if (estrai_elem_dato(parole, el)) el.occorrenza++; inserisci_ordinato(parole, el); else el.occorrenza = 1; inserisci_ordinato(parole, el); file_da_leggere.close(); stampalista(parole); return 0; ESEMPIO [prompt]$./a.out Quale file vuoi analizzare? omaggio_a_pippo_franco " 13, 10 che 9 il 7 : 6 un

4 6 a 6 di 6 in 5 e' 5 ho 5 e 5 sono 4! 4 le 4 gli 4 una 4 da 3 con 3 mi 3 ha 3 suo 3 quello 3 l' 3 io 3 conto 3 non 2? 2 lei 2 al 2 dice 2 la 2 per 2 direttore 2 entrato 2 anni questo 2 porta 2 ma 2 poi 2 tutto 2 alla 2 bene 2 volta 2 uguali 1 assunto 1 bravissimo 1 formaggio 1 senza 1 o 1 risponde 1 cosa 1 > 1 bar 1 panino 1 prendere 1 vada 1 < 1 media 1 terza 1 solo 1 capo-ufficio 1 se 1 test 1 prima 1 fare 1 dovrei 1 quindi 1 voti 1 dei 1 massimo 1 lauree 1 due

5 1 fatto 1 aiuto-assistente 1 offrire 1 posso 1 impiego 1 unico 1 perso 1 trovarla 1 veniva 1 chi 1 decidere 1 sorte 1 tirato 1 abbiamo 1 signor 1 camera 1 appena 1 ospedale 1 trovare 1 va 1 azienda 1 grande 1 impiegato 1 fa 1 nonno 1 sospeso 1 lasciato 1 guardi 1 lui 1 faccio 1 sulla 1 cartello 1 euro pagare 1 scusi 1 portato 1 cameriere 1 quando 1 andarmene 1 stavo 1 scoppiare 1 mangiato 1 volo 1 fra 1 nipoti 1 vostri 1 i 1 pagheranno 1 volete 1 mangiate 1 entrate 1 davanti 1 scritto 1 ristorante 1 visto 1 genova 1 ero 1 ieri 1 cistifellea 1 quelli 1 vita 1 nella 1 riusciti 1 calcoli 1 unici 1 matematica 1 bravo

6 1 disoccupati 1 rimanere 1 probabilita' 1 uguale 1 tutti 1 avranno 1 studi 1 terminati 1 studenti 1 senso 1 nel 1 si' 1 pubbliche 1 quelle 1 private 1 scuole 1 rendera' 1 legge 1 disegno 1 approvazione 1 via 1 nessuno 1 ascolta 1 ti 1 tanto 1 vuoi 1 dire 1 puoi 1 dove 1 democrazia 1 viviamo 1 noi 1 nato 1 bello 1 sempre 1 uomo 1 diceva 1 si 1 sorella 1 mia 1 fuoco 1 dato 1 poco 1 dopo 1 perche' 1 capito 1 aver 1 credo 1 spiegato 1 hanno 1 me 1 incendio 1 incesto 1 tra 1 differenza 1 chiesto 1 bambino 1 ricordo

Corso di Fondamenti di Informatica Prof. Aldo Franco Dragoni Prova scritta del 21/06/2010. Avvertenze. Specifiche

Corso di Fondamenti di Informatica Prof. Aldo Franco Dragoni Prova scritta del 21/06/2010. Avvertenze. Specifiche Avvertenze Usare ESCLUSIVAMENTE penne ad inchiostro nero o blu (NO MATITE). Consegnare solo fogli formato A4 scritti da ambo le parti. In testa a ciascun foglio scrivere: cognome, nome, numero progressivo

Подробнее

Corso di Fondamenti di Informatica (M-Z) Prof. Aldo Franco Dragoni. Prova Scritta 19 aprile 2007

Corso di Fondamenti di Informatica (M-Z) Prof. Aldo Franco Dragoni. Prova Scritta 19 aprile 2007 Corso di Fondamenti di Informatica (M-Z) Prof. Aldo Franco Dragoni Avvertenze Consegnare solo fogli formato A4. Scrivere su un solo lato (no fronte retro) In ordine di preferenza usare inchiostro nero,

Подробнее

Informatica A. Istruzioni

Informatica A. Istruzioni Informatica A Cognome Nome Matricola o Codice studente Istruzioni Non separate questi fogli. Scrivete la soluzione solo sui fogli distribuiti, utilizzando il retro delle pagine in caso di necessità. Cancellate

Подробнее

Laboratorio di Informatica

Laboratorio di Informatica Liste semplici (semplicemente linkate) Una lista semplice e costituita da nodi Laboratorio di Informatica 7. Strutture complesse di dati in C++ Ogni nodo e una struttura che contiene : Dati Un riferimento

Подробнее

Gestione di files Motivazioni

Gestione di files Motivazioni Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)

Подробнее

Esercizio 1 File: ordinamento di un archivio di studenti (file binario)

Esercizio 1 File: ordinamento di un archivio di studenti (file binario) Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 9 Esercitazione: 19 gennaio 2005 Esercizi sui file e sulle liste. Scaletta Esercizio 1 File: ordinamento di un archivio

Подробнее

Informatica 1. Prova di recupero 21 Settembre 2001

Informatica 1. Prova di recupero 21 Settembre 2001 Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo

Подробнее

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012 Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 Sommario Operatore? Tipo di dato: struct La ricorsione Funzioni ricorsive Esercizi proposti 26/04/2012 2 Operatore? L'operatore? può essere

Подробнее

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione

Подробнее

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...

Подробнее

Programmazione 1 A.A. 2015/2016

Programmazione 1 A.A. 2015/2016 Cognome e Nome Matricola Programmazione 1 A.A. 2015/2016 Appello del 16 Dicembre 2015 Compito n 1 Prima parte Esercizio 1 (10 punti) Cosa stampa il seguente frammento di codice Java? int[] A = {3, 8, 91,

Подробнее

Fondamenti di Informatica 2008 corso prof. A. Picariello. Operazioni sui FILE in C++

Fondamenti di Informatica 2008 corso prof. A. Picariello. Operazioni sui FILE in C++ Fondamenti di Informatica 2008 corso prof. A. Picariello Operazioni sui FILE in C++ Librerie di I/O per la gestione dei FILE Il C++ consente di utilizzare le librerie standard di I/O del C mette anche

Подробнее

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella Corso di Informatica Tipi strutturati: Stringhe Anno Accademico 2010/2011 Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri quali

Подробнее

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

IL CONCETTO DI FILE. È illecito operare oltre la fine del file. IL CONCETTO DI FILE Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni su memoria di massa. Concettualmente, un file è una sequenza di registrazioni

Подробнее

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false; Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i

Подробнее

fondamenti di informatica 2 programmazione in C++ Riccardo Galletti - tratto da

fondamenti di informatica 2 programmazione in C++ Riccardo Galletti - tratto da Riccardo Galletti - tratto da www.riccardogalletti.com pag. 1 #include #include #include /*siano date in ingresso due liste ordinate di numeri interi L1 e L2. Scrivere

Подробнее

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa. 3 ITI - a.s. 2007-2008 Compiti di Informatica ESTATE 2008 ARRAY E STRINGHE Scrivere una funzione che carica da tastiera un array di n elementi e lo stampa invertendo il primo elemento con l'ultimo, il

Подробнее

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

Подробнее

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre Alcune Soluzioni

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre Alcune Soluzioni COMPITO DI LABORATORIO DI PROGRAMMAZIONE 2001-2002 10 Dicembre 2001 Alcune Soluzioni ESERCIZIO 1. Si consideri il seguente frammento di codice in linguaggio Java: int[][] a = new int[n][n]; for (int i

Подробнее

Esercizio 1 Liste: calcolo del numero di elementi ripetuti in una lista

Esercizio 1 Liste: calcolo del numero di elementi ripetuti in una lista Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 11 Esercitazione: 27 gennaio 2005 Esercizi su liste, ricorsione, file. Scaletta Esercizio 1 Liste: calcolo del numero di

Подробнее

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII LABORATORIO DI INFORMATICA ESERCITAZIONE VIII Cercate di eseguire gli esercizi da soli. Se non ci riuscite, cercate di capire i messaggi di errore. Se non ci riuscite, provateci di nuovo. Poi chiamate

Подробнее

Gestione dinamica di una coda

Gestione dinamica di una coda Gestione dinamica di una coda Una coda o queue è una lista lineare a lunghezza variabile in cui l'inserimento di nuovi elementi (push) viene effettuato ad un estremo (fondo o rear) e l'estrazione degli

Подробнее

4. Accesso diretto per gli archivi con record a lunghezza costante

4. Accesso diretto per gli archivi con record a lunghezza costante 4. Accesso diretto per gli archivi con record a lunghezza costante Nell accesso diretto (in inglese, random) al file binario, le operazioni di lettura o scrittura devono essere precedute dall operazione

Подробнее