DOMANDA 2 Dire se le seguenti espressioni logiche sono equivalenti: ((A B ) (A+B ))+(B C ) = (A B )+(B C ) e giustificare la risposta Risposta

Documenti analoghi
MATRICOLA S B/1 BIN: MS: CA2: BIN: = 1x x x x x x x x2 0 = 182

Not found MATRICOLA S C/1 AAA-BARC BARD-BOUH BOUI-CART CARU-CONS CARU-CONS CONT-DEMAR

MATRICOLA S C/1. Informatica 6 Luglio 2015

I/O Avanzato in C: scheda riassuntiva

file fisico file logico

Informatica B

Politecnico di Torino

Informatica B

Laboratorio di Elementi di Architetture e Sistemi Operativi Esercizi del 18 Aprile 2012

Esercizio 1. Esercizio 1 - Soluzione

Esercizio 1 (17 punti)

Alcuni Soluzioni. Fornire la specifica di un algoritmo risolutivo utilizzando lo pseudocodice visto a lezione.

Esercizi proposti. Esercizio Somma numeri Esercizio Bersagli Esercizio Consumi toner

Esercizio 1 (15 punti)

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL

if(vocale == true && stringa[i+1] == stringa[i]){ cont++; printf("la vocale ripetuta e' %c\nil numero di coppie e' %d\n", stringa[i], cont); }

Programmazione I (Classe 1)

Esercizio 1 (15 punti)

Lab 09 Gestione file di testo

Lezione 11: Liste a Puntatori e Input/Output

Lezione 22: Input/Output e Files

Politecnico di Torino

Relativamente agli esempi sopra riportati, al termine dell esecuzione della funzione il file di uscita dovrà contenere quanto riportato a lato.

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

Opinione calcolamedia( ) Opinione inverti( )

Fondamenti di Informatica 2

Politecnico di Milano - Facoltà di Ingegneria INFORMATICA A - Corso per allievi GESTIONALI - Prof. C. SILVANO A. A. 2003/ novembre 2003

ELEMENTI DI INFORMATICA LB ESERCITAZIONE (del 09/03/2007) Files, Strutture e Liste

Fondamenti di Informatica 2

Linguaggio C: Array Valeria Cardellini

Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto.

I cicli. Iterazioni Calcolo della media Istruzioni break e continue

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata

Programmazione I. De Marco - Zizza. De Prisco - Senatore. Ritirato. Appello di Luglio (prima prova) 18 luglio Cognome: Nome: Matricola:

Programmazione I (Classe 1)

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Primo programma in C

Sistemi Operativi (M. Cesati)

Gestione dei file. File di testo e binari

Fondamenti di Informatica e Laboratorio T-AB Prova Pratica - 16 Giugno 2009 Compito A

Esercitazioni di Informatica (CIV)

int ninv; /* numero di inventario */

File di testo in C. Accesso ai file Funzioni fopen/fclose Funzioni fget*/fput* Funzioni fprintf/fscanf Condizione feof

Titolo presentazione

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

# include<stdio.h> int main() { // Dichiarazioni int n; int i;

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 26 Novembre 2014 COGNOME E NOME RIGA COLONNA MATRICOLA

Primi esempi di programmi. Il tipo int Le variabili Altri tipi interi Operatori di assegnazione

Programmazione I (Classe 1)

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 26 Novembre 2014 COGNOME E NOME RIGA COLONNA MATRICOLA

Informazioni Utili. Fondamenti di Informatica L-B (L-Z) Esercitazioni. A.A. 2005/06 Tutor: Loris Cancellieri

a.a Codice corso: 21012

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Array Tipi di dato semplici e strutturati strutturati array elementi omogenei numero d ordine indice lunghezza dimensione

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 26 Novembre 2014 COGNOME E NOME RIGA COLONNA MATRICOLA

Fondamenti di Informatica T-1 Modulo 2

1 (6) 2 (7) 3 (7) 4 (7) 5 (6)

1: #include <stdio.h> 2: #include <stdlib.h> 3: 4: #define MAXDIM 10 5: 6: int main(int argc, char *argv[]) 7: { 8: int numrighe1, numcolonne1,

Fondamenti di Informatica T-1 modulo 2

