|
Version:
|
Musterlösung |
Aufgabe 1 |
|
Um Ein-Ausgaberoutinen verwenden zu können, sind einfache Einträge in der cpp-Datei vorzunehmen.
Welche sind dies?
#include <conio.h> // getch() #include <iostream.h> // cin cout
Aufgabe 2 |
|
Aus welchem Grund müssen in c/c++ Variablen deklariert werden?
Aufgabe 3 |
|
Worin besteht der Unterschied zwischen der Definition und Deklaration von Variablen?
Anhand eines einfachen Beispiels erläutern!
int susi; // Deklaration, es wird Speicher für eine Integervariable reserviert, // Speicher ist über den Bezeichner susi ansprechbar, // Achtung in susi kann noch ein beliebiger Wert stehen! susi = 17; // Definition, susi wird der Wert 17 zugewiesen, geschiet dies zum ersten mal nach der Deklaration // spricht man auch von Initialisierung von susi mit dem Wert 17 int otto = 18; // Deklaration und Initialisierung von otto mit 18
Aufgabe 4 |
|
Wie ist der Aufbau und die Wirkungsweise einer Do-While-Schleife?
Zeigen Sie den wesentlichen Unterschied zu While-Schleife anhand eines Quellcodebeispiels!
do Anweisungen while (Bedingung); Wobei Anweisungen eine einzelne Anweisung oder ein Block von Anweisungen sein kann. Fußgesteuerte Schleife,
solange Bedingung erfüllt ist werden die Anweisungen erneut ausgeführt, d.h im Gegensatz zur While-Schleife mindestens ein mal!
int i = 100; do{ // tue erst mal cout << i << " "; i++; }while (i<10); // solange i < 10 springe wieder zu do // Ausgabe 100 i=101
![]() |
Beschreibung des ProjektsDie Statistik eines Webauftritts soll ausgewertet und als Balkendiagramm graphisch dargestellt werden. Im Theorie-Teil soll die Ausgabe auf der Konsole geschehen, im Praxis-Teil soll eine "stats.html" Seite generiert werden. Die Main-Funktion (hier immer mal wieder nachschauen wie die Funkionen verwendet werden): void main() { cout << "WebSite-Statistiken v1.0 von Oliver Mezger\n\n"; hits_ausgeben(); cout<<"\n Hits gesammt: "<<prozente_berechnen()<<"\n\n"; cout<<"\n Gesammt: "<<prozente_ausgeben() << "% \n\n"; balken_ausgeben(); getch(); } |
||
Die Daten liegen in folgender Form vor:
const SITES = 5; // Anzahl der Seiten string names[SITES] = {"Bananas","Apples","Funk'n","Deep Blue","Fluids"}; int hits[SITES]= {240,34,487,154,85}; // Zugriffe auf die Seiten int prozente[SITES]; // In Prozent umgerechnete Zugriffe (noch zu berechnen) |
Aufgabe 5 (name_ausgeben) |
|
Analysieren Sie folgende Funktion (Beschreibung (2 Punkte)), erstellen Sie ein Struktogramm (6 Punkte)!
string name_ausgeben(string s){ // Was tut diese Funktion? while (s.length() < 10) s=s+'.'; // s.length gibt die Laenge von s zurueck return s + ": "; }
Welche Rückgabe ist bei dem Aufrufen name_ausgeben("Hugo") (2 Punkte) und name_ausgeben("Tante Erna geht schwimmen") (2 Punkte) zu erwarten?
Funktion name_ausgeben(s) (6 Punkte)
Eingabe: Parameter: s: String |
name_ausgeben(s) ergänzt den String s um '.' bis die Länge 10 erreicht ist, dann wird noch ein ':' angehängt und das Ergebnis zurückgegeben. Der String wird formatiert, unterschiedliche Längen sollen ausgeglichen werden. (2 Punkte)
name_ausgeben("Hugo") (2 Punkte) "Hugo......:" name_ausgeben("Tante Erna geht schwimmen") (2 Punkte) "Tante Erna geht schwimmen:" |
||
![]() |
|||
Aufgabe 6 (hits_ausgeben) |
|
Eine Funktion hits_ausgeben() soll die Seitenzugriffe zu den Web-Seiten aus den Daten formatiert ausgeben. Erstellen Sie ein Struktogramm (6 Punkte) und vervollständigen sie den Programmcode (4 Punkte):
void hits_ausgeben(){ // Ausgabe der Seitenzugriffe cout << name_ausgeben(names[i]); // Siehe Tip -> } |
So soll die Ausgabe aussehen: | ||||
![]() |
|||||
Tip: Die Funktion name_ausgeben() aus 5 kann verwendet werden! |
Funktion hits_ausgeben() (6 Punkte)
Eingabe: globales SITES: integer, globales hits[] : integer |
C-Quellcode: (4 Punkte)
void hits_ausgeben(){ // Ausgabe der Seitenzugriffe for (int i=0;i<SITES;i++){ // fuer alle SITES cout << name_ausgeben(names[i]); // Seitenname format cout << hits[i] << endl; // Zugriffe } // -fuer alle SITES } |
|||
![]() |
Aufgabe 7 (prozente_berechnen) |
|
Erstellen Sie den Programmcode für Funktion prozente_berechnen() mit Kommentaren, wie werden die Prozente berechnet?
Die Funktion greift auf folgende globale Variablen und Konstanten zu: SITES, hits[], prozente[] und hat als Rückgabewert die Summe der Seitenzugriffe aus hits[].
Die Datentypen entnehmen Sie aus der Beschreibung des Projekts.
int prozente_berechnen(){ int sum_hits=0; // Summe der Gesammt-Zugriffe for (int i=0; i<SITES;i++){ // fuer alle SITES sum_hits = sum_hits+hits[i]; // Aufsummieren der Hits } // -fuer alle SITES for (int i=0; i<SITES;i++){ // fuer alle SITES prozente[i] = (100.0*hits[i] / sum_hits)+0.5; // Prozentualen Anteil berechnen und runden } // -fuer alle SITES return sum_hits; // Rueckgabe der Gesammt-Hits }
Aufgabe 8 (prozente_ausgeben) |
|
Gegeben ist folgender Source-Code, analysieren Sie den Code und kommententieren (10 Punkte) Sie ihn, erstellen Sie ein Struktogramm (15 Punkte)! int prozente_ausgeben(){ int prozsum = 0; for (int i=0;i<SITES;i++){ cout << name_ausgeben(names[i]); if (prozente[i] >9) cout << " "; else cout << " "; cout << prozente[i] << "% "; cout << endl; prozsum = prozsum + prozente[i]; } return prozsum; } |
|||
![]() |
|||
Wozu dient die if-Anweisung?
Welchen Wert gibt die Funkion zurück? |
Funktion prozente_ausgeben() (15 Punkte)
Eingabe: globales SITES: integer, Ausgabe: auf Konsole: Name...: prozentuale Zugriffe Lokale Variable: prozsum: integer; i: integer |
||
C-Quellcode: (10 Punkte)
int prozente_ausgeben(){ // Ausgabe der Prozente pro Seite auf Konsole int prozsum = 0; // Summe der Prozente mit 0 initialiseren for (int i=0;i<SITES;i++){ // fuer alle SITES cout << name_ausgeben(names[i]); // Name formatiert ausgeben if (prozente[i] >9) // wenn Prozentwert 2-stellig cout << " "; // ein Leerzeichen ausgeben else // sonst cout << " "; // 2 Leerzeichen ausgeben cout << prozente[i] << "% "; // Prozente ausgeben cout << endl; // neue Zeile prozsum = prozsum + prozente[i]; // Prozente aufsummieren } // -fuer alle SITES return prozsum; // Prozentsumme zurueckgeben } |
||
![]() |
Aufgabe 9 (balken_ausgeben) |
|
Erstellen Sie eine Funktion balken_ausgeben(), die proportionale Anzahl (prozente / 2) an Sternen ausgibt. Erstellen Sie ein Struktogramm (10 Punkte) und einen kommentierten Quelltext (15 Punkte)!
void balken_ausgeben(){ } |
|||
![]() |
Funktion balken_ausgeben() (10 Punkte)
Eingabe: globales SITES: integer, Ausgabe: auf Konsole: Name...: prozentuale Zugriffe + Balken Lokale Variable: i,j,k: integer |
C-Quellcode: (15 Punkte)
void balken_ausgeben(){ // Ausgabe der Prozente als Balken int i,j,k; // lokale Variablen for (i=0;i<SITES;i++){ // fuer alle SITES cout << name_ausgeben(names[i]); // Name formatiert ausgeben if (prozente[i] >9) // wenn Prozentwert 2-stellig cout << " "; // ein Leerzeichen ausgeben else // sonst cout << " "; // 2 Leerzeichen ausgeben cout << prozente[i] << "% "; // Prozente ausgeben j= prozente[i]/2; // j proportional prozent/2 for (k=0;k<j;k++){ // j mal cout << "*"; // einen Stern ausgeben } // -j mal cout << endl; // neue Zeile } // -fuer alle SITES } |
||
![]() |
|
Download | ||||
---|---|---|---|---|
Ausführbares Programm | Des Projekts | Quelltext anschauen | ||
![]() |
![]() |
![]() |
![]() |
./. |
webstats.exe.sit | ./. | webstatistics.sit | webstatistics.zip | main.cpp.txt |