Prima prova parziale di programmazione 1

5 febbraio 2010

(Tempo disponibile: 2 ore)

Esercizio 1

(16 punti)

Si scriva un programma Somme.c che definisce una funzione

void somme(int arr[], int length)

la quale modifica i primi length dell’array arr in modo che

  • ogni elemento in posizione pari diventi uguale alla somma di quelli in posizione pari dell’array originario dall’inizio fino ad esso;
  • ogni elemento in posizione dispari diventi uguale alla somma di quelli in posizione dispari dell’array originario fino ad esso.

Tale programma dovà contenere anche un main() che definisce (#define) una costante SIZE pari a 10, crea un array arr di interi lungo SIZE, legge da tastiera i SIZE elementi di arr, chiama somme() facendola operare su tutto arr e infine stampa gli elementi di arr.

Una possibile esecuzione potrebbe essere:

elemento #0: 2
elemento #1: 5
elemento #2: 12
elemento #3: -3
elemento #4: 4
elemento #5: 5
elemento #6: 11
elemento #7: 7
elemento #8: -1
elemento #9: 4
2 5 14 2 18 7 29 14 28 18

Esercizio 2

(16 punti)

Si scriva un programma Vocali.c che definisce due funzioni:

  • La prima si chiama vocali e ha un unico argomento, di tipo stringa. Essa ha come effetto di sostituire le vocali (minuscole o maiuscole) in tale argomento con i caratteri dei numeri corrispondenti. Questo significa che la a e la A diventano un 1, la e e la E diventano un 2, la i e la I diventano un 3, la o e la O diventano un 4 e la u e la U diventano un 5. Tutti gli altri caratteri rimangono immutati. Questa funzione deve restituire la quantità di vocali che sono state trasformate in cifre;
  • la seconda si chiama somma e ha un unico parametro, di tipo stringa. Essa calcola la somma delle cifre (cioè i caratteri da 0 a 9) presenti nella stringa e la restituisce come risultato.

Si definiscano gli argomenti come const, quando possibile.

Infine tale programma deve avere anche un main() che legge una stringa dall’utente, di massimo 100 caratteri, la stampa identica, chiama vocali(), modificando in questo modo la stringa, e stampa la quantità di vocali che sono state trasformate in cifre, stampa la stringa così modificata, chiama somma() per fare la somma delle cifre nella stringa modificata e infine stampa tale somma.

Per empio una possibile esecuzione del programma potrebbe essere:

Inserisci la frase: chTIPOdiSTUDENTE6?
Ho trasformato 7 vocali
La frase adesso e': ch2T3P4d3ST5D2NT26?
la somma delle cifre fa 27

Soluzioni:

Ovviamente, come per ogni programma ci sono varie soluzioni, ecco le mie, testate e funzionanti:

Somme.c
#include <stdio.h>
#define SIZE 10

void somme(int arr[], int length);

int main(void) {
int i, arr[SIZE];

for(i=0; i<SIZE; i++){
printf("Elemento #%d: ", i);
scanf("%d", &arr[i]);
}

somme(arr, SIZE);

for(i=0; i<SIZE; i++){
printf("%d ", arr[i]);
}
printf("\n");

return 0;
}

void somme(int arr[], int length){
int i;
for(i=2; i<length; i++)
arr[i] += arr[i-2];
}
Vocali.c
#include <stdio.h>

int vocali(char arr[]);
int somma(const char arr[]);

int main(void) {
char arr[100];
printf("Inserisci la frase: ");
scanf("%s", arr);
printf("Hai inserito: %s\n", arr);
printf("Ho trasformato %d vocali\n", vocali(arr));
printf("La frase adesso è %s\n", arr);
printf("La somma delle cifre fa %d\n", somma(arr));

return 0;
}

int vocali(char arr[]){
int i, contatore=0;
for(i=0; arr[i]; i++){
switch(arr[i]){
case 'a':
case 'A':
arr[i]='1';
contatore++;
break;
case 'e':
case 'E':
arr[i]='2';
contatore++;
break;
case 'i':
case 'I':
arr[i]='3';
contatore++;
break;
case 'o':
case 'O':
arr[i]='4';
contatore++;
break;
case 'u':
case 'U':
arr[i]='5';
contatore++;
break;
}
}
return contatore;
}
int somma(const char arr[]){
int i, somma=0;
for(i=0; arr[i]; i++)

if(arr[i]>'0' && arr[i]<='9')
somma += arr[i]-48;
return somma;
}

Band Hero

Tra non molto farà capolino anche Band Hero tra i miei giochi per il wii, proprio accanto alla serie guitar hero.

Cos’ha di particolare questa edizione “Band” di Hero?! Brani un pò più commerciali

Già mi immagino gli amici ballare YMCA, cantare Bring Me To Life… AAAAHHHH fuggite sciocchi!!!

Ecco la lista dei brani:

  • The Airborne Toxic Event – “Gasoline”
  • Big Country – “In a Big Country”
  • The Bravery – “Believe”
  • Cold War Kids – “Hang Me Up To Dry”
  • Counting Crows – “Angels of the Silences”
  • Dashboard Confessional – “Hands Down”
  • David Bowie – “Let’s Dance”
  • Devo – “Whip It”
  • Evanescence – “Bring Me To Life”
  • Fall Out Boy – “Sugar, We’re Goin’ Down”
  • The Go-Go’s – “Our Lips Are Sealed”
  • Hilary Duff – “So Yesterday”
  • Jesse McCartney – “Beautiful Soul”
  • The Kooks – “Naive”
  • Marvin Gaye – “I Heard It Through The Grapevine”
  • Mighty Mighty Bosstones – “Impression That I Get”
  • OK Go – “A Million Ways”
  • Pat Benatar – “Love Is A Battlefield”
  • Robbie Williams and Kylie Minogue – “Kids”
  • Styx – “Mr. Roboto”
  • Yellowcard – “Ocean Avenue”
  • The All-American Rejects – “Dirty Little Secret”
  • Alphabeat – “Fascination”
  • Aly and AJ – “Like Whoa”
  • Carl Douglas – “Kung Fu Fighting”
  • Cheap Trick – “I Want You To Want Me” (Live)
  • Don McLean – “American Pie”
  • Duran Duran – “Rio”
  • Jackson 5 – “ABC”
  • Janet Jackson – “Black Cat”
  • Katrina and The Waves – “Walking On Sunshine”
  • Lily Allen – “Take What You Take”
  • Maroon 5 – “She Will Be Loved”
  • No Doubt – “Just A Girl”
  • Roy Orbison – “Oh Pretty Woman”
  • Snow Patrol – “Take Back the City”
  • Taylor Swift – “Love Story”
  • Taylor Swift – “Picture to Burn”
  • Taylor Swift – “You Belong With Me”
  • Tonic – “If You Could Only See”
  • Village People – “YMCA”

Stumble! me baby

Oggi ho riscoperto un vecchio servizio che usavo alcuni anni fa.

StumbleUpon

Vi starete chiedendo cosa fa… In pratica vi farà scoprire cose nuove del web, in base ai vostri gusti.

Nel dettaglio basta iscriversi, indicando le aree di interesse, installare la toolbar per firefox o internet explorer e poi cliccare sul pulsante Stumble!

Nulla di più semplice, si aprirà un sito a caso (in base alle aree di interesse), e noi avremo a disposizione i pulsanti “I like it!” e mano in giù. Così facendo “Voteremo” la pagina che ci è stata proposta, così riceveremo più pagine di nostro interesse.

Buon stumble a tutti!

14 mesi, una vita

In un certo senso il 14 è sempre stato il mio numero preferito, così tirando le somme dell’ultimo anno, visto che si avvicina capodanno (per il natale ci sarà un post dedicato), mi sono accorto di come sia cambiata la mia vita negli ultimi 14 mesi.

Giusto 14 mesi fa mi sono licenziato dal supermercato, alla volta di un lavoro fantastico, un sogno, un mese e mezzo. Poi la crisi, disoccupato per 3 mesi e una montagna di curriculum. Ho pensato di arruolarmi come volontario, tutte le carte in regola, fatti i test, il giorno prima di consegnare l’incartamento al centro documentale di Verona, una lettera, un colloquio… due… assunto.

3 mesi di tranquillità (o quasi) un paio di viaggetti… La spezia, Milano, Torino… 3 mesi a Napoli, comandavo io. Poi alla vista di altri 6 mesi a Napoli solo soletto, altro giro di ruota, una settimana da incubo, una vita che non faceva per me.

Una… Due… Tre settimane a casa, poi è scattata la molla, si comincia l’università. Informatica, che altro sennò!

Ora mi trovo qui… un po più malinconico, ma un po più consapevole che la vita è completamente imprevedibile. Questo un po mi spaventa, ma sapendo che in questi 14 mesi mi sono innamorato e conosciuto persone fantastiche, è questo che mi fa aspettare impaziente il prossimo anno.

Perciò 2010 sappi che qualunque cosa mi darai, bella o brutta, io ti risponderò allo stesso modo, alcuni dicono che al peggio non c’è mai fine, forse  hanno ragione, ma il ricordo di quello che già mi ha dato il 2009 lo porterò sempre nel cuore, a fianco dei bei ricordi.

bud natale a tutti!

Ciao a tutti e buon natale! Mi prendo in anticipo e visto che è tutto oggi che corro come un matto alla circa di un barattolo di Nutella da 5kg (introvabile a Vicenza…) così tra pacchi e pacchetti…

In più per stare in tema, come potete vedere… nevica! Abbene sì anche nel blog del bud…

Pacchetti …e per chi non crede nella nascita del bambin Gesù e storie annesse e connesse… Buone vacanze!

PS. Per chi si chiede com’è andata a finire la storia del barattolo di Nutella da 5Kg

NutellaAmmetto che lì per lì non avevo idea di come impacchettarla, però nonostante non sia un grande degustatore di Nutella, è vagamente sexy… Le nipoti faranno un infarto…

La classifica

Il decimo fu liquidato.

Destino simile ebbe il nono, dimenticato.

Provò l’ottavo a farsi luce, fece rumore, ma fu lo spazio di un mattino, di poche ore.

Eppure il settimo contava poco.

Il sesto raccoglieva briciole, seguiva il gioco.

Ma per trovare chi davvero si è distinto, bisogna risalire almeno fino al quinto.

Il quarto bruciava d’odio, per la vergogna di restare fuori dal podio.

Il terzo merita rispetto ed io lo stimo.

Ma salutatemi il secondo.

Perché conta solo il primo.

20091215 EliminaMinimiLocali.c

#include stdio.h
#define SIZE 15

int main(void){
  int arr[SIZE], i;  

  for(i=0; i

Attenzione: er la corretta compilazione lanciare quindi il comando:

cc EliminaMinimiLocali.c

20091215 ArrayFibonacci.c

#include stdio.h

int main(void){
  int i, arr[16]={1, 1};

  for(i=2; i<16; i++)
    arr[i]=arr[i-1]+arr[i-2];

  for(i=0; i<16; i++)
    printf("%d\t", arr[i]);

  printf("\n");

  return 0;
}

Attenzione: er la corretta compilazione lanciare quindi il comando:

cc ArrayFibonacci.c

20091215 ArrayFattoriale.c

#include stdio.h

int main(void){
  int i;
  long arr[16]={1};

  for(i=1; i<16; i++)
    arr[i]=arr[i-1]*i;

  for(i=0; i<16; i++)
    printf("%d! = %ld\n", i, arr[i]);

  return 0;
}

Attenzione: Per la corretta compilazione lanciare quindi il comando:

cc ArrayFattoriale.c

Attenzione: I numeri alti potrebbero differire a causa di un noto problema dei parametri del compilatore (nella linghezza delle variabili). Compilando il programma su una piattaforma a 64bit infatti i numeri risultano corretti.
a scopo didattico possiamo lasciare il programma così com'è.

20091215 ArrayPotenze.c

#include stdio.h
#include


int main(void){
  int arr[16], i;

  for(i=0; i<16; i++)
    arr[i]=(pow(2, i));

  for(i=0; i<16; i++)
    printf("%d ", arr[i]);

  printf("\n");

  return 0;
}

Attenzione: Per la compilazione di questo codice è necessario linkare la libreria math.h, per la corretta compilazione lanciare quindi il comando:

cc ArrayPotenze.c -lm
Cerca
Che tu possa avere il vento in poppa, che il sole ti risplenda in viso, e che il vento del destino ti porti in alto a danzare con le stelle.

Tutte e frasi

Upload rapido
IPfilter.dat

Aggiornato il: 07/02/10
alle ore: 7:54

network connection
Cose da bud

The Ubuntu Counter Project - user number # 26874

Use OpenDNS