APPUNTI SUL LINGUAGGIO C Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Esercizi su Liste
Esercizio L’informazione genetica codificata nel DNA è codificata nella sequenza di basi: A = adenina, G = guanina, C = citosina, T = timinia Per convenzione sequenze di DNA sono rappresentate come liste di caratteri ‘A’,‘G’, ‘C’, ‘T’ Si vogliono analizzare sequenze di questo tipo, contenenti solo i caratteri ‘A’, ‘G’, ‘C’, ‘T’.
Generazione di numeri casuali In c la libreria <stdlib.h> esiste la funzione int rand() che restituisce un numero intero casuale compreso tra 0 e la costante RAND_MAX (di solito di valore 32767)
Costruire le seguenti funzioni Funzione void DNAGen(plist* L, int DIM) che generi una sequenza casuale di DNA con DIM caratteri. p.s. si ricordi che i caratteri ammessi sono A, G, C e T
Costruire le seguenti funzioni Funzione int TestDNA(plist L) che data una sequenza di caratteri (lista) verifica se questa sia una sequenza di DNA p.s. si ricordi che i caratteri ammessi sono A, G, C e T
Costruire le seguenti funzioni Funzione void deleteDNA(plist* L, char c) elimina tutte le occorrenze di c, e stampa la sequenza risultante E.g. se sequenza {‘G’, ‘A’, ‘A’, ‘T’} e bisogna cancellare ‘A’ allora stampa GT.
Costruire le seguenti funzioni Funzione int confrontaDNA(plist L1, plist L2, int t) che verifica se due sequenze di DNA (anche di lunghezza differente) siano t-allineati E.g. L1: ‘G’, ‘A’, ‘A’, ‘T’. L2: ‘G’, ‘C’, ‘A’, ‘T’, ‘C’. Se t >=2 allora sono t-allineati, altrimenti no p.s. esiste la funzione int abs(int a) che restituisce il valore assoluto di a
Costruire le seguenti funzioni Funzione void commonDNA(plist L1, plist L2, plist* L3) che calcola in L3 la sequenza costituita dai caratteri (in ordine) in comune tra le due sequenze di DNA (anche di lunghezza differente) E.g. L1: ‘G’, ‘A’, ‘A’, ‘T’. L2: ‘G’, ‘C’, ‘A’, ‘T’, ‘C’. L3: ‘G’, ‘A’, ‘T’
Costruire le seguenti funzioni Funzione void invertDNA(plist L, char C1, char C2) che inverte nella sequenza di DNA data tutti i caratteri C1 con i caratteri C2 E.g. L: ‘G’, ‘A’, ‘A’, ‘T’. e C1 = A e C2 = T L: ‘G’, ‘T’, ‘T’, ‘A’.
Costruire le seguenti funzioni Funzione int MatchDNA(plist L1, plist L2) che verifica se due sequenze di DNA matchano. allineate due sequenze: Devono avere la stessa lunghezza Se due caratteri allineati sono diversi allora: G su A (e viceversa), T su C (e viceversa) E.g. L: ‘G’, ‘A’, ‘C’, ‘T’, ‘T’ L: ‘A’, ‘G’, ‘T’, ‘C’, ‘T’
Costruire le seguenti funzioni Funzione int WindowDNA(plist L1, plist L2) che verifica se due sequenze di DNA sono a “specchio”, quindi una è l’altra letta da destra a sinistra. E.g. L: ‘G’, ‘A’, ‘C’, ‘T’, ‘T’ L: ‘T’, ‘T’, ‘C’, ‘A’, ‘G’
Costruire le seguenti funzioni Funzione int PalindromeDNA(plist L) che verifica se una sequenza di DNA è Palindroma E.g. L: ‘G’, ‘A’, ‘A’, ‘G’
APPUNTI SUL LINGUAGGIO C Corso di Algoritmi e strutture Dati APPUNTI SUL LINGUAGGIO C Esercizi su Liste FINE