From 554b59e1f4b7a59509ac1e16aeb2db818d79f650 Mon Sep 17 00:00:00 2001 From: christian Date: Mon, 13 Jan 2020 13:31:38 +0100 Subject: [PATCH] add ipi10 --- ws2019/ipi/uebungen/ipi10.pdf | Bin 0 -> 29610 bytes ws2019/ipi/uebungen/ipi10.tex | 110 ++++++++++++++++++++++++++++++ ws2019/ipi/uebungen/readfiles.cpp | 39 +++++++++++ ws2019/ipi/uebungen/virtuals.cpp | 57 ++++++++++++++++ 4 files changed, 206 insertions(+) create mode 100644 ws2019/ipi/uebungen/ipi10.pdf create mode 100644 ws2019/ipi/uebungen/ipi10.tex create mode 100644 ws2019/ipi/uebungen/readfiles.cpp create mode 100644 ws2019/ipi/uebungen/virtuals.cpp diff --git a/ws2019/ipi/uebungen/ipi10.pdf b/ws2019/ipi/uebungen/ipi10.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e73482f3efb2fe3a7bd0e19f42e4994833617044 GIT binary patch literal 29610 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 +class A +{ + public: + int ap; + void X(); + private: + int aq; + void aX(); +}; + +class B : public A +{ + public: + int bp; + void Y(); + private: + int bq; + void bY(); +}; + +class C : public B +{ + public: + int cp; + void Z(); + private: + int cq; + void cZ(); +}; + +void A::X() { }; +void A::aX() { }; +void B::bY() { }; +void C::Z() { }; + +void B::Y() +{ + bq = bp; + aq = ap; // Fehler: A::aq ist privat, also in B nicht sichtbar + bY(); +} + +void C::cZ() +{ + ap = 1; + bp = 2; + cq = 3; + X(); + Y(); + aX(); // Fehler: A::aX() ist privat, also in C nicht sichtbar +} + +int main() +{ + A a; B b; C c; + + a.X(); + b.bY(); // Fehler: B::bY() ist privat, also hier nicht sichtbar + c.cp = 4; + c.bp = 1; + c.ap = 2; + c.aq = 5; // Fehler: A::aq ist privat, in C nicht sichtbar und erst recht nicht hier + + b.ap = c.ap; + + return 0; +} + \end{lstlisting} +\end{aufgabe} + +\end{document} diff --git a/ws2019/ipi/uebungen/readfiles.cpp b/ws2019/ipi/uebungen/readfiles.cpp new file mode 100644 index 0000000..a3a3be1 --- /dev/null +++ b/ws2019/ipi/uebungen/readfiles.cpp @@ -0,0 +1,39 @@ +#include +#include +#include + +using namespace std; + +int main(int argc, char* argv[]) { + // check if correct argument count + if (argc < 2) { + printf("Dateiname erwartet\n"); + return 1; + } + + // get filename from argument list + string filename = argv[1]; + // open input file + ifstream fileIn; + fileIn.open(filename + ".txt"); + // open output file + ofstream fileOut; + fileOut.open(filename + "-a.txt"); + // check if we could open the files + if (!fileIn.good() || !fileOut.good()) { + // could not open files + cout << "Konnte Datei " + filename + ".txt nicht lesen" << endl; + return 1; + } + string input; // variable containing line + int lineNo = 1; // count lines + while(getline(fileIn, input)) { // while there is still a line left + // write out line with prepended line number to output file + fileOut << to_string(lineNo) + ": " + input << endl; + // increment line counter + lineNo += 1; + } + // close files + fileIn.close(); + fileOut.close(); +} diff --git a/ws2019/ipi/uebungen/virtuals.cpp b/ws2019/ipi/uebungen/virtuals.cpp new file mode 100644 index 0000000..ca2d8c4 --- /dev/null +++ b/ws2019/ipi/uebungen/virtuals.cpp @@ -0,0 +1,57 @@ +class A { + public: + void a() { }; + virtual void va() = 0; + virtual void a(int n); + private: + void c() { }; +}; + +class B : public A { + public: + void b() { }; + virtual void vb(); + void a(double d) { }; + void a(int i) { }; + virtual void va(); +}; + +class C : public B { + public: + virtual void c(); + void a(float) { }; + virtual void a(); + virtual void va(); +}; + +int main() { + // A a; A abstrakte Klasse + B b; + C c; + A* pa=&b; + B* pb=&c; + float x = 1.2; + pa->a(); + pa->va(); + pa->a(1); + // pa->c(); A::c() private, hier nicht sichtbar + // pa->b(); pa ist vom Typ A* und kennt deswegen b() nicht + // pa->vb(); pa ist vom Typ A* und kennt deswegen vb() nicht + pa->a(x); + // pb->a(); pb ist vom Typ B*, hier ist A::a() überladen durch + // entweder B::a(double) bzw. B::a(int) nicht durch B::a() + pb->va(); + pb->a(1); + // pb->c(); A::c() private, deswegen hier nicht sichtbar + pb->b(); + pb->vb(); + pb->a(x); + pa = &c; + pa->a(); + pa->va(); + pa->a(1); + // pa->c(); A::c() private, hier nicht sichtbar + // pa->b(); pa ist vom Typ A*, kennt deswegen b() nicht + // pa->vb(); pa ist vom Typ A*, kennt deswegen vb() nicht + pa->a(x); +}