You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Feb 24, 2019. It is now read-only.
I den här uppgiften kommer du att skriva en klass Calendar som:
internt håller en lista med händelser (såsom julafton, födelsedag) kopplade
till datum
har en defaultkonstruktor som sätter aktuellt datum till nuvarande datum.
kan tilldelas en annan kalender (som kan vara instansierad med en annan
datumtyp)
har en metod bool set_date(int år, månad, dag) som sätter om aktuellt
datum. Om parametrara bildar ett ogiltigt datum ska false returneras.
har metoden bool add_event som kan ta en till fyra parametrar: händelse
(string) och parametrarna dag, månad, år (int). Om någon av de senare
parametrarna saknas så används aktuellt datum. Om datumet är ogiltigt ska false returneras. Om händelsen (strängen) redan finns i kalendern på det
angivna datumet ska false returneras och ingenting nytt läggas in.
remove_event med samma parametrar som add_event. Om det inte går
att ta bort händelsen returneras false.
Använd STL för att hantera dina händelser. Använd std::string till strängarna
som representerar händelser. En dålig lösning är att ha datum och händelse i
två parallella vektorer med gemensamt index. Varför? Förklara dig vid redo-
visningstillfället.
Låt din kalenderklass vara en mallklass som tar en klass nedärvd från Date
som argument. När du använder datum ska du endast använda dig av funktioner som
ligger i basklassen Date. På så sätt håller du kalenderklassen
datumoberoende. Några exempel på hur din klass ska bete sig:
std::cout << "----------------------------------------" << std::endl;
Calendar<Gregorian> cal;
cal.set_date(2000, 12, 2);
cal.add_event("Basketträning", 4, 12, 2000);
cal.add_event("Basketträning", 11, 12, 2000);
cal.add_event("Nyårsfrukost", 1, 1, 2001);
cal.add_event("Första advent", 1); // år = 2000, månad = 12
cal.add_event("Vårdagjämning", 20, 3); // år = 2000
cal.add_event("Julafton", 24, 12);
cal.add_event("Kalle Anka hälsar god jul", 24); // också på julafton
cal.add_event("Julafton", 24); // En likadan händelse samma datum ska
// ignoreras och inte sättas in i kalendern
cal.add_event("Min första cykel", 20, 12, 2000);
cal.remove_event("Basketträning", 4);
std::cout << cal; // OBS! Vårdagjämning och första advent är
// före nuvarande datum och skrivs inte ut
std::cout << "----------------------------------------" << std::endl;
cal.remove_event("Vårdagjämning", 20, 3, 2000);
cal.remove_event("Kalle Anka hälsar god jul", 24, 12, 2000);
cal.set_date(2000, 11, 2);
if (! cal.remove_event("Julafton", 24)) {
std::cout << " cal.remove_event(\"Julafton\", 24) tar inte"<< std::endl
<< " bort något eftersom aktuell månad är november" << std::endl;
}
std::cout << "----------------------------------------" << std::endl;
std::cout << cal;
Man ska kunna skriva ut kalendern m.hj.a utskriftsoperatorn. Enbart händelser
efter(!) aktuellt datum ska skrivas ut. Kalenderns händelser ska vara sorterade
i första hand på datum och i andra hand på insättningsordning. Formatet ska
vara på formen datum : händelse med efterföljande retur, se nedan. OBS!
nollor framför ental (enligt Date) samt mellanslag före och efter kolon
----------------------------------------
2000-12-11 : Basketträning
2000-12-20 : Min första cykel
2000-12-24 : Julafton
2000-12-24 : Kalle Anka hälsar god jul
2001-01-01 : Nyårsfrukost
----------------------------------------
cal.remove_event("Julafton", 24) tar inte
bort något eftersom aktuell månad är november
----------------------------------------
2000-12-01 : Första advent
2000-12-11 : Basketträning
2000-12-20 : Min första cykel
2000-12-24 : Julafton
2001-01-01 : Nyårsfrukost
Testa din kod innan du skickar in den. Endast inskickad och testad kod kan
redovisas. Redovisningen sker vid schemalagda labbtillfällen. Om redovisningen
går bra och källkoden skickades in innan bonusdatum (står på labkvittot) får du
två bonuspoäng. Det är mycket vanligt att man får komplettera sin labb innan
den blir godkänd. Se för din egen skull till att få en underskrift på
labbkvittot av handledaren oavsett om labben ska kompletteras eller inte.
The text was updated successfully, but these errors were encountered:
#2.3 (polymorfi, pekare till basklass, strömmar)
I den här uppgiften kommer du att skriva en klass
Calendar
som:till datum
datumtyp)
bool set_date(int år, månad, dag)
som sätter om aktuelltdatum. Om parametrara bildar ett ogiltigt datum ska false returneras.
bool add_event
som kan ta en till fyra parametrar: händelse(
string
) och parametrarna dag, månad, år (int
). Om någon av de senareparametrarna saknas så används aktuellt datum. Om datumet är ogiltigt ska
false
returneras. Om händelsen (strängen) redan finns i kalendern på detangivna datumet ska
false
returneras och ingenting nytt läggas in.remove_event
med samma parametrar somadd_event
. Om det inte gåratt ta bort händelsen returneras
false
.Använd STL för att hantera dina händelser. Använd
std::string
till strängarnasom representerar händelser. En dålig lösning är att ha datum och händelse i
två parallella vektorer med gemensamt index. Varför? Förklara dig vid redo-
visningstillfället.
Låt din kalenderklass vara en mallklass som tar en klass nedärvd från
Date
som argument. När du använder datum ska du endast använda dig av funktioner som
ligger i basklassen
Date
. På så sätt håller du kalenderklassendatumoberoende. Några exempel på hur din klass ska bete sig:
Man ska kunna skriva ut kalendern m.hj.a utskriftsoperatorn. Enbart händelser
efter(!) aktuellt datum ska skrivas ut. Kalenderns händelser ska vara sorterade
i första hand på datum och i andra hand på insättningsordning. Formatet ska
vara på formen
datum : händelse
med efterföljande retur, se nedan. OBS!nollor framför ental (enligt
Date
) samt mellanslag före och efter kolonTesta din kod innan du skickar in den. Endast inskickad och testad kod kan
redovisas. Redovisningen sker vid schemalagda labbtillfällen. Om redovisningen
går bra och källkoden skickades in innan bonusdatum (står på labkvittot) får du
två bonuspoäng. Det är mycket vanligt att man får komplettera sin labb innan
den blir godkänd. Se för din egen skull till att få en underskrift på
labbkvittot av handledaren oavsett om labben ska kompletteras eller inte.
The text was updated successfully, but these errors were encountered: