![]() |
Algorithmen & Datenstrukturen Programmieren 1 von Prof. Jürgen Plate |
Ablauf:
Zeichenvariable, Zeichen- und Zeilenzähler definieren,
bis EOF einlesen, Zeichen und Zeilen zählen,
Ergebnis ausgeben.
a = X; b = 1;
solange a > b wiederhole
a = (a + b)/2; b = X/a;
Schreiben Sie ein Programm, das diesen Algorithmus als Funktion wurz() implementiert
und testen Sie die Funktion mit geeigneten Eingabewerten.
Ablauf:
Wertearray und Zähler definieren,
bis "0.0" einlesen, Werte addieren und zählen,
für jeden Wert den Wert selbst und den prozentualen Anteil ausgeben.
100 = 2 * 2 * 5 * 5
Man muß dazu keine Primzahlen kennen. Es genügt, die Teiler D = 2, 3, ...
zu testen und im Erfolgsfall statt mit N nur noch mit N/D weiterzumachen.
3-453-20913-3
3-446-21368-6
3-930673-72-X
usw.
Wenn man die Bindestriche wegläßt, hat die ISBN immer 10 Ziffern. Die letze Ziffer (Prüfziffer), ergibt sich aus der Formel für die einzelnen Ziffern x1, x2, ..., x9:
x10 = Summe(i * xi) modulo 11 (i = 1, ..., 9)
Sie erlaubt das Erkennen von Einzelfehlern und teilweise Doppelfehlern bei der Eingabe. Da die Prüfziffer modulo 11 berechnet wird, reichen die Ziffern 0 bis 9 nicht aus, sondern für die Zahl 10 wird der Buchstabe 'X' hinzugenommen (römische Zehn).
Entwerfen Sie ein Programm, daß nach Eingabe der 10-stelligen ISBN (als String ohne Bindestriche) die Prüfziffer aus den ersten 9 Stellen berechnet und mit der eingegebenen Prüfziffer (also der letzten Stelle) vergleicht.
731731731 731731 731731 ********* ****** ****** wwwwNNNNNaD<<yyMMddb<YYmmDDc<<<<<<d ||||||||||| ||||||| ||||||| | ||||||||||| ||||||| ||||||| -\__ Pruefsumme ALLER Ziffern ||||||||||| ||||||| ||||||| ||||||||||| ||||||| ||||||-\__ Pruefsumme Ablaufdatum ||||||||||| ||||||| ||||--\__ Ablaufdatum Tag ||||||||||| ||||||| ||--\__ Ablaufdatum Monat ||||||||||| ||||||| --\__ Ablaufdatum Jahr ||||||||||| ||||||| ||||||||||| ||||||-\__ Pruefsumme Geb.-Datum ||||||||||| ||||--\__ Geb.-Tag ||||||||||| ||--\__ Geb.-Monat ||||||||||| --\__ Geb.-Jahr ||||||||||| |||||||||| \__ Staatszugehoerigkeit (D = Deutsch?) ||||||||| \__ Pruefsumme fuer wwwwNNNNN ||||-----\__ laufende Zaehlnummer ----_ Erstwohnsitz Kennzahl
Für die Berechnung der Püfziffern gilt folgende Regel:
7317317317 3173173 1731731 wwwwNNNNNaD<<yyMMddb<YYmmDDc<<<<<<d
(2*7 + 7*3 + 0*1 + 7*7 + 5*3 + 2*1 + 1*7 + 2*3 + 3*1) modulo 10 = 7
Entwerfen Sie ein Programm, daß nach Eingabe der 10-stelligen Personalausweisnummer (als String) aus den ersten 9 Stellen die Prüfziffer berechnet und mit der eingegebenen vergleicht. Erweitern Sie dann das Programm, um alle Prüfsummen zu berechnen.
Dannach schreiben Sie das Mittelwert-Programm. Dies liest die Daten aus der zuvor erzeugten Binärdatei und berechnet den Mittelwert. Schreiben Sie zwei Varianten des Programms:
Mittel = X; 1. Wert
Mittel = Mittel - (Mittel - X)/i i. Wert
(Laufzeit - i + 1)*Anschaffungswert
degressive Abschreibung des Jahres i = -------------------------------------
0.5*Laufzeit*(Laufzeit + 1)
Erstellen Sie ein Programm, mit dem die jährliche Abschreibung bis zum Ende der
Laufzeit der Maschine ausgegeben werden kann. Eingabe ist Laufzeit und
Anschaffungswert, Ausgabe ist eine Tabelle der jährlichen Abschreibung.
Die notwendige Physik ist elementarer Gymnasiallehrstoff: Der freie Fall ist eine gleichförmig beschleunigte Bewegung, die allgemein durch die Formeln
für die Geschwindigkeit v und den Ort x beschrieben wird. Darin stehen b für die Beschleunigung und v0 und x0 für die initiale Geschwindigkeit und den initialen Ort. Für den freien Fall (idealisiert, ohne Luftwiderstand) ist die Beschleunigung b die Erdbeschleunigung g mit dem Wert von 9.81 Meter pro Sekunde zum Quadrat.
Die Wurfweite w und die Wurfhöhe h berechnen sich zu:
w = v02/g * sin(2*µ) h = v02/2g * (sin(µ))2g ist die Erdbeschleunigung (9,81 m/s).
Eingabedaten und Ergebnis sollen jeweils mit zwei Stellen hinter dem Komma ausgegeben werden.
Hinweis: #include <math.h> am Anfang des Hauptprogramms ist notwendig, um auf die C-Bibliotheks-Funktion double sin(double x) zugreifen zu können. Außerdem muß im Menü Projekt die Auswahl Optionen angewählt werden. Im Reiter Linkeroptionen muß im Bereich Bibliotheken die Bibliothek math ausgewählt werden.
int x; int *p; int **q; x = 42; p = &x; q = &p;Geben Sie die printf-Anweisungen an, die folgendes ausgeben: