Fondamenti di Informatica I

Corso di Laurea in Ingegneria Informatica e Automatica - Corso di Laurea in Ingegneria dei Sistemi Informatici

HomePage | Avvisi | Informatica Automatica | Sistemi Informatici | Programma | Materiale didattico | Esercitazioni | Esami | Anni Precedenti | Login
090607b

Scrivere un metodo List<Integer> merge(Iterator<Integer> a, Iterator<Integer> b) che, dati due iteratori di interi ordinati, ne fonde gli elementi creando una lista ordinata contenente tutti gli elementi degli iteratori di ingresso. La soluzione del problema deve essere ricorsiva, eventualmente usando metodi privati ausiliari, senza usare alcuna istruzione di ciclo.

Ad esempio, se a=<2,3,5,5,6> e b=<1,3,4>, la lista prodotta deve essere <1,2,3,3,4,5,5,6>.

Scrivere un programma di prova per verificare la correttezza del metodo scritto.

[ Soluzione ]


090609d

Scrivere un metodo List<Object> concatenaFiltrando(Iterator<Object> a, Iterator<Object> b, Class c) che, dati due iteratori a e b e una classe c, restituisce una nuova lista ottenuta prendendo prima tutti gli elementi di a di tipo c e poi tutti gli elementi di b di tipo c. La soluzione del problema deve essere ricorsiva, eventualmente usando metodi privati ausiliari, senza usare alcuna istruzione di ciclo.

Ad esempio, se a=<"6",6,3,"1",5,9,"3",5,6>, b=<4,"9",3,4> e c=Integer.class, la lista prodotta deve essere <6,3,5,9,5,6,4,3,4>.

Scrivere un programma di prova per verificare la correttezza del metodo scritto.

090609e

Scrivere un metodo boolean uguali(Iterator<Object> a , Iterator<Object> b, Iterator<Object> c) che restituisce true se le sequenze rappresentate dai tre iteratori sono uguali, e false altrimenti. La soluzione del problema deve essere ricorsiva, eventualmente usando metodi privati ausiliari, senza usare alcuna istruzione di ciclo.

Scrivere un programma di prova per verificare la correttezza del metodo scritto.

090609g

Scrivere un metodo Nodo converti(Iterator i) che restituisce una SCL con tutti gli elementi di i (null se i non contiene elementi). La soluzione del problema deve essere ricorsiva, eventualmente usando metodi privati ausiliari, senza usare alcuna istruzione di ciclo.

Scrivere un programma di prova per verificare la correttezza del metodo scritto.

090609h

Scrivere un metodo Nodo convertiRovesciato(Iterator i) che restituisce una SCL con tutti gli elementi di i in ordine rovesciato (null se i non contiene elementi). La soluzione del problema deve essere ricorsiva, eventualmente usando metodi privati ausiliari, senza usare alcuna istruzione di ciclo.

Scrivere un programma di prova per verificare la correttezza del metodo scritto.

090609j

Scrivere un metodo Object[] converti(Iterator i) che restituisce un array con tutti gli elementi di i (un array con zero elementi se i non contiene elementi). La soluzione del problema deve essere ricorsiva, senza fare uso di liste di appoggio e senza usare alcuna istruzione di ciclo.

Scrivere un programma di prova per verificare la correttezza del metodo scritto.

090710a (suggerito da Agilulfo)

Scrivere un metodo statico boolean componibile(List<Character> l, String s) che, data una lista di caratteri alfabetici (che contempla anche il carattere jolly '*') ed una stringa, restituisce true se la stringa può essere composta usando i caratteri della lista, e false altrimenti. La soluzione deve essere ricorsiva, usando eventualmente metodi privati ausiliari, senza istruzioni di ciclo.

Scrivere la soluzione in modo da poter compilare ed eseguire il seguente programma di prova senza doverlo modificare:

import java.util.*;

class ProvaScarabeo {
    public static void main(String[] args) {
   
        List<Character> l1 = new ArrayList<Character>();
        l1.add('B'); l1.add('L'); l1.add('O'); l1.add('B'); l1.add('*'); l1.add('A'); l1.add('M');   // B L O B * A M
       
        List<Character> l2 = new ArrayList<Character>();
        l2.add('*'); l2.add('F'); l2.add('*'); l2.add('A'); l2.add('A'); l2.add('L'); l2.add('F'); l2.add('L');    // * F * A A L F L
       
        System.out.println(Scarabeo.componibile(l1,"bambola") + "[true]");
        System.out.println(Scarabeo.componibile(l1,"bolla") + "[true]");
        System.out.println(Scarabeo.componibile(l1,"ambra") + "[false]");
       
        System.out.println(Scarabeo.componibile(l2,"affanno") + "[false]");
        System.out.println(Scarabeo.componibile(l2,"farfalla") + "[true]");
        System.out.println(Scarabeo.componibile(l2,"affare") + "[true]");
       
    }
}


Topic di riferimento sul forum.

090714a

Scrivere un metodo statico boolean verifica(Iterator<String> i, String s, int k) che, dato un iteratore i su una lista di stringhe, una stringa s, e un intero non negativo k, restituisce true se s appare fra le ultime k stringhe di i, e false altrimenti. Ad esempio, dato un iteratore i sulla lista ["uno", "due", "tre", "quattro", "cinque", "sei"], la stringa s="cinque" e k=3, il metodo deve restituire true perché le ultime k=3 stringhe della lista sono ["quattro", "cinque", "sei"] e contengono "cinque".

La soluzione deve essere ricorsiva, eventualmente usando metodi privati ausiliari, senza usare istruzioni di ciclo.

Scrivere un programma di prova per verificare la correttezza del metodo scritto.

Minigara di programmazione: soluzioni e test
Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.3
Page was generated in 0.2219 seconds