Addendum alle chiamate di sistema per la gestione processi. E Mumolo

Struttura dei programmi e Variabili

Esercizio 1 Conta degli elementi distinti (file esercizio1.c e leggi.h/leggi.c - 15 punti)

Elementi di informatica. Programmare in C

I vettori in C. Vettori. Definizione di vettori in C. int dato[10] ; int. Numero di elementi. Tipo di dato base. Nome del vettore.

Fondamenti di Informatica L-A

Lezione XII.III Gestione dei file Un progetto completo

Informatica 1. Prova di recupero 21 Settembre 2001

Operazioni su file di caratteri

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 2A di Mercoledì 13 Gennaio 2010 tempo a disposizione 2h30'

Esercizi di programmazione in linguaggio C Ricerca

PROVA SCRITTA DEL MODULO DI

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

Politecnico di Milano - Dipartimento di Elettronica, informazione e Bioingegneria Prof. Mauro Negri

NOTA SULLA CORREZIONE: Per ottenere un esito positivo è necessario svolgere un elaborato sufficiente in entrambe le parti.

Introduzione al linguaggio C Primi programmi

1 (4) 2 (4) 3 (12) 4 (6) 5 (6)

File binari e file di testo

Preprocessore, linker e libreria standard

C: panoramica. Violetta Lonati

Laboratorio di Elementi di Architetture e Sistemi Operativi Soluzioni degli Esercizi del 9 Maggio 2012

Corso di Informatica 1 Esercitazione n. 4

Sistemi Operativi (M. Cesati)

#include <stdio.h> #include <stdlib.h> #define L 20 void Proc(char [], int); int N=L; main () { char *s; int i;

Struttura di un. Struttura dei programmi C

Esercizi di programmazione in linguaggio C English Dictionary

Il presente plico contiene 4 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola.

Corso di Fondamenti di Programmazione canale E-O. Strutture. Strutture. Definizione di strutture (2) Definizione di strutture (1)

Corso di Informatica 1 (IN110) Tutorato n. 3

array: vettori, matrici e stringhe

2 Operatori matematici e costrutto if

Cosa serve per cominciare?

Informatica (CIV) Esercitazione su FORTRAN. Andrea Romanoni

Università degli Studi di Bologna Scuola di Ingegneria

Fondamenti di Informatica T1 Prova Pratica - Luglio 2013 Compito

Transcript:

NOME COGNOME MATRICOLA S A/1 AAA-BARC BARD-BOUH BOUI-CART CARU-CONS CARU-CONS CONT-DEMAR DEMAS-FERRD FERRE-GIAQ GIAR-LAEZ LAFA-MANC MAND-MIQZ MIRA-PAHZ PAIA-PODD PODE-ROSSE ROSSF-SIQZ SIRA-TUCB TUCC-ZZZ Poli@Home 5 Crediti AAA-LIB/English LIC-ZZZ/English Altro:... DOMANDA 1 Dati i numeri interi n1 e n2, espressi in decimale, indicare la loro rappresentazione in binario naturale e specificare quanti bytes sono necessari per rappresentarli: n1= 392 n2= 56 Passaggi Risultato n1 (2) = bytes per n1 = n2 (2) = bytes per n2 = DOMANDA 2 Dire se le seguenti espressioni logiche sono equivalenti: ((A B ) (A+B ))+(B C ) = (A B )+(B C ) e giustificare la risposta Risposta DOMANDA 3 Spiegare in cosa consiste la fase di compilazione che avviene prima del linking di un programma. In particolare, spiegare quale tipo di file prende in input e quale tipo di file viene generato da un compilatore. Risposta

