Università degli Studi Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica

Documenti analoghi
Università degli Studi Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica

Corso di Informatica 1 (IN110) Tutorato n. 10

Corso di Informatica 1 (IN1) Tutorato n. 11

Corso di Informatica 1 Esercitazione n. 7

Prima prova di esonero 2 novembre 2015

Esercizi su liste e grafi

Corso di Informatica 1 (IN110) Tutorato n. 3

Prima prova di esonero 5 novembre 2007

Calcolatori Elettronici Lezione 2 8/10/2012. Emiliano Casalicchio

Corso di Informatica 1 (IN110) Tutorato n. 4

Corso di O)mizzazione Combinatoria (IN440) - Prof. Marco Liverani a.a. 2013/2014. Libreria grafi.c

Corso di Informatica 1 Esercitazione n. 2

Corso di Informatica 1 Esercitazione n. 4

Esercizi d esame. Raccolta di esercizi degli esami del corso di Informatica Generale 1. Marco Liverani

Esercizi d esame. Raccolta di esercizi degli esami del corso di Informatica Generale 1. Marco Liverani

(*lista == NULL (*lista)->info >= elem) accede al campo next di *lista solo se *lista non e' NULL. */ #include <stdio.h> #include <stdlib.

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

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 T1. Lab 04 Array. Lab06 1

Esercizio 1 Soluzione

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

Esercitazione 7. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

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

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 05 Array. Lab06 1

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

Linguaggio C: Array Valeria Cardellini

Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica (ICA-LC) [083668]

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

/* programma per costruire una partizione del grafo in foreste disgiunte */ #include <stdio.h> #include <stdlib.h>

Sistemi operativi A, Unix+C, 26/09/2017. Nome: Cognome: Matricola:

Esercitazione 6. Corso di Fondamenti di Informatica

Strutture dati dinamiche in C (II)

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

Fondamenti di Informatica: Ingegneria Meccanica Prova scritta del 12 luglio 2008

Esercizio 1 - Soluzione (array)

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

Algoritmi e Strutture di Dati A.A Esempio di prova scritta del 19 gennaio 2018 D.M CFU Libri e appunti chiusi Tempo = 2:00h

Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica B [079904]

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

Il linguaggio C Strutture

STRUCT - ESERCIZIO 1

Laboratorio di Algoritmi e Strutture Dati

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

Lezione di Laboratorio di Prgrammazione: /03/2019 a.a. 2018/2019 R.Prevete

Elementi di Informatica e Programmazione Allievi Ingegneria Informatica, Elettronica e delle Telecomunicazioni, Automazione Industriale

Introduzione al C. Esercitazione 6. Raffaele Nicolussi. Corso di Fondamenti di Informatica Ingegneria Clinica

Opinione calcolamedia( ) Opinione inverti( )

Fondamenti di Informatica T-1 modulo 2

Laboratorio di Programmazione

Università degli Studi di Verona. Esercizi. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie

Esercizio 1 - cicli. Esercizio 1 cicli - Soluzione

Esercizi (esercizi 1, 2, 3 e 4) Totale /6 /12 /6 /6 /30

Cognome Domanda Nome Punteggio max

Introduzione ai Grafi: Implementazione e operazioni di base

Tipi di dato strutturati: Array

Tipi di dato strutturati: Array

Programmazione I - Laboratorio

while Istruzione while Cicli ed iterazioni Istruzioni di ripetizione in C Comportamento del while

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

Prova Scritta del 20/09/10

ESERCIZIO: SHIFT ARRAY (1)

Fondamenti di Informatica: Ingegneria Meccanica Prova scritta del 11 aprile 2008

Politecnico di Milano - Facoltà di Ingegneria INFORMATICA A - Corso per allievi GESTIONALI - Prof. C. SILVANO A. A. 2001/ febbraio 2004

Programmazione I (Classe 1)

Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 8 Esercitazione: 11 gennaio 2006 Esercizi su strutture dinamiche

PARTE

Esercitazione 6. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR. Domenico Daniele Bloisi

NOTA: I codici proposti sono solo una delle possibile soluzioni, non sono da intendersi come unica soluzione possibile o corretta

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

Programmazione I - Laboratorio

Progetti su più File Array e Funzioni

