Dashboard► Wintersemester 2017/18► Ingenieurwissenschaften
► Informatik und Angewandte Kognitionswissenschaften► OOP/C++ Praktikum WS 2017/2018
► 2017-11-03 - 2017-11-26► Temperaturdaten-HTML-Formatierer/Temperature Data ...
Praktikum Objektorientierte Programmierung in C++
(WS 2017/2018)
Temperaturdaten-HTML-Formatierer/Temperature Data
HTML Formatter
Temperaturdaten werden in vielen Bereichen benötigt, beispielsweise im energiewirtschaftlichen Umfeld, in der
Landwirtschaft oder im Verkehr.
Der Deutsche Wetterdienst (DWD) erhebt und speichert u.a. Temperaturdaten und stellt diese zur Weiterverarbeitung zur
Verfügung.
Aufgabe hier ist, jahresweise in einer speziell formatierten Textdatei zur Verfügung gestellte mittlere Tages-
Temperaturdaten in einem C++-Programm einzulesen und in ein anderes Format (HTML-Tabelle) umgewandelt als Datei
auszugeben./
Temperature data are used in many areas, e.g. in the energy sector, agriculture or traffic.
The Deutsche Wetterdienst (DWD) (german weather service) collects and stores temperature data and offers these data
to the public for further processing.
Task here will be to read mean daily temperature data of one year given in a special text formatted file and convert and
write them into another (HTML table) formatted file.
Beispiel/Example
Yi Xie
1. Definieren Sie eine Funktion, in der Sie eine Datei im .csv-Format mit den Tagesmittelwerttemperaturen - der
Dateiname soll als Parameter gegeben sein - einlesen und die gelesenen Temperaturdaten in einem - ebenfalls als
Parameter übergebenen - zweidimensionalen Feld für die 12 Monate mit maximal 31 Tage je Monat einlesen und
zurückgeben.
Die einzulesende ASCII-Textdatei besteht aus zwei durch ein Semikolon getrennten Spalten; in der ersten Spalte ist
jeweils das Datum in der Form. Tag.Monat.Jahr gegeben, in der zweiten Spalte der Temperaturwert als
Gleitpunktzahl (Beispiel-Dateien: duisburg-2015.csv, duisburg-2016.csv, duisburg-2017.csv)./
Define a function reading a .csv formatted file with mean daily temperature data - the file name shall be a
parameter - and storing read temperature data into an - also given as parameter - two-dimensional array for the 12
month and maximum 31 days each month.
The to be read ASCII text file consists of two columns separated by a semicolon; in the first column the date is given
in german notation day.month.year, in the second column the temperature as a floating point number (example
files: duisburg-2015.csv, duisburg-2016.csv, duisburg-2017.csv).
Hinweise/Hints
verwenden Sie beim Einlesen den überladenen Operator >> und beachten Sie, die Punkte und das Semikolon
in der .csv-Datei dabei jeweils mit als Zeichen einzulesen/zu überlesen./
use the overloaded operator >> reading the data out of the file and regard to read/to skip the dots and the
semicolon in the .csv file as characters each.
der gelesene Tag und Monat kann jeweils als Index für die Spalte/Zeile im Feld mit den Temperaturen dienen./
the day and month read can be used as index for the column/row in the array of temperatures.
geben Sie das gelesene Jahr als einen Referenzparameter zurück./
return the year read as a reference parameter.
2. Definieren Sie eine Funktion, in der Sie eine Textdatei im .html-Format - der Dateiname soll als Parameter
gegeben sein - mit den Tagesmittelwerttemperaturen eines Jahres als HTML-Tabelle schreiben.
Ein zweidimensionales Feld mit den mittleren Tages-Temperaturwerten der 12 Monate mit maximal 31 Tagen je
Monat sowie das Jahr sollen ebenfalls als Parameter übergeben werden.
Schreiben/Kopieren Sie dabei zuerst exakt - bis auf die rot markierte Jahreszahl - folgende Zeilen (für ein HTML-
formatiertes Dokument mit dem HTML-Kopf, dem Beginn des HTML-Rumpfes sowie der HTML-Tabelle) in die
Ausgabedatei:/
Define a function writing a text file in .html-Format - the file name shall be a parameter - with the daily mean
temperatures of a year as an HTML table.
A two-dimensional array for the mean daily temperature values of the 12 month and maximum 31 days each month
as well as the year also shall be parameters.
Write/Copy first exactly - except the red marked year - following lines (for a HTML document with HTML head, start
of HTML body as well as the HTML table) into the output file:
Mean Temperatures 2017
table {
width: 100%;
}
th, td {
border: 1px solid black;
text-align: center;
}
tr:nth-child(even) {
background-color: #f2f2f2;
}
Mean Temperatures 2017 (Unit Degree Celsius)
JANFEBMARAPRMAY
JUNJULAUGSEPTOCTNOVDEC
Schreiben Sie danach über (geschachtelte) Schleifen zeilenweise die Temperaturwerte für den jeweils 1., 2,, 3. ...
Januar, Februar, März,...
Eine HTML-Tabellenzeile muss dabei jeweils immer mit (kurz für table row) beginnen und mit enden.
Die einzelnen Temperaturdaten stehen als Werte immer zwischen (kurz für table data) und , also
beispielsweise -0.2 für den 01. Januar oder 4.2 für den 01. Februar im Beispiel.
Gibt es keinen Temperaturwert, beispielsweise am 30.02. oder 31.04., schreiben Sie ein leeres
Tabellendatenelement ./
Write afterwards using (nested) loops row by row the temperature values of 1st, 2nd, 3rd, ... of January, February,
March...
Always an HTML table row has to start with (short for table row) and end with .
The single temperature data always appear as values in between (short for table data) and , e.g.
-0.2 for January, 1st, or 4.2 for February, 1st, in the example.
A missing temperature value like e.g. February, 30th, or April, 31st, is written as an empty table date element
.
Beenden Sie die Ausgabedatei mit den Zeilen:/
End your output file with following lines:
Minimum Temperature: -3.4 (6.1.)
Maximum Temperature: 26.2 (22.6.)
Average Temperature: 12.8
wobei Sie für die hier rot markierten Werte den jeweils kältesten und heissesten Tag des Jahres ermitteln und die
Daten entsprechend einsetzen sowie die Durchschnittstemperatur des gesamten Jahres./
whereas the red marked values for the coldest and hottest day of the year shall be calculated and inserted here as
well as the to be computed average temperature of the whole year.
Hinweise/Hints
Schaltjahre müssen nicht separat berechnet/gesondert berücksichtigt werden, da die Temperaturdaten nur in
Schaltjahren auch den 29. Februar enthalten./
leap years don't need to be calculated/regarded separately, since only in leap years the temperature data will
contain a February, 29th.
zählen Sie jeweils die Tage mit relevanten Temperaturwerten für die Berechnung der Durchschnittstemperatur,
so dass Sie den Durchschnittswert als arithmetisches Mittel korrekt berechnen können und nicht falsch fest
immer durch 365 (oder 366) dividieren./
count the number of relevant days with temperatures to be regarded for correctly calculating the arithmetic mean
of the average temperature, not always wrongly divide fix by 365 (or 366).
3. Definieren Sie eine C++ main-Funktion, in der Sie/
Define a C++ main function and
ein zweidimensionales Feld für die 12 Monate mit maximal 31 Tagen je Monat definieren und geeignet
initialisieren,/
define and appropriately initialise a two-dimensional array for the 12 month and maximum 31 days each month,
einen Dateinamen für die .csv-Temperaturdatei abfragen,/
ask for a file name for the.csv temperature file,
die Funktion zum Einlesen der Temperaturdatei aufrufen,/
call the function reading the temperature file,
für die Ausgabedatei einen neuen gleichen Dateinamen aber mit Endung .html definieren und mit diesem/
for the output file define a new same named file but with ending .html and with it
die Funktion für das Schreiben der HTML-Datei aufrufen./
call the function to write the HTML file.
Hinweise/Hints
alle Werte im Feld mit 0.0 zu initialisieren ist ungeschickt, da 0.0 auch eine eingelesene Tagesmitteltemperatur
sein kann./
to initialise all values in the array with value 0.0 is unhandy, since 0.0 might be a mean day temperature.
ob die Eingabedatei korrekt gelesen wird, können Sie einfach selbst überprüfen, indem Sie das Feld mit Werten
ausdrucken, bevor Sie mit dem Schreiben der Ausgabedatei fortfahren./
whether the input file is correctly read you can easily check yourself by outputting the array with values before
developing the file writing function.
ob die Ausgabedatei korrekt geschrieben und formatiert ist, können Sie einfach selbst überprüfen, indem Sie
diese in einem WWW-Browser wie Edge, Firefox, Opera oder Safari öffnen - schauen Sie sich bei Fehlern den
HTML-Seitenquelltext an./
whether the output file is written and formatted correctly you can easily check yourself by opening it in a WWW
browser like Edge, Firefox, Opera or Safari - in case of an error have a look at the page HTML source code.
Beispiel (Temperaturdaten rot markiert siehe oben)/Example (temperature data marked red see above)
Im Moodle-Kurs finden Sie (vereinfachte) Beispieldateien des DWD aus Duisburg für die Jahre 2015 (komplettes Jahr,
kein Schaltjahr), 2016 (komplettes Jahr, Schaltjahr) und 2017 (unvollständig bis 15.10., kein Schaltjahr)./
In the Moodle course you will find (simplified) example data of the DWD from Duisburg for the years 2015 (complete year,
no leap year), 2016 (complete year, leap year) and 2017 (incomplete until October, 15th, no leap year),
Beispiel Programmlauf 2017/Examples Program Run 2017
Hinweise zu HTML/Hints for HTML
Falls Sie noch keinerlei Erfahrung mit HTML haben, kein Problem, kopieren Sie einfach zuerst einmal nachfolgende
Zeilen als Beispiel in eine neue ASCII-Text-Datei example.html und öffnen diese in einem WWW-Browser - folgen Sie
auch dem Tutorial-Link w3schools.com im Moodle-Kurs.
Modifizieren Sie den Text, fügen Elemente ..., ..., ..., ... im Rumpf
(body) hinzu und sehen Sie im Browser, was sich dabei wie ändert./
If you have no experience with HTML, no problem, simply copy first following lines as example into a new ASCII text file
example.html and open it in your WWW browser - follow also the tutorial link w3schools.com in the Moodle course.
Modify the text, add elements ..., ..., ..., ... in the body and see what
changes how in the browser.
Page Title
This is a Heading
This is a paragraph.
Schreiben Sie anschliessend ein C++-Programm, das genau diese Datei example.html erzeugt/schreibt (siehe Beispiel
Datei list.csv mit Studierendendaten schreiben aus der Übung).
Ändern Sie danach Ihr Programm so ab, dass nach dem Paragraphen folgende kleine HTML-Tabelle im Rumpf der
HTML-Datei eingefügt/geschrieben wird./
Following write a C++ programm generating/writing exactly this file example.html (see exercise writing a file list.csv
with student data).
Afterwards modify your program adding/writing following small HTML table in the body of the HTML file after the
paragraph.
Ändern Sie Ihr Programm erneut, so dass die Zahlen nicht mehr fester Text sind, sondern definieren eine Variable int i
= 0, inkrementieren diese für jede Tabellendate [write value of i here] in einer Schleife, die fünf
Tabellenreihen ... erzeugt, und schreiben deren Werte 1 bis 15 jeweils direkt als Ausgabe in die HTML-
Datei.
Nun sind Sie nicht nur gut vorbereitet den Rest der obigen Aufgabe fertig zu programmieren, sondern haben schon fast
die halbe Lösung oben programmiert - ändern und erweitern Sie Ihren Kode!/
Modify your program again that the numbers are not fix text but define a variable int i = 0, increment it for each table
data [write value of i here] in a loop writing five table rows ..., and write these values
1 to 15 of i directly as output into the HTML file.
Now you are not only well prepared to finish the rest of the task, you already have programmed nearly half of the solution
above - just further modify and extend your code!
Zuletzt geändert: Freitag, 3. November 2017, 11:39
NAVIGATION
Dashboard
Startseite
Website
Dieser Kurs
OOP/C++ Praktikum WS 2017/2018
Teilnehmer/innen
Auszeichnungen
2017-10-20
2017-10-20 - 2017-11-05
2017-10-27
2017-11-03
2017-11-03 - 2017-11-26
Temperaturdaten-HTML-Formatierer/Temperature Data ...
Eingabe-Datei/Input File 2017: duisburg-2017.csv
Ausgabe-Datei/Output File 2017: duisburg-2017.html
Eingabe-Datei/Input File 2016: duisburg-2016.csv
Ausgabe-Datei/Output File 2016: duisburg-2016.html
Eingabe-Datei/Input File 2015: duisburg-2015.csv
Ausgabe-Datei/Output File 2015: duisburg-2015.html
Download Wetterdaten/Weather Data (Deutscher Wetterdienst)
HTML5 Tutorial (w3schools.com)
H2 (20 P.) - Deadline 2017-11-27 06:00 a.m.
2017-11-10
2017-11-17
2017-11-24
2017-11-24 - 2017-12-17
Meine Kurse
Kurse
EINSTELLUNGEN
Kurs-Administration
MEINE KURSE
Praktikum Objektorientierte Programmierung in C++ (WS 2017/2018)
Objektorientierte Programmierung in C++ (WS 2017/2018)
Lern- und Diskussionszentrum Maschinenbau
Thermodynamics ISE
Mechanics 1
Physics ISE (SoSe 2017)
Datenstrukturen und Algorithmen (SS 2017)
Kinematics of Robots and Mechanisms (SS 2017)
Mechanics 2
Praktikum Objektorientierte Programmierung in C++ (WS 2016/2017)
Objektorientierte Programmierung in C++ (WS 2016/2017)
Modellierung (WS16/17)
Programmentwurfstechnik SS16
Praktikum Objektorientierte Programmierung in C++ (WS 2015/2016; Petersen, Jörg)
Thermodynamik Praktikum / Thermodynamics Lab
Mathematik E3 (WS 13/14)
Praktikum Grundlagen der Programmierung 2/Objektorientierte Programmierung in C++ (WS 2013/2014;
Petersen, Jörg)
Objektorientierte Programmierung in C++/Grundlagen der Programmierung 2 (WS 2013/2014; Petersen, Jörg)
Fundamentals of Programming (SS 2013; Petersen, Jörg)
Practical Fundamentals of Programming (SS 2013; Petersen, Jörg)
Alle Kurse ...
KURSANTRAGSMANAGER
Kurs beantragen
Moodle an der UDE ist ein Service des Datenschutzerklärung Impressum Kontakt