Salut, in java va rog,
Trebuie să implementezi o clasă Planificator care conține o singură metodă, planifica(). Metoda primește ca parametru o listă de obiecte de tip Meeting, implementate anterior și modifică lista astfel încât ea să conțină doar meeting-urile care pot fi planificate într-un singur meeting room, astfel încât ele să nu se suprapună, sortate crescător în funcție de data de început. Soluția găsită trebuie să conțină un număr maxim de meeting-uri.
În cazul in care există mai multe soluții cu număr maxim de meeting-uri, să se găsească soluția care are șirul format din datele de sfârșit ale meeting-urilor cel mai mic lexicografic. În caz de egalitate între datele de sfârșit, se cere meeting-ul cu data de început cea mai mică.
Două meetinguri cu date de început în ordine crescătoare se suprapun dacă data de început al celui de-al doilea este mai mică sau egală decât data de sfârșit al primului.
Semnătură metodă:
public static void planifica(List meetinguri)
Atenție
Nu mai e nevoie să implementezi clasa Meeting, ea va fi inclusă automat în codul trimis de tine și va fi definită în felul următor:
class Meeting implements Comparable {
private Calendar inceput, sfarsit;
public Meeting(Calendar inceput, Calendar sfarsit) {
if (inceput.compareTo(sfarsit) > 0) }
throw new IllegalArgumentException("Date invalide");
}
this.inceput = inceput;
this.sfarsit = sfarsit;
}
public Calendar getInceput() {
return inceput;
}
public Calendar getSfarsit() {
return sfarsit;
}
public int compareTo(Meeting m) {
return this.inceput.compareTo(m.getInceput());
}
public String toString() {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
return sdf.format(inceput.getTime()) + " -> " + sdf.format(sfarsit.getTime());
}
}
Codul tău trebuie să conțină doar definiția clasei Planificator și ale unor eventuale clase ajutătoare.
Exemplu
import java.text.*;
import java.util.*;
class Meeting implements Comparable {
private Calendar inceput, sfarsit;
public Meeting(Calendar inceput, Calendar sfarsit) {
if (inceput.compareTo(sfarsit) > 0) {
throw new IllegalArgumentException("Date invalide");
}
this.inceput = inceput;
this.sfarsit = sfarsit;
}
public Calendar getInceput() {
return inceput;
}
public Calendar getSfarsit() {
return sfarsit;
}
public int compareTo(Meeting m) {
return this.inceput.compareTo(m.getInceput());
}
public String toString() {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
return sdf.format(inceput.getTime()) + " -> " + sdf.format(sfarsit.getTime());
}
}
// clasele tale aici
public class prog {
public static void main(String[] args) throws Exception {
try {
List l = new ArrayList<>();
l.add(new Meeting(new GregorianCalendar(1, 2, 3),
new GregorianCalendar(2, 2, 3)));
l.add(new Meeting(new GregorianCalendar(1, 2, 3),
new GregorianCalendar(5, 2, 3)));
l.add(new Meeting(new GregorianCalendar(3, 2, 3),
new GregorianCalendar(5, 2, 3)));
Planificator.planifica(l);
System.out.println(l); // [03/03/0001 12:00:00 -> 03/03/0002 12:00:00, 03/03/0003 12:00:00 -> 03/03/0005 12:00:00]
} catch (IllegalArgumentException e) {
System.out.print(e.getMessage());
}
}
}
Vă mulțumim că ați ales să vizitați site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, vă rugăm să ne contactați. Revenirea dumneavoastră ne va bucura, iar pentru acces rapid, nu uitați să ne salvați la favorite!