MezData-Logo Creative Commons License 622 Lösungen Button :CPP: Muster KA

BaustelleSAE Muster-Klassenarbeit

Version: 23.02.2011

Name: _____________________

Allgemeiner Teil:

Aufgabe 1

Punkte:2

Um Ein-Ausgaberoutinen verwenden zu können, sind einfache Einträge in der cpp-Datei vorzunehmen.
Welche sind dies?

Aufgabe 2

Punkte:2

Aus welchem Grund müssen in c/c++ Variablen definiert werden?

Aufgabe 3

Punkte:2

Worin besteht der Unterschied zwischen der Definition und Initialisierung von Variablen?
Anhand eines einfachen Beispiels erläutern!

Aufgabe 4

Punkte:4

Wie ist der Aufbau und die Wirkungsweise einer Do-While-Schleife?
Zeigen Sie den wesentlichen Unterschied zu While-Schleife anhand eines Quellcodebeispiels!

Projekt Teil Theorie:

Beschreibung des Projekts

Die 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)

Punkte:12

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?

 

Aufgabe 6 (hits_ausgeben)

Punkte:10

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!

Aufgabe 7 (prozente_berechnen)

Punkte:10

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.

Aufgabe 8 (prozente_ausgeben)

Punkte:25

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?

Aufgabe 9 (balken_ausgeben)

Punkte:25

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(){
  
}

Note:

Erreichte Punkte:

Punkte:Total 92

Zum Praxis-Teil...

Zur Musterlösung...