1. Bildschirmausgabe
      2. Schreiben Sie ein Struktogramm, das die folgende Ausgabe auf dem Bildschirm erscheinen läßt:

        Guten Abend!

      3. Variablentausch
      4. In einem Struktogramm soll der Inhalt zweier gegebener int-Variablen a und b vertauscht werden. Warum funktioniert das nicht mit den beiden Anweisungen

        iwert1 = iwert2;

        iwert2 = iwert1;

        und wie sieht die Lösung für das Problem aus?

      5. Rechnen 1
      6. Schreiben Sie ein Struktogramm, welches Sie nach drei Zahlen fragt (auch negative Werte sollten erlaubt sein) und dann die Summe der drei Zahlen ausgibt. Nachdem die Summe ausgegeben wurde, soll nach einer neuen Zahl gefragt werden, mit der die Summe dann multipliziert wird. Dieses Ergebnis soll ebenfalls ausgegeben werden.

      7. Division
      8. lesen Sie zwei Werte dwertl und dwert2 ein.

        bei einer Division d1/d2 darf ja bekanntlich der Divisor d2 nicht Null sein. Stellen Sie sicher, daß die Division immer ausgeführt werden kann, indem Sie im Fall "d2 gleich Null" den Divisor auf eins setzen. Ignorieren Sie im Moment noch diesen Fall.

        Führen Sie die Division durch und geben Sie das Ergebnis aus !

      9. Operatoren
      10. Deklarieren Sie 2 Integerwerte und lesen Sie die Variablen vom Benutzer ein. Berechnen Sie anschließend das Ergebnis der Addition (+), der Subtraktion (-), der Multiplikation (*), der Division(/) und der Modulooperation (%) dieser beiden Variablen. Geben Sie jedes Ergebnis aus.

      11. Kreisberechnung
      12. Schreiben Sie ein Struktogramm, daß einen Radius eines Kreises einliest und dann die Kreisfläche ausgibt ! (Die Formel lautet FKreis=Radius2 · p ; p =3,1415)

      13. Aufsummierung
      14. Schreiben Sie ein Struktogramm, das die Summe der Zahlen von 1 bis 10.000 mit einer Schleife berechnet und das Ergebnis auf dem Bildschirm ausgibt.

      15. Größensortierung bei 2 Werten
      16. Schreiben Sie ein Struktogramm, daß zwei Integerwerte einliest, und diese größensortiert wieder ausgibt. Denken Sie daran, daß die zwei Zahlen auch gleich sein könnten. In diesem Fall sollte dies auch mit ausgegeben werden.

         

      17. Berechnung der 3.Potenz einer Reihe von Zahlen
      18. Berechnen Sie die 3.Potenz einer Reihe von Zahlen. Lesen Sie dazu von der Tastatur Start- und Endwert ein und berechnen Sie für jeden Wert x, der innerhalb dieser Grenzen liegt, in Einerschritten den Wert x3 (=x*x*x) und lassen Sie diesen Wert jeweils ausgeben.

        1. Bedienerabfrage

        fragen Sie den Bediener nach jeder dieser Funktionsreihen, ob er weitermachen will (Einlesen eines Zeichens und Test auf 'J', 'j', 'N', 'n' wenn wir bereits den Datentyp Character durchgenommen haben, ansonsten bitte über Zahlen entscheiden "1 für weitermachen oder 2 für abbrechen"). Bei positiver Eingabe ('j' oder 'J' bzw 1) soll die Rechnung (also das komplette Struktogramm nochmal durchgeführt werden

      19. Integer-Feld
      20. Schreiben Sie ein Struktogramm, daß ein Integer-Feld von der Länge 10 anlegt. Benutzen Sie eine Schleifemit der Sie die 10 Integer-Werte mittels Eingabe in das Feld einlesen. Geben Sie danach die Werte wieder aus.

      21. Ratemal
      22. Schreiben Sie ein Struktogramm ratemal.c, das den Benutzer eine Zahl raten läßt. Das Struktogramm soll den Benutzer begrüßen, eine Zahl zwischen 0 und 100 zufällig auswählen und auf eine Eingabe warten. Nachdem der Benutzer eine Zahl eingegeben hat, soll dieser Rateversuch mit der zufällig gewählten Zahl verglichen werden, und entsprechend "Zahl zu groß", "Zahl zu klein" oder eine Erfolgsmeldung und die Anzahl der Versuche bei richtigem Raten ausgegeben werden. War der Rateversuch nicht richtig, sollen solange neue Rateversuche möglich sein, bis die Zahl geraten wurde.

        Eine Zufallszahl kann mit der Funktion random() erzeugt werden (izufall=rand();). random() liefert eine Zufallszahl zwischen 0 und 1. Überlegen Sie, wie Sie dieses Ergebnis auf eine Zahl zwischen 0 und 100 umrechnen können.

      23. Registrierkassen-Struktogramm
      24. In einer Schleife soll ein Betrag (Gleitkommawert) eingelesen werden

        dieser Betrag soll zu einer Gesamtsumme hinzuaddiert werden

        nach jedem Artikel soll abgefragt werden, ob weitergemacht werden soll (Einlesen eines Zeichens und Test auf "j","n","J","N"). Bei negativer Eingabe "N"' oder "n" soll, wie vorher berechnete Gesamtsumme ausgegeben werden

      25. Bevölkerungswachstum
      26. lesen Sie die Einwohnerzahl einer Stadt ein

        lesen Sie den Wachstumsfaktor (in Prozent) ein (wie bei Zinsen)

        lesen Sie die Anzahl der Jahre ein, für die die neue Einwohnerzahl berechnet werden soll

        berechnen Sie die Einwohnerzahl analog zur Zinsberechnung mit den eingegebenen Werten, geben Sie dabei die berechnete Einwohnerzahl für jedes Jahr aus !

        (wachstum.c)

         

      27. Zählen mal anders
      28. Schreiben Sie ein Struktogramm, daß erst von 0 bis 0, dann von 0 bis 1, dann von 0 bis 2, dann 0 bis 3 usw. bis 0 bis 9 zählt. Die Ausgabe soll so ausschauen:

        0

        0 1

        0 1 2

        usw.

        0 1 2 3 4 5 6 7 8 9

        Tip: Sie müssen zwei ineinandergeschachtelte for-Schleifen benutzen, wobei das schwierige

        dabei die Initialisierung und die Bedingung der inneren Schleife darstellt.

         

      29. Die Absolutfunktion
      30. Erstellen Sie eine Funktion namens abs, der man einen Wert übergibt, und die folgendes zurückliefert_ -1, wenn der Wert negativ war, 0 wenn der Wert Null war und 1, wenn der Wert positiv war.

      31. Betragsfunktion
      32. Erstellen Sie eine Funktion namens Betrag, der man einen Wert übergibt, und die den Wert ohne Vorzeichen zurückgibt (also bei 5 wird 5 zurückgegeben bei -7 soll 7 zurückggeben werden).

        1. Unterfunktionen

        Ändern Sie das Struktogramm so ab, daß Die Betragsfunktion die Absolutfunktion benutzt. Es gilt nämlich: Betrag(x) = x * abs(x).

        (betrag2.c)

      33. Potenzfunktion
      34. Erstellen Sie eine Funktion namens potenz, die Sie z.b. mit potenz(a,b) aufrufen können und die dann a hoch b berechnet. A hoch b heißt, a mit sich selbt b-mal multipliziert wird. 2 hoch 3 ist 2*2*2, 3 hoch 4 ist 3*3*3*3, -6 hoch 3 wäre (-6)*(-6)*(-6) und 8 hoch 1 ist 8. (Bitte auch berücksichtigen das a hoch 0 immer 1 ist !)

        (potenz.c)

      35. Kreisviertel-Funktion
      36. Entwerfen Sie eine Funktion KRV(), die den Inhalt eines Kreisring-Viertels berechnet. Verwenden Sie dabei die bereits bekannte Funktion zum Kreisinhalt).

        Die Formel für diese Funktion lautet: KRV( rA, rI ) = ( Kl( rA ) - KI( rI ) ) / 4

        Zum Test dieser Funktion lesen Sie in der Funktion main() zwei Radien rA und rI ein, berechnen damit den jeweils zugehörigen Kreisinhalt mit Hilfe der Funktion KI() und geben diese beiden Ergebnisse aus. Danach rufen Sie die Funktion KRV() mit diesen beiden Radien auf, geben dieses Ergebnis ebenfalls aus und prüfen dessen Plausibilität.

        Um dem DAU keine Chance zu geben, muß in der Funktion KRV() sichergestellt werden, daß der Radius rA auch wirklich größer als der Radius rI ist.

        (Kreisviertel.c)

         

      37. Rekursive Fibonacci-Kette
      38. Implementieren Sie die rekursive Rechenvorschrift der Fibonacci-Zahlen mit einer rekursiven C-Funktion namens FIB(). Die Rechenvorschrift lautet:

        FIB (0) = 1

        FIB (1) = 1

        FIB (n) = FIB (n-1) + FIB (n-2)

        Lassen Sie einen Wert m vom Benutzer eingeben und geben Sie alle Fibonacci-Zahlen FIB(0) bis FIB(m) aus.

        Das Struktogramm soll entweder beide Lösungen ausgeben oder - falls durch Null zu dividieren oder die Wurzel aus einer negativen Zahl zu ziehen wäre - eine entsprechende Meldung.

         

      39. Sternchenmuster
      40. Entwickeln sie Struktogramme, die die angegebenen Sternchenmuster auf möglichst einfache Weise unter Benutzung von Zählschleifen ausdrucken (Die Fälle 4 bis 8 sind Fleißaufgaben):

        1. ****

        ****

        ****

        ****

        2.*

        **

        ***

        ****

         

        3.****

        ***

        **

        *

        4. *

        **

        ***

        ****

        5.****

        ***

        **

        *

        6.*

        **

        ***

        ****

        ***

        **

        *

        7. *

        **

        ***

        ****

        ***

        **

        *

        8. *

        **

        ***

        ...

        *(x-mal)**

        ...

        ***

        **

        *

        9. * *

        * *

        * *

        *

        * *

        * *

        * *

        10.

        (x-mal) wie 9.

      41. Mini-Taschenrechner
      42. lesen Sie zwei Gleitkomrna-Werte ein

        lesen Sie einen Operator ein. Stellen Sie sicher, daß dies ein gültiger Operator ist (Test auf +,-,*,/,%, bei Fehleingabe Wiederholung der Operator-Eingabe)

        führen Sie die Rechnung in Abhängigkeit des Operators durch. Beachten Sie dabei auch, daß die Division durch Null nicht definiert ist (siebe Aufgabe 1)

        Geben Sie dem Bediener die Möglichkeit zur Wiederholung der Rechnung

      43. Kaffeemaschine
      44. Struktogrammieren Sie eine virtuelle Kaffeemaschine. Über ein Menü sollten verschiedene Kaffesorten zur Auswahl angeboten werden. Nach dem der Benutzer einen Kaffee ausgesucht hat, muß er Das Geld einwerfen. Bieten Sie hierzu wieder per Menü die Möglichkeit, verschiedene Münzen einzuwerfen. Nachdem der Betrag erreicht bzw. überschritten ist, soll der Kaffee ausgegeben werden ("Hier ist Ihr Capucino mit extra Zucker!") und das Rückgeld in entsprechenden Münzen zurückgegeben werden. Überlegen Sie zunächst selber wie das Gesamtprojekt angegangen werden könnte. Zerteilen Sie dazu die Gesamtaufgabe in Unteraufgaben. In den nächsten Aufgaben wird, falls Ihnen das Projekt zu umfangreich ist, mittels Teilaufgaben das Projekt schrittweise zusammengefügt.

        Fleißaufgabe: Erstellen Sie auch noch einen Konfigurationsmenüpunkt, mit Passwortabfrage, in dem Sie unterschiedliche Preise für die verschiedenen Kaffeesorten festgelegt werden können. Unter anderem könnte hier evtl. auch eine Auffüllung der Münzreserven (bzw. Kaffee, Milch, Zucker) vorgenommen werden.

        1. Münzeingabe
        2. Erstellen Sie eine Funktion double muenzeingabe(double), die zuerst den Gesamtbetrag ausgibt (den double-Parameter) und dann über ein Menü solange verschiedene Münzen zum Einwerfen anbietet, bis der double Parameter erreicht oder überschritten ist. Liefern Sie den insgesamt eingeschmissenen Betrag zurück.

        3. Münzausgabe

        Erstellen Sie eine Funktion int muenzausgabe(double), die den Parameter (ein DM-Betrag) in den verschiedenen Münzen ausgibt. Tip: Überlegen Sie genau, wie Sie selber vorgehen würden;Erstellen Sie gegebenenfalls ein Struktogramm; Sie brauchen auf jeden Fall den Continue-Befehl.

      45. Zufallszahl
      46. Mithilfe der Funktion random aus bekommen Sie eine Zufallszahl zwischen 0 und 1. Struktogrammieren Sie eine Funktion, die auf der Basis von random() eine Zufallszahl zwischen 0 und 4 zurückgibt.

        (zufall.c)

        1. Funktion zum Vergleich von Werten
        2. Struktogrammieren Sie eine Funktion mit drei Integer-Parametern, die die Parameter auf Gleichheit überprüft. Sind alle Zahlen verschieden wird "0" zurückgegeben. "1" falls 2 Zahlen gleich sind und "2" wenn alle 3 Zahlen gleich sind.

          (test.c)

        3. Einarmiger Bandit

Simulieren Sie mithilfe der beiden obigen Funktionen einen einarmigen Banditen. Er sollte ein Konto aufweisen, für jedes Spiel einen Betrag vom Konto abbuchen und je nach den Ausgabewerten Gewinnbeträge gutschreiben und entsprechende Meldungen ausgeben.

Fleißaufgabe: Ihr Auftraggeber möchte pro Spiel im Durchschnitt 10 Pf Gewinn machen. Ein Spiel soll auf jeden Fall 30 Pf kosten. Die Gewinnausschüttung bei 2 gleichen Zahlen ist allerdings noch unklar. Die Gewinnausschüttung bei 3 gleichen Zahlen soll das 5 fache der Gewinnausschüttung für 2 gleiche Zahlen betragen. Berechnen Sie dies mit Hilfe eines Struktogrammes, daß nach jeweils 100 Durchläufen die Gewinnausschüttung nach oben bzw unten korrigiert.