Strumenti Utente

Strumenti Sito


fisica:informatica:201718:esercitazioni:esercitazione4

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
fisica:informatica:201718:esercitazioni:esercitazione4 [22/01/2018 alle 09:25 (7 anni fa)] – [Esercizio 3: Filtrare un array] Susanna Pelagattifisica:informatica:201718:esercitazioni:esercitazione4 [30/01/2020 alle 13:33 (5 anni fa)] (versione attuale) – [Esercizio 2: Somma e prodotto di matrici] Alessio Conte
Linea 3: Linea 3:
 Dove si sviluppano semplici programmi C che utilizzano i costrutti di controllo e gli array e si comincia a parlare di tempo impiegato per risolvere un problema. Dove si sviluppano semplici programmi C che utilizzano i costrutti di controllo e gli array e si comincia a parlare di tempo impiegato per risolvere un problema.
  
-===== Esercizio 1: Massimo Comun Divisore con divisioni successive ====== +===== Esercizio 1: Filtrare un array ===== 
-Scrivere un programma C che  + 
-  * legge da standard input //x// ed //y// +Scrivere un programma C che legge da tastiera una array di 20 valori reali, trova la media e stampa sullo standard output solo i valori maggiori della media. 
-  * calcola MCD(x,y) utilizzando il metodo delle divisioni successive (pag 80 lucidi sui costrutti di controllo) + 
-  * stampa il risultato sullo standard output+===== Esercizio 2: Somma e prodotto di matrici ====== 
 +Scrivere un programma C costituito da un ''main()'' che legge da standard input due matrici quadrate 10 x 10 di reali, calcola somma e  prodotto e stampa i risultati sullo standard output. 
 + 
 +Dopo aver testato il programma inserendo numeri da tastiera (con matrici piccole, ad es, 2 x 2), possiamo testare il programma su matrici piu' grandi in questo modo: 
 + 
 +E' possibile scrivere le matrici (come quelle qui sotto) in un file di testo 'matrici.txt', e indirizzarlo nello standard input del programma scrivendo 
 + 
 +<code> 
 +./programma < matrici.txt 
 +</code> 
 + 
 +Questo vuol dire che il contenuto del file ''matrici.txt'' potra' essere letto come se fosse stato digitato da tastiera, i.e., potremo leggere i numeri uno ad uno tramite la funzione ''scanf("%d", &variabile)'' (gli spazi e gli a capo vengono ignorati in questo caso). 
 +Sara' quindi necessario utilizzare i numeri letti tramite la funzione ''scanf()'' per inizializzare le matrici. 
 + 
 +possibili matrici per il file matrici.txt: 
 +<code> 
 +1 2 3 4 5 6 7 8 9 0 
 +2 3 4 5 6 7 8 9 0 1 
 +3 4 5 6 7 8 9 0 1 2 
 +4 5 6 7 8 9 0 1 2 3 
 +5 6 7 8 9 0 1 2 3 4 
 +6 7 8 9 0 1 2 3 4 5 
 +7 8 9 0 1 2 3 4 5 6 
 +8 9 0 1 2 3 4 5 6 7 
 +9 0 1 2 3 4 5 6 7 8 
 +0 1 2 3 4 5 6 7 8 9  
 + 
 +1 0 0 0 0 0 0 0 0 0 
 +0 1 0 0 0 0 0 0 0 0 
 +0 0 1 0 0 0 0 0 0 0 
 +0 0 0 1 0 0 0 0 0 0 
 +0 0 0 0 1 0 0 0 0 0 
 +0 0 0 0 0 1 0 0 0 0 
 +0 0 0 0 0 0 1 0 0 0 
 +0 0 0 0 0 0 0 1 0 0 
 +0 0 0 0 0 0 0 0 1 0 
 +0 0 0 0 0 0 0 0 0 1 
 +</code> 
 +===== Esercizio 3: Massimo Comun Divisore  ====== 
 +(1) Scrivere un programma C che  
 +   * legge da standard input //x// ed //y// 
 +   * calcola MCD(x,y) utilizzando il metodo delle divisioni successive (pag 80 lucidi sui costrutti di controllo) 
 +   * stampa il risultato sullo standard output
    