Lab 09 Gestione file di testo

Fondamenti di Informatica 1 - Compito A

Esercizio 1: calcolo insieme intersezione

FONDAMENTI DI INFORMATICA

Lab 04 Istruzioni, cicli e array"

Esercitazione 2. Corso di Fondamenti di Informatica

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

Il linguaggio C Strutture

Politecnico di Milano Facoltà di Ingegneria Milano Leonardo A.A. 2007/08

INFORMATICA ED ELEMENTI DI INFORMATICA MEDICA. MODULO DI INFORMATICA Prof. Stefano Gaburri e Prof. Gianluca Palermo. Prova del 28 Giugno 2010

Informatica A. Istruzioni

Programmazione ricorsiva: cenni

Esercizio 1 (15 punti)

PROGRAMMAZIONE: ESERCITAZIONE N. 9

Esercizio 1: media di numeri reali (uso funzioni e struct)

Esercizio 1 (14 punti)

Esercizio 1. Esercizio 1 - Soluzione

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

Corso di Informatica

Prova in itinere del 20 Novembre 2013 RIGA COLONNA MATRICOLA

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

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

Esercizio 1. Esercizio 1 Soluzione

Esercitazione 6. Array

Appunti senza pretese di P2+Lab: Pensare ricorsivamente, programmare iterativamente, parte II: Implementazione iterativa di Mergesort

Transcript:

Università degli Studi Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Corso di Informatica 1 (IN110) Prof. Marco Liverani a.a. 201/201 Esame scritto del 11 Settembre 201 (Appello X) Si richiede di risolvere entrambi gli esercizi riportando una codifica in linguaggio C completa dei due programmi. Nel caso in cui non si riesca a completare entrambi gli esercizi si suggerisce di riportare almeno la codifica in C delle funzioni principali o una loro pseudo-codifica. È possibile consultare libri e appunti personali, ma non scambiare libri o appunti con altri studenti. I compiti che presenteranno evidenti ed anomale similitudini saranno annullati. La prova scritta ha una durata di tre ore, durante le quali non è consentito allontanarsi dall aula, se non dopo aver consegnato il compito. Si richiede di riportare sul foglio del compito il proprio nominativo completo ed il numero di matricola o un codice identificativo personale equivalente. Esercizio n. 1 Leggere in input le liste di adiacenza di un grafo non orientato G = (V, E), con n vertici. Stampare le liste di adiacenza di G. Letto in input un intero k > 0 e un vertice v V (G) stampare tutti i vertici u V (G) che hanno in comune con v almeno k vertici adiacenti. Esempio Si consideri il grafo G = (V, E) rappresentato in figura. Sia v = e k = 2; i vertici che hanno almeno due vertici in comune con il vertice v = sono u = 2 e u =. G = (V, E) 1 2 0 3 Soluzione 1 #include <stdlib.h> 2 #include <stdio.h> 3 #define MAX 100 struct nodo { 6 int info; 7 struct nodo *next; 8 }; 9 10 struct nodo *leggilista(void) { 11 struct nodo *p, *primo=null; 12 int n, i; 13 printf("numero di elementi: "); 1 scanf("%d", &n); 1

1 printf("inserisci %d interi: ", n); 16 for (i=0; i<n; i++) { 17 p = malloc(sizeof(struct nodo)); 18 scanf("%d", &p->info); 19 p->next = primo; 20 primo = p; 21 } 22 return(primo); 23 } 2 2 int leggigrafo(struct nodo *G[]) { 26 int i, n; 27 printf("numero di vertici: "); 28 scanf("%d", &n); 29 for (i=0; i<n; i++) { 30 printf("lista di adiacenza di %d.\n", i); 31 G[i] = leggilista(); 32 } 33 return(n); 3 } 3 36 void stampalista(struct nodo *p) { 37 while (p!= NULL) { 38 printf("%d --> ", p->info); 39 p = p->next; 0 } 1 printf("null\n"); 2 return; 3 } void stampagrafo(struct nodo *G[], int n) { 6 int i; 7 for (i=0; i<n; i++) { 8 printf("%d: ", i); 9 stampalista(g[i]); 0 } 1 return; 2 } 3 int adiacente(int x, struct nodo *p) { int r; 6 while (p!= NULL && p->info!= x) 7 p = p->next; 8 if (p!= NULL) 9 r = 1; 60 else 61 r = 0; 62 return(r); 63 } 2