DOMANDA 4 (PROGRAMMAZIONE) Scrivere un programma in C per identificare la parola ripetuta più volte all'interno di un file di testo. A tal proposito si facciano le seguenti assunzioni: - Il nome del file viene specificato come primo argomento sulla linea di comando - Il numero di caratteri e di parole nel file non è noto al momento della compilazione - Il file contiene unicamente lettere maiuscole, spazi e caratteri di new-line. - Il file di testo è composto da più righe - Sono previste al massimo 5000 parole distinte - Ciascuna parola è composta al massimo da 20 lettere - Le parole sono separate da uno o più spazi - In caso le parole ripetute più volte all interno del testo siano più di una, stampare quella che compare prima nel testo - Viene altresì richiesto di stampare il numero di volte che tale parola compare nel testo Ad esempio, se il file fiaba.txt contiene il testo riportato di seguito: IL LUPO PENSA QUANTO QUELLA BAMBINETTA BELLA E MORBIDINA SIA PROPRIO UN BOCCONCINO PRELIBATO SAREBBE CERTO STATA ANCORA MEGLIO DELLA VECCHIA DECIDE DI MANGIARE SIA LA BAMBINETTA CHE LA VECCHIA C:\> esame fiaba.txt La parola contenuta più volte all interno del file fiaba.txt è: BAMBINETTA (2 ripetizioni)

#include <stdio.h> #include <stdlib.h> #include <string.h> /* AS 2015.06.22 - Turno A - Fila 3 */ /* Scrivere un programma in C per identificare la parola ripetuta più volte all'interno di un file di testo. A tal proposito si facciano le seguenti assunzioni: - Il nome del file viene specificato come primo argomento sulla linea di comando - Il numero di caratteri e di parole nel file non è noto al momento della compilazione - Il file contiene unicamente lettere maiuscole, spazi e caratteri di new-line. - Il file di testo è composto da più righe - Sono previste al massimo 5000 parole distinte - Ciascuna parola è composta al massimo da 20 lettere - Le parole sono separate da uno o più spazi - In caso le parole ripetute più volte all interno del testo siano più di una, stampare quella che compare prima nel testo - Viene altresì richiesto di stampare il numero di volte che tale parola compare nel testo Ad esempio, se il file fiaba.txt contiene il testo riportato di seguito: IL LUPO PENSA QUANTO QUELLA BAMBINETTA BELLA E MORBIDINA SIA PROPRIO UN BOCCONCINO PRELIBATO SAREBBE CERTO STATA ANCORA MEGLIO DELLA VECCHIA DECIDE DI MANGIARE SIA LA BAMBINETTA CHE LA VECCHIA C:\> esame fiaba.txt La parola contenuta più volte all interno del file fiaba.txt è: BAMBINETTA (2 ripetizioni) */ #define MAXLEN (20+1) #define N 5000 #define VERO 1 #define FALSO 0 int main(int argc, char *argv[]) { FILE *f; int frequenze[n]; int n; char parola[maxlen]; char dizionario[n][maxlen]; int i; int trovato, pos, max; if(argc!= 2) { printf("utilizzo: <nome_programma> <nome_file>\n"); if( (f = fopen(argv[1], "r")) == NULL) { printf("impossibile aprire il file %s.\n", argv[1]); for(i=0; i<n; i++) { frequenze[i] = 0; n = 0; while( fscanf(f, "%s", parola)!= EOF ) { /* ricerca parola in dizionario */ trovato = FALSO; for(i=0; i<n; i++) { if(strcmp(parola,dizionario[i])==0) { trovato = VERO; pos = i;

