12.07.2015 Views

Esercizi di programmazione in C

Esercizi di programmazione in C

Esercizi di programmazione in C

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

INFORMATICA PER LA I FACOLTÀEsercitazione <strong>in</strong> aula del 14/04/2010http://www.cad.polito.it/staff/grosso/Informatica<strong>Esercizi</strong>o 1)Data la seguente serie matematica detta serie geometrica, convergente per |x| < 1 al valore riportato, kx k 0 1scrivere un programma <strong>in</strong> l<strong>in</strong>guaggio C che acquisisca da tastiera un valore <strong>di</strong> N, dove lasommatoria deve essere troncata, e calcoli la <strong>di</strong>stanza della sommatoria calcolata dal risultato esattodella serie.1 x<strong>Esercizi</strong>o 2)Scrivere un programma <strong>in</strong> l<strong>in</strong>guaggio C che, acquisito da tastiera un vettore <strong>di</strong> 10 numeri, neruoti circolarmente il contenuto (verso destra o verso s<strong>in</strong>istra) <strong>di</strong> M posizioni e visualizzi laconfigurazione f<strong>in</strong>ale. Il verso della rotazione ed il valore <strong>di</strong> M sono richiesti come <strong>in</strong>put.Esempio:Vettore <strong>in</strong>iziale: 1 2 3 4 5 6 7 8 9 10Verso <strong>di</strong> rotazione? (1 = s<strong>in</strong>istra, 2 = destra) => 1Numero <strong>di</strong> shift => 2Vettore f<strong>in</strong>ale (ruotato a s<strong>in</strong>istra <strong>di</strong> 2 posizioni):3 4 5 6 7 8 9 10 1 2<strong>Esercizi</strong>o 4)Scrivere un programma <strong>in</strong> l<strong>in</strong>guaggio C che, acquisita da tastiera una tabella (<strong>di</strong>mensione 3 x 3)<strong>di</strong> <strong>in</strong>teri, ne metta <strong>in</strong> or<strong>di</strong>ne crescente i valori contenuti (a partire dall’elemento <strong>in</strong> alto a s<strong>in</strong>istra)utilizzando l’algoritmo bubble sort.


<strong>Esercizi</strong>o 5)Si consideri il seguente problema <strong>di</strong> matematica ricreativa, dovuto al matematico russo BorisKordemsky:Il gatto Purrer ha deciso <strong>di</strong> schiacciare un pisol<strong>in</strong>o, e subito sogna <strong>di</strong> essere circondantoda 13 topol<strong>in</strong>i, 12 grigi e uno bianco; nel sogno il padrone gli <strong>di</strong>ce: “Purrer, devi mangiareogni tre<strong>di</strong>cesimo topo, contando circolarmente sempre nella stessa <strong>di</strong>rezione; l'ultimo topomangiato deve essere quello bianco”. Da quale topo deve com<strong>in</strong>ciare Purrer?Realizzare un programma <strong>in</strong> C che, fornito <strong>in</strong> <strong>in</strong>gresso la posizione del topo bianco come <strong>in</strong>terocompreso tra 0 e 12, fornisca la sequenza dei topi mangiati <strong>in</strong> modo che l'ultimo sia quello bianco.Per sequenza dei topi s'<strong>in</strong>tende quella delle loro posizioni <strong>in</strong>iziali.


Soluzioni:<strong>Esercizi</strong>o 1)#<strong>in</strong>clude <strong>in</strong>t ma<strong>in</strong> (void){<strong>in</strong>t k, N;double x, y, r, z;double delta;pr<strong>in</strong>tf("Introdurre il valore <strong>di</strong> x : ");scanf("%lg", &x);if (x1)pr<strong>in</strong>tf("Serie non convergente.\n");else{pr<strong>in</strong>tf("Introdurre il valore <strong>di</strong> N : ");scanf ("%d", &N);r = 1/ (1 - (double) x);pr<strong>in</strong>tf("Il risultato esatto e' %.10f\n", r);z = 1; /* elemento della sommatoria <strong>di</strong> <strong>in</strong><strong>di</strong>ce 0 */y = 1;for (k = 1; k


<strong>Esercizi</strong>o 2)#<strong>in</strong>clude #def<strong>in</strong>e NUMDATI 10<strong>in</strong>t ma<strong>in</strong>(void){<strong>in</strong>t vettore[NUMDATI];<strong>in</strong>t i, j; /* contatori */<strong>in</strong>t verso; /* 1 = s<strong>in</strong>istra, 2 = destra */<strong>in</strong>t num; /* numero <strong>di</strong> shift da eseguire */<strong>in</strong>t temp; /* variabile temporanea *//* Lettura dati */pr<strong>in</strong>tf("\nVettore <strong>in</strong>iziale => ");for (i=0; i


<strong>Esercizi</strong>o 4)#<strong>in</strong>clude #def<strong>in</strong>e RIGHE 3#def<strong>in</strong>e COLONNE 3#def<strong>in</strong>e TRUE 1#def<strong>in</strong>e FALSE 0<strong>in</strong>t ma<strong>in</strong>(void){<strong>in</strong>t matrice[RIGHE][COLONNE];<strong>in</strong>t mo<strong>di</strong>ficato = TRUE;<strong>in</strong>t i, j;<strong>in</strong>t temp;/* acquizizione dati */for (i=0; i


* stampa risultati */pr<strong>in</strong>tf("Tabella or<strong>di</strong>nata:\n");for (i=0; i


* soluzione del problema *//* ciclo ipotesi su posizione <strong>di</strong> partenza *//* quando mangiati == NUMTOPI la soluzione è stata trovata */for (<strong>in</strong>iz = 0; mangiati != NUMTOPI; <strong>in</strong>iz ++){for (i=0; i

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!