6 6 int main(void) { 66 struct nodo *G[MAX], *p; 67 int n, k, u, v, cont; 68 n = leggigrafo(g); 69 stampagrafo(g, n); 70 printf("inserisci un intero k>0 e un vertice v del grafo: "); 71 scanf("%d %d", &k, &v); 72 printf("vertici con almeno %d adiacenti in comune con %d: ", k, v); 73 for (u=0; u<n; u++) { 7 if (u!= v) { 7 cont = 0; 76 p = G[u]; 77 while (p!=null && cont<k) { 78 if (adiacente(p->info, G[v])) 79 cont++; 80 p = p->next; 81 } 82 if (cont==k) 83 printf("%d ", u); 8 } 8 } 86 printf("\n"); 87 return(0); 88 } 3

Esercizio n. 2 Letti in input due interi n, k > 0, generare due matrici quadrate di ordine n, A e B, di numeri interi casuali compresi tra 0 e k (estremi inclusi); la matrice A dovrà essere costituita di soli numeri pari e la matrice B di soli numeri dispari. Stampare le matrici A e B. Costruire un vettore C di n numeri interi in cui l elemento generico c h (0 h < n) è dato dal prodotto tra il minimo elemento della colonna h di A e il massimo elemento della riga h di B. Esempio Sia n = e k = 20; consideriamo le seguenti matrici: A = 6 8 8 12 10 0 16 16 2 10 16 18 1 1 10 B = 17 1 11 13 11 3 19 3 17 1 1 11 9 13 3 Il vettore C di n = elementi è quindi il seguente: C = (3, 0, 136, 2). Soluzione 1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <time.h> #define MAX 100 6 void generamatricepari(int X[MAX][MAX], int n, int k) { 7 int i, j; 8 for (i=0; i<n; i++) 9 for (j=0; j<n; j++) 10 X[i][j] = (rand()%(k/2 + 1)) * 2; 11 return; 12 } 13 1 void generamatricedispari(int X[MAX][MAX], int n, int k) { 1 int i, j; 16 for (i=0; i<n; i++) 17 for (j=0; j<n; j++) 18 X[i][j] = (rand()%(k/2 + k%2)) * 2 + 1; 19 return; 20 } 21 22 void stampamatrice(int X[MAX][MAX], int n) { 23 int i, j; 2 for (i=0; i<n; i++) { 2 for (j=0; j<n; j++) 26 printf("%2d ", X[i][j]); 27 printf("\n"); 28 } 29 printf("\n"); 30 return; 31 }

32 33 int min(int X[MAX][MAX], int n, int h) { 3 int i, m; 3 m = X[0][h]; 36 for (i=1; i<n; i++) 37 if (X[i][h] < m) 38 m = X[i][h]; 39 return(m); 0 } 1 2 int max(int X[MAX][MAX], int n, int h) { 3 int i, m; m = X[h][0]; for (i=1; i<n; i++) 6 if (X[h][i] > m) 7 m = X[h][i]; 8 return(m); 9 } 0 1 void costruiscivettore(int A[MAX][MAX],int B[MAX][MAX],int C[MAX],int n) { 2 int h; 3 for (h=0; h<n; h++) C[h] = min(a, n, h) * max(b, n, h); return; 6 } 7 8 void stampavettore(int X[], int n) { 9 int i; 60 for (i=0; i<n; i++) 61 printf("%2d ", X[i]); 62 printf("\n"); 63 return; 6 } 6 66 int main(void) { 67 int A[MAX][MAX], B[MAX][MAX], C[MAX], n, k; 68 printf("ordine delle matrici quadrate: "); 69 scanf("%d", &n); 70 printf("soglia dei numeri casuali: "); 71 scanf("%d", &k); 72 srand((unsigned)time(null)); 73 generamatricepari(a, n, k); 7 generamatricedispari(b, n, k); 7 stampamatrice(a, n); 76 stampamatrice(b, n); 77 costruiscivettore(a, B, C, n); 78 stampavettore(c, n); 79 return(0); 80 }