• kth.se
  • Studentwebben
  • Intranät
  • kth.se
  • Studentwebben
  • Intranät
Logga in
DD1388 VT18 (61021)
Komplettering för Junitentan
Hoppa över till innehåll
Översikt
  • Logga in
  • Översikt
  • Kalender
  • Inkorg
  • Historik
  • Hjälp
Stäng
  • Min översikt
  • DD1388 VT18 (61021)
  • Uppgifter
  • Komplettering för Junitentan
  • Startsida
  • Uppgifter
  • Sidor
  • Filer
  • Kursöversikt
  • Moduler
  • Samarbeten
  • Video Recording
  • Media Gallery
  • Course Evaluation

Komplettering för Junitentan

  • Inlämningsdatum Inget inlämningsdatum
  • Poäng 0
  • Lämnar in en textimatningsruta eller en filuppladdning

Många studenter klarade delar av tentan men inte hela och erbjuds nu möjlighet att komplettera. Kompletteringen sker online och det går bara att komplettera till godkänt. Om du vill ha högre betyg så behöver du ändå skriva omtentan i augusti.

 

Kompletteringen består av upp till 4 uppgifter

Uppgift 1
Rätta de första 5 uppgifterna på din tenta (inte betygshöjande uppgiften, även om du har gjort den) och kommentera alla fel och småfel som du hittar. Skriv varför det var fel och vad som är rätt. Den här behöver vara bra för att få godkänd komplettering. Bifoga din rättade tenta när du skickar in.


Uppgift 2
Om du har fått komplettering på uppgift 2 så behöver du lösa denna uppgift:

Om du kör den här koden...

#include <iostream>
using namespace std;

struct base {
    int all_your_base;
    base(): all_your_base(0) {}
    base(int rhs): all_your_base(rhs) {}
    void operator=(const base& rhs) {
        cout << "base::operator=" << endl;      
    }
};

struct derived: public base {
    int are_belong_to_us;
    derived(): base(1), are_belong_to_us(2) {}
};

int main() {
    base b;
    derived d;
    b = b;
    d = d;
    b = d;
    cout << b.all_your_base << endl;
    cout << d.all_your_base << endl;
    cout << d.are_belong_to_us << endl;
    return 0;
}

...så skriver den ut detta...

base::operator=
base::operator=
base::operator=
0
1
2

Förklara i detalj varför. Vilka metoder har anropats?

Uppgift 3
Om du har fått komplettering på uppgift 3 så behöver du lösa denna uppgift.
Denna C++-kod...

#include <iostream>
using namespace std;

struct base {
    virtual void whatever() {cout << "base::whatever" << endl;}
    void foo() {cout << "base::foo" << endl;}
};

struct derived: public base {
    void whatever() {cout << "derived::whatever" << endl;}
    virtual void foo() {cout << "derived::foo" << endl;}
};

int main() {
    base b;
    derived d;
    derived* d_ptr = new derived();
    base* b_ptr = d_ptr;
    b.whatever();
    b.foo();
    d.whatever();
    d.foo();
    b_ptr->whatever();
    b_ptr->foo();
    d_ptr->whatever();
    d_ptr->foo();
    delete d_ptr;
}

...kan kompileras och köras. Den skriver då ut:

base::whatever
base::foo
derived::whatever
derived::foo
derived::whatever
base::foo
derived::whatever
derived::foo

Förklara i detalj varför det blir dessa utskrifter.

Uppgift 4
Om du har fått komplettering på uppgift 5 så behöver du lösa denna uppgift.

 

Följande kod...

#include <iostream>
#include <vector>
using std::vector;
using std::cout;
using std::endl;

template<typename T, typename S> 
vector<S> in_between(T* start, T* end, const S & min, const S  & max) {
    vector<S> vec;
    for ( ; start != end; ++start) {
        if (min < *start && *start < max)
            vec.push_back(* start);
    }
    return vec;
}

int main() {
    double v1[] = {3.14, 2.72, 1.41, -1, 4};
    
    vector<double> res = in_between(v1, v1 + 3, 0.1, 3.0);
    for (auto x : res)
        cout << x << " ";
    cout << endl;
}

Skriver ut:

2.72 1.41

Frågor:
a) Vad är typparametrisering (generics)?

b) Vad är poängen med att typparametrisera S ? Ge exempel.

c) Vad är poängen med att typparametrisera T ? Ge exempel.

d) Finns det någon nackdel att använda T* istället för T ?

e) Skriv en klass KonstigKlass som kan skickas in som S. Programmet ska kompilera.

0
Inkludera en beskrivning
Ytterligare kommentarer:
Maxresultat för gradering till > poäng
Inkludera en bedömningstitel

Matris

Hitta matris
Inkludera en titel
Hitta en matris
Titel
Du har redan bedömt studenter med den här matrisen. Större ändringar kan påverka resultaten för deras uppgifter.
 
 
 
 
 
 
 
     
Det går inte att ändra en matris efter att du börjat använda den.  
Titel
Kriterier Bedömningar Poäng
Det här kriteriet är länkat till ett lärandemål Beskrivning av kriterium
tröskel: 5 poäng
Redigera beskrivning av kriterium Ta bort kriterium rad
5 till >0 poäng Full poäng blank
0 till >0 poäng Inga poäng blank_2
Det här området kommer användas av utvärderaren för kommentarer relaterade till det här kriteriet.
poäng
  / 5 poäng
--
Ytterligare kommentarer
Det här kriteriet är länkat till ett lärandemål Beskrivning av kriterium
tröskel: 5 poäng
Redigera beskrivning av kriterium Ta bort kriterium rad
5 till >0 poäng Full poäng blank
0 till >0 poäng Inga poäng blank_2
Det här området kommer användas av utvärderaren för kommentarer relaterade till det här kriteriet.
poäng
  / 5 poäng
--
Ytterligare kommentarer
Poängsumma: 5 av 5