Hier mein Lösungsvorschlag:
Aufgabe 1
R, ?, F, F, R, R, F, F, ?, F
Aufgabe 2
Der Bildupload funktioniert nicht so richtig. Link zum Bild:
https://picload.org/view/rwcooagw/17a2a.png.html
Symmetrische Ordnung: (hier mache ich sehr gerne Fehler -.-)
C B Q E P F D A H K J I G M L R O N
b) KE3 S.24ff. Es handelt sich um den INSERTIONSORT (Sortieren durch Einfügen)
Vorgehen: Es gibt zwei „Listen“, eine sortierte und eine unsortierte.
Pro Durchgang wird von der unsortierte Liste ein Element ausgewählt und in die sortierte Liste( natürlich an der richtigen Stelle) eingefügt.
Code schreiben: siehe. KE3 S.26
c)KE3 S.72 symmetrische Ordnung ist für die Auflösung eines binären Suchbaums geeignet. Die Datenobjekte werden in sortierter Reihenfolge gespeichert. Zu beachten ist, dass keine zwei gleichen Suchschlüssel existieren dürfen.
d) KE2 S.49
Vorteil von verketteter Speicherung:
+Listenelemente lassen sich auf einfache Weise hinzufügen und entfernen. Es muss nicht umgespeichert werden.
+Bei Implementierung mit Zeigerkonzept, wenig Aufwand.
+spezielle Formen für spezielle Anwendungsbereiche (Ring-, Ankerkettung)
Nachteile
-Keine Selektoren, daher kein gezielter Zugriff auf Datenobjekte
-zusätzlicher Speicherplatzbedarf für Zeigerverwaltung
Anwendungsbereich:
Verkettete Speicherung: hohe Datenbewegungsrate (häufiges hinzufügen/löschen)
Sequentielle Speicherung: geringe Datenbewegungsrate und schneller Zugriff auf Objekte benötigt
Aufgabe 3
a) iterativ
b) keine Ahnung wie das rekursiv funktionieren soll.
Kann es sein, dass es hierzu eine Beispieldatei gibt? Hab da was im Hinterkopf, aber leider nichts gefunden.
c) do-while vs while
do-while: keine Eintrittsbedingung, d.h. wird mindestens einmal ausgeführt.
while: mit Eintrittsbedingung, kann keinmal ausgeführt werden.
2ter Unterschied???
d) switch
e) Getränkeautomat
//c1)
c2)
c3
c4
Aufgabe 1
R, ?, F, F, R, R, F, F, ?, F
Aufgabe 2

Der Bildupload funktioniert nicht so richtig. Link zum Bild:
https://picload.org/view/rwcooagw/17a2a.png.html
Symmetrische Ordnung: (hier mache ich sehr gerne Fehler -.-)
C B Q E P F D A H K J I G M L R O N
b) KE3 S.24ff. Es handelt sich um den INSERTIONSORT (Sortieren durch Einfügen)
Vorgehen: Es gibt zwei „Listen“, eine sortierte und eine unsortierte.
Pro Durchgang wird von der unsortierte Liste ein Element ausgewählt und in die sortierte Liste( natürlich an der richtigen Stelle) eingefügt.
Code schreiben: siehe. KE3 S.26
c)KE3 S.72 symmetrische Ordnung ist für die Auflösung eines binären Suchbaums geeignet. Die Datenobjekte werden in sortierter Reihenfolge gespeichert. Zu beachten ist, dass keine zwei gleichen Suchschlüssel existieren dürfen.
d) KE2 S.49
Vorteil von verketteter Speicherung:
+Listenelemente lassen sich auf einfache Weise hinzufügen und entfernen. Es muss nicht umgespeichert werden.
+Bei Implementierung mit Zeigerkonzept, wenig Aufwand.
+spezielle Formen für spezielle Anwendungsbereiche (Ring-, Ankerkettung)
Nachteile
-Keine Selektoren, daher kein gezielter Zugriff auf Datenobjekte
-zusätzlicher Speicherplatzbedarf für Zeigerverwaltung
Anwendungsbereich:
Verkettete Speicherung: hohe Datenbewegungsrate (häufiges hinzufügen/löschen)
Sequentielle Speicherung: geringe Datenbewegungsrate und schneller Zugriff auf Objekte benötigt
Aufgabe 3
a) iterativ
Code:
double ermittle_mw(double *v, int l){
l++;
double x=0;
int i;
for(i=0; i<l; i++){
x = x + v[i];
printf("\n x: %f",x);
printf("\n v[i]: %f",v[i]);
}
return (x/i);
}
Kann es sein, dass es hierzu eine Beispieldatei gibt? Hab da was im Hinterkopf, aber leider nichts gefunden.
c) do-while vs while
do-while: keine Eintrittsbedingung, d.h. wird mindestens einmal ausgeführt.
while: mit Eintrittsbedingung, kann keinmal ausgeführt werden.
2ter Unterschied???
d) switch
Code:
switch (operator)
{
case '+': printf("\n %f + %f = %f",
operand1, operand2, operand1 + operand2); break;
case '-': printf("\n %f - %f = %f",
operand1, operand2, operand1 - operand2); break;
case '*': printf("\n %f * %f = %f",
operand1, operand2, operand1 * operand2); break;
default: printf("\nUnbekannte Operation!"); break;
}
e) Getränkeautomat
//c1)
Code:
int pruefeGeldstueck(float muenze){
// Typumwandlung
int x;
float temp=0.0;
temp = 100 * muenze;
x = (int) (temp);
switch(x){
case 5: printf("\nGeldstueck angenommen!"); return 1;
case 10: printf("\nGeldstueck angenommen!"); return 1;
case 20: printf("\nGeldstueck angenommen!"); return 1;
case 50: printf("\nGeldstueck angenommen!"); return 1;
case 100: printf("\nGeldstueck angenommen!"); return 1;
case 200: printf("\nGeldstueck angenommen!"); return 1;
default: printf("\nGeldstueck ungueltig!"); return 0;
}
}
Code:
int auswahlGetraenkeSorte(){
int x;
do{
printf("\nGetraenk auswaehlen!");
printf("\n(1) 0.50 Euro Wasser");
printf("\n(2) 1.20 Euro Limonade");
printf("\n(3) 2.00 Euro Bier\n");
scanf("%d",&x);
printf("\nIhre Auswahl: %d",x);
}
while (!(x>0 && x<4));
return x;
}
Code:
float ermittlePreis(int sorte){
printf("\nSie haben die Sorte %d ausgewaehlt", sorte);
float preis;
switch(sorte)
{
case 1: printf("\nWasser kostet 0.50 Euro"); preis=0.5; break;
case 2: printf("\nLimonade kostet 1.20 Euro"); preis= 1.2; break;
case 3: printf("\nBier kostet 2.00 Euro"); preis= 2.0; break;
default: printf("\nfalsche Eingabe -> Abbruch"); preis = 100.00; break;
}
return preis;
}
Code:
float bezahlen(float zuZahlen){
float temp;
float eingeworfen = 0;
float rest = zuZahlen;
while(zuZahlen>0){
printf("\nBitte werfen sie ein gueltiges Geldstueck ein");
scanf("%f", &temp);
if (pruefeGeldstueck(temp)){
zuZahlen = zuZahlen - temp;
eingeworfen = eingeworfen + temp;
printf("\nRestbetrag: %.2f",zuZahlen);
printf("\nbereits eingeworfen: %.2f",eingeworfen);
}else{
printf("\nungueltiges Geldstueck!");
}
}
if(zuZahlen<0){
printf("\nRueckgeld: %.2f",zuZahlen);
}
}