if(!trovato) { strcpy(dizionario[n], parola); pos = n; n++; frequenze[pos]++; fclose(f); max = -1; for(i=0;i<n;i++) { if(frequenze[i]>max) { max = frequenze[i]; pos = i; printf("la parola contenuta piu' volte all' interno del file %s e': %s (%d ripetizioni)\n", argv[1], dizionario[pos], frequenze[pos]); return 0;

NOME COGNOME MATRICOLA S A/2 AAA-BARC BARD-BOUH BOUI-CART CARU-CONS CARU-CONS CONT-DEMAR DEMAS-FERRD FERRE-GIAQ GIAR-LAEZ LAFA-MANC MAND-MIQZ MIRA-PAHZ PAIA-PODD PODE-ROSSE ROSSF-SIQZ SIRA-TUCB TUCC-ZZZ Poli@Home 5 Crediti AAA-LIB/English LIC-ZZZ/English Altro:... DOMANDA 1 Dati i numeri interi n1 e n2, espressi in decimale, indicare la loro rappresentazione in binario naturale e specificare quanti bytes sono necessari per rappresentarli: n1= 622 n2= 250 Passaggi Risultato n1 (2) = bytes per n1 = n2 (2) = bytes per n2 = DOMANDA 2 Dire se le seguenti espressioni logiche sono equivalenti: ((A B) + (A C)) + ((A C) + C) = 0 + B + C e giustificare la risposta. Risposta DOMANDA 3 Spiegare in cosa consiste la fase di linking di un programma. In particolare, spiegare quale tipo di file prende in input e quale tipo di file viene generato dal linker. Risposta

DOMANDA 4 (PROGRAMMAZIONE) Dati due file di testo contenenti sequenze di numeri interi, scrivere un programma in C per determinare quante volte la sequenza memorizzata nel primo file è contenuta nella seconda (stessi numeri consecutivi, quindi nello stesso ordine). Si stampino a video i numeri delle righe del secondo file in cui ha inizio la sequenza di interesse (si assuma la prima riga con indice 0) A tal proposito si facciano le seguenti assunzioni: - I nomi del primo e del secondo file vengono specificati in tale ordine come argomenti sulla linea di comando - Si assuma che la sequenza contenuta nel primo file sia sempre più corta di quella del secondo - I file contengono al massimo 00 valori - I valori sono specificati uno per riga Ad esempio, se il file seq1.txt contiene: ed il file seq2.txt contiene: 18 99 C:\> esame seq1.txt seq2.txt Match 1 a partire dalla riga 1 Match 2 a partire dalla riga 3 La sequenza 1 è contenuta 2 volte nella sequenza 2

#include <stdio.h> #include <stdlib.h> /* AS 2015.06.22 - Turno A - Fila 2 */ /* Dati due file di testo contenenti sequenze di numeri interi, scrivere un programma in C per determinare quante volte la sequenza memorizzata nel primo file è contenuta nella seconda (stessi numeri consecutivi, quindi nello stesso ordine). Si stampino a video i numeri delle righe del secondo file in cui ha inizio la sequenza di interesse (si assuma la prima riga con indice 0) A tal proposito si facciano le seguenti assunzioni: - I nomi del primo e del secondo file vengono specificati in tale ordine come argomenti sulla linea di comando - Si assuma che la sequenza contenuta nel primo file sia sempre più corta di quella del secondo - I file contengono al massimo 00 valori - I valori sono specificati uno per riga Ad esempio, se il file seq1.txt contiene: ed il file seq2.txt contiene: 18 99 C:\> esame seq1.txt seq2.txt Match 1 a partire dalla riga 1 Match 2 a partire dalla riga 3 La sequenza 1 è contenuta 2 volte nella sequenza 2 */ #define N 00 #define VERO 1 #define FALSO 0 int main(int argc, char *argv[]) { FILE *f; int seq1[n], seq2[n]; int nseq1, nseq2; int v; int i,j; int trovato; int contatore; if(argc!= 3) { printf("utilizzo: <nome_programma> <nome_file_1> <nome_file_2>\n"); if( (f = fopen(argv[1], "r")) == NULL) { printf("impossibile aprire il file %s.\n", argv[2]); i = 0; while( fscanf(f, "%d", &v)!= EOF ) { seq1[i] = v; i++; nseq1 = i;

fclose(f); if( (f = fopen(argv[2], "r")) == NULL) { printf("impossibile aprire il file %s.\n", argv[2]); i = 0; while( fscanf(f, "%d", &v)!= EOF ) { seq2[i] = v; i++; nseq2 = i; fclose(f); contatore = 0; for(i=0; i<nseq2; i++) { trovato = VERO; for(j=0; j<nseq1; j++) { if(seq2[i+j]!= seq1[j]) { trovato = FALSO; if(trovato) { contatore++; printf("match %d a partire dalla riga %d\n", contatore, i); printf("la sequenza 1 e' contenuta %d volte nella sequenza 2.\n", contatore); return 0;

NOME COGNOME MATRICOLA S A/3 AAA-BARC BARD-BOUH BOUI-CART CARU-CONS CARU-CONS CONT-DEMAR DEMAS-FERRD FERRE-GIAQ GIAR-LAEZ LAFA-MANC MAND-MIQZ MIRA-PAHZ PAIA-PODD PODE-ROSSE ROSSF-SIQZ SIRA-TUCB TUCC-ZZZ Poli@Home 5 Crediti AAA-LIB/English LIC-ZZZ/English Altro:... DOMANDA 1 Dati i numeri interi n1 e n2, espressi in decimale, indicare la loro rappresentazione in binario naturale e specificare quanti bytes sono necessari per rappresentarli: n1= 342 n2= 450 Risultato n1 (2) = bytes per n1 = n2 (2) = bytes per n2 = Passaggi DOMANDA 2 Dire se le seguenti espressioni logiche sono equivalenti: ((A B) + (A C)) + ((A C) + D) = 1 +B + C + D e giustificare la risposta Risposta DOMANDA 3 Spiegare le principali differenze tra file sorgente e file eseguibile. Risposta

DOMANDA 4 (PROGRAMMAZIONE) Dati due file contenenti sequenze di numeri interi, scrivere un programma in C per determinare se tutti i numeri del secondo file compaiono almeno una volta nel primo e stampare il numero di volte che ciascun numero compare nel primo file. A tal fine si facciano le seguenti assunzioni: - I nomi del primo e del secondo file vengono specificati in ordine come argomenti sulla linea di comando - Per entrambi i file, i valori sono specificati uno per riga - Tutti i valori sono compresi tra 0 e 0 - Non si conosce la dimensione del primo file - Il secondo file contiene al massimo 500 valori nessuno dei quali duplicato Ad esempio, se il file seq1.txt contiene: 52 ed il file seq2.txt contiene: 52 C:\> esame seq1.txt seq2.txt Tutti i numeri del secondo file compaiono, almeno una volta, nel primo file. Frequenze: : 2 volte : 2 volte 52: 2 volte

#include <stdio.h> #include <stdlib.h> /* AS 2015.06.22 - Turno A - Fila 3 */ /* Dati due file contenenti sequenze di numeri interi, scrivere un programma in C per determinare se tutti i numeri del secondo file compaiono almeno una volta nel primo e stampare il numero di volte che ciascun numero compare nel primo file. A tal fine si facciano le seguenti assunzioni: - I nomi del primo e del secondo file vengono specificati in ordine come argomenti sulla linea di comando - Per entrambi i file, i valori sono specificati uno per riga - Tutti i valori sono compresi tra 0 e 0 - Non si conosce la dimensione del primo file - Il secondo file contiene al massimo 500 valori nessuno dei quali duplicato Ad esempio, se il file seq1.txt contiene: 52 ed il file seq2.txt contiene: 52 C:\> esame seq1.txt seq2.txt Tutti i numeri del secondo file compaiono, almeno una volta, nel primo file. Frequenze: : 2 volte : 2 volte 52: 2 volte */ #define N 0 #define M 500 #define VERO 1 #define FALSO 0 int main(int argc, char *argv[]) { FILE *f; int frequenze[m], seq2[m]; int nseq2; int v; int i; int tutti; if(argc!= 3) { printf("utilizzo: <nome_programma> <nome_file_1> <nome_file_2>\n"); if( (f = fopen(argv[2], "r")) == NULL) { printf("impossibile aprire il file %s.\n", argv[2]); for(i=0; i<n; i++) { frequenze[i] = -1; /* Segno nel vettore frequenze i valori presenti in seq2 */

i = 0; while( fscanf(f, "%d", &v)!= EOF ) { // seq2[i] = v; frequenze[v] = 0; i++; nseq2 = i; fclose(f); if( (f = fopen(argv[1], "r")) == NULL) { printf("impossibile aprire il file %s.\n", argv[2]); while( fscanf(f, "%d", &v)!= EOF ) { frequenze[v]++; fclose(f); */ /* Il vettore frequenze e' inizializzato a -1 tranne per i valori di seq2 che sono inizializzati a 0. Se e' presente ancora qualche 0 significa che non e' stato mai trovato almeno un valore di seq2 tutti = VERO; for(i=0; i<n; i++) { if(frequenze[i] == 0) { tutti = FALSO; if(tutti) { printf("tutti i numeri del secondo file compaiono, almeno una volta, nel primo file.\n"); printf("frequenze:\n"); for(i=0; i<n; i++) { if(frequenze[i] > 0) { printf("%d: %d volte\n", i, frequenze[i]); else { printf("non tutti i numeri del secondo file compaiono, almeno una volta, nel primo file.\n"); return 0;