Homework 1

La consegna del primo homework è fissata per il 15 aprile 2007. Per inviare il vostro compito, riempite l'apposito modulo. Potete sottomettere il compito attraverso il modulo quante volte volete prima della scadenza. Consegnate tutti gli esercizi in un unico file zip (o .tar.gz) contenente 4 file (uno per ogni esercizio, pi un file .h per le dichiarazioni):

  • esercizio1.c
  • esercizio2.c
  • esercizio3.c
  • homework1.h

Ciascun file contiene la funzione da implementare, eventuali sottoprocedure (es. caricamento della lista) e la funzione main. Non inserite altri file nello zip.

Esercizio 1 (ordinamento di una lista)

Scrivere una funzione che effettua l'ordinamento di una lista di interi. Il prototipo della funzione il seguente:

list *ordina(list *l);

La struttura dati per la lista la seguente:

typedef struct list
{
   int el;
   struct list *next;
} list;

Esercizio 2 (lista palindroma)

Una lista palindroma quando gli elementi della lista appaiono nello stesso ordine sia se si legge la lista dal primo all'ultimo elemento, sia se la si legge dall'ultimo al primo. Scrivere una funzione ricorsiva che determina se una lista palindroma (restituendo 1 in tal caso, 0 altrimenti). Non utilizzare le pile. Il prototipo della funzione il seguente:

int palindroma(list *l1);

Esercizio 3 (stringa bipalindroma)

Una stringa di lunghezza n bipalindroma se palindroma e se la sottostringa dalla posizione 0 alla posizione n/2 e la sottostringa dalla posizione n/2+1 alla posizione n-1 sono anch'esse palindrome. Ad esempio, “abbaabba” bipalindroma, mentre “anna” non lo . Scrivere una funzione che determina se una stringa palindroma (restituendo 1 in tal caso, 0 altrimenti). Il prototipo della funzione il seguente:

int bipalindroma(char *s);

Ulteriori Istruzioni

Per i primi due esercizi, scrivere anche la funzione main che carichi le liste da file. Il nome del file viene passato al main come primo parametro (in altre parole, si trova in argv[1]). Ad esempio per chiamare il file eseguibile ottenuto dalla compilazione di esercizio1.c potremmo eseguire:

./esercizio1 mio_file.txt

Il file in input alla funzione main ha il seguente formato: su ogni riga viene specificato un valore intero. Ad esempio, il seguente file:

1
5
4
7

codifica la lista [ 1, 5, 4, 7 ]. Supponendo che il file da leggere in input sia

<file_in_input>
il main - al termine dell'esecuzione della funzione sulla lista - scrive sul file
<file_in_input>.out
il risultato (crea, cio, un file con lo stesso nome di quello in input ed estensione aggiuntiva .out). Il risultato del primo esercizio viene scritto con lo stesso formato del file in input (il primo elemento della lista sulla prima riga, il secondo sulla seconda, ecc.). I risultati del secondo e del terzo esercizio vengono invece stampati a video.

Per il terzo esercizio, invece, scrivere la funzione main che carica da file stringhe di testo (una su ogni riga), applica a ciascuna di esse la funzione bipalindroma e stampa a video il risultato. Ad esempio, dato il seguente file:

abbaabba
abraabra
anna

il vostro programma emette tre soli caratteri (uno a fianco all'altro):

100

-- RobertoNavigli - 06 Apr 2007


This topic: Programmazione2eo > WebHome > PrimoHomework
Topic revision: r3 - 2007-04-10 - RobertoNavigli
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2022 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback