Anda di halaman 1dari 2

Nombre:

___________________________________
DNI: ___________________________________

Se quieren guardar las notas correspondientes a tres exmenes de los alumnos de una clase de la forma siguiente:

N=( (UO11111, (7.5, 6.3, 7.5) ), (UO22222, (4.1, 2.0, 5.2) ), . , (UO99999, (8.6, 8.6, 10.0) ) )

Se pide:
A. Cmo se llama el tipo de dato que se necesita? Explicar brevemente.

Multidiccionario: Las claves son los uos de los alumnos y los valores con colecciones de notas, que se pueden
repetir. Est ordenado por la clave.


B. public class Notas {
//rea de datos -> proponer una
TreeMap<String, LinkedList<Float> > data;

}
C. Representar grficamente el rea de datos elegida para el ejemplo del principio (suponer que hay slo
tres alumnos: UO11111, UO22222 y UO99999).
Me vale cualquier cosa similar a esto:

UO22222

UO11111

UO11111

UO99999

UO22222

UO9999

D. Implementar el mtodo siguiente de la clase Notas:


float NotaMedia(String alumno){

if (data.containsKey(alumno)){
LinkedList<Float> lista=data.get(alumno);
Float suma=0.0;




for (Float nota:lista){



suma=suma+nota;



}






return suma/lista.size();
}
else
return 0.0;
}

TAMBIEN VALE:
Iterator<Float> itr=lista.iterator();
while (itr.hasNext()){

suma=suma+itr.next();
}

E. Completar el programa principal de manera que imprima por pantalla la nota media de la clase.
public static void main(String[] args) {
Notas n=new Notas();

Set<String> alumnos=n.ObtenerAlumnos();

float suma=0.0;

for (String alumno:alumnos){
//Tambien vale usando un iterador


float mediaAlumno=n.NotaMedia(alumno);


suma=suma+mediaAlumno;

//podra comprobarse si hay alumnos o no, pero me vale igual

media=suma/alumnos.size();

System.out.println("Media de la clase: +media);
}

ANEXO
public interface Set<E> extends Collection<E>
{
// Basic operations
int size();
boolean isEmpty();
boolean contains(Object element);
boolean add(E element);
boolean remove(Object element);
Iterator<E> iterator();
// Bulk operations
boolean containsAll(Collection<?> c);
boolean addAll(Collection<? extends E> c);
boolean removeAll(Collection<?> c);
boolean retainAll(Collection<?> c);
void clear
// Array Operations
Object[] toArray();
<T> T[] toArray(T[] a);
}

public interface Map<K,V> {


V put(K key, V value);
V get(Object key);
V remove(Object key);
boolean containsKey(Object key);
boolean containsValue(Object value);
int size();
boolean isEmpty();
void putAll(Map<? extends K,
? extends V> m);
void clear();
public Set<K> keySet();
public Collection<V> values();
public Set<Map.Entry<K,V>> entrySet();
public interface Entry {
K getKey();
V getValue();
V setValue(V value);
}
}

public interface List<E> extends Collection<E>


{
boolean add(E e);
void add(int index, E element);
boolean addAll(Collection<? extends E> c);
void clear();
boolean contains(Object o);
E get(int index);
boolean isEmpty();
Iterator<E> iterator();
ListIterator<E> listIterator();
E remove(int index);
boolean remove(Object o);
int size();

public class Notas {


//area de datos
Notas();
Notas(Notas n);
Boolean ExisteAlumno(String
alumno);
boolean InsertaNota(String alumno,
float nota);
boolean BorraNotas(String alumno);
float NotaMedia(String alumno);
//retorna el cjto de alumnos
Set<String> ObtenerAlumnos();

Anda mungkin juga menyukai