-===== Esercizio 2: Massimo Comun Divisore con il metodo di Euclide con i resti ====== +(2Scrivere un programma C che  
-Scrivere un programma C che  +   * legge da standard input //x// ed //y// 
-  * legge da standard input //x// ed //y// +  *    calcola MCD(x,y) utilizzando il metodo delle divisioni successive (pag 94 e seguenti lucidi sui costrutti di controllo) 
-  * calcola MCD(x,y) utilizzando il metodo delle divisioni successive (pag 94 e seguenti lucidi sui costrutti di controllo) +  *    stampa il risultato sullo standard output
-  * stampa il risultato sullo standard output+
  
-Utilizzare il comando ''time'' per valutare il tempo impiegato per calcolare ''MCD(m,n)'' con ''m=10000000,n=9457831'' con l'algoritmo di Euclide e con l'algoritmo implementato nell'Esercizio 1+Utilizzare il comando ''time'' per valutare il tempo impiegato per calcolare ''MCD(m,n)'' con ''m=10000000,n=9457831'' con i due algoritmi
 Per evitare di misurare i tempi di attesa dell'input dallo schermo assegnare direttamente i valori alle variabili all'inizio del main e compilare.  Per evitare di misurare i tempi di attesa dell'input dallo schermo assegnare direttamente i valori alle variabili all'inizio del main e compilare. 
  
Linea 35: Linea 76:
  
  
-===== Esercizio 3: Filtrare un array ===== 
  
-Scrivere un programma C che legge da tastiera una array di 20 valori reali, trova la media e stampa sullo standard output solo i valori maggiori della media. 
  
 +===== Esercizio 4: MSS, Maximum Segment Sum =====
  
-===== Esercizio 5: Mandelbrot (Avanzato) ====== +Dato un array di interi positivi e negativi, il segmento di somma massima e' la porzione contigua dell'array in cui la somma deigli elementi ha valore piu' alto. 
-L'[[http://it.wikipedia.org/wiki/Insieme_di_Mandelbrot|insieme di Mandelbrot]]e' un insieme frattale definito come l'insieme dei numeri complessi //c// per i quali la successione definita da: +Ad esempio l'array  
-<code> +<code c
-z(0) = 0 +[2,-4,2,-1,6-3] 
-z(n+1) = z(n)^+ c+
 </code> </code>
-e' limitata, cioe' ''|z( n )|< 2'' per ogni ''n >=0''.  +ha come SSM il segmento [2,-1,6] di valore 7Si chiede di realizzare in programma C che legge dallo standard input N interi, li inserisce in un array lungo N, calcola il segmento di somma massima lo stampa sullo standard output
-Infatti al variare di ''c''la sequenza puo' tendere +N deve essere definito con una opportuna MACRO.
-all’infinito o rimanere confinata in un disco di raggio 2 del piano complesso centrato +
-nell’origine. +
- +
-L’algoritmo piu' semplice per visualizzare (una approssimazione de) l’insieme di Mandelbrot ´e l’//Escape Time Algorithm//. In questo algoritmo, dati ''A'' (l’area del piano complesso +
-da visualizzare) ed ''r'' (una precisione fissata) si effettuano i seguenti passi: +
-  - Si suddivide A in una griglia di punti a distanza uniforme (pixel)  +
-  - per ogni pixel (x, y)  +
-      - si calcolano r valori della sequenza con c=(x,y) +
-      - se dopo r iterazioni ''|z( r )|<= 2'' si considera c appartenente all'insieme e si assegna a c il colore NERO +
-  - altrimenti si assegna a c il colore j, che e' il minimo indice per cui ''| z(j) |>=2'' +
- +
- +
-Scrivere un programma C che calcola l'insieme di Mandelbrot per il rettangolo di estremi (-2,1) (1,-1) stampando sullo standard output i colori dei pixel suppenendo di dividere il rettangolo in 100x100 pixel.+
  
  
  
fisica/informatica/201718/esercitazioni/esercitazione4.1516613153.txt.gz · Ultima modifica: 22/01/2018 alle 09:25 (7 anni fa) da Susanna Pelagatti

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki