Programmieren in C/C++ und MATLAB

Ähnliche Dokumente
Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Vorlesungsprüfung Programmiersprache 1

Programmieren in C/C++ und MATLAB

ios fstream ifstream

Hochschule Darmstadt Informatik-Praktikum SS 2017 EIT Bachelor 5. Aufgabenblatt Datenstruktur, Dateieingabe und -ausgabe

Ein- und Ausgabe mit Dateien

4 Schleifen und Dateien

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 23

Zeiger, Arrays und Strings in C und C++

Ein- und Ausgabe (I/O)

Entwickeln Sie ein C/C++-Programm für die Verwaltung einer Artikeldatei gemäß folgender Vorgaben!

Vergleich verschiedener OO-Programmiersprachen

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Programmieren in C/C++ und Matlab

Programmieren in C/C++ und MATLAB. Programmieren in C/C++ und MATLAB. Sebastian Bauer Sven Willert Sabine Schmidt

Grundlagen der Informatik 6. Arrays I

Hochschule Darmstadt Informatik-Praktikum WS 2017/2018 WIng Bachelor 6. Aufgabenblatt Zeiger, verkettete Liste, Dateieingabe und -ausgabe

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Mapra: C++ Teil 7. Felix Gruber, Michael Rom. 14. Juni 2016 IGPM. Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 7 14.

Klausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Angewandte Mathematik und Programmierung

Klausur in Programmieren

Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling

3D Programmierpraktikum: Einführung in C++ - Teil 1

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Hochschule Darmstadt Informatik-Praktikum WS 2016/2017 WIng Bachelor 4. Aufgabenblatt Modularisierung, Funktionen, Unterprogramme

Hydroinformatik I: IO - Files

Programmierkurs C++ Lösungen zum Übungsblatt 3. Nils Eissfeldt und Jürgen Gräfe. 2. November Aufgabe 5

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Grundlegende Anweisungen in C++

Aufgabe 1. Universität Duisburg-Essen Fachbereich Mathematik Dr. O. Rheinbach

Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente

C Spickzettel: Was haben wir bisher von C verwendet?

DAP2 Praktikum Blatt 1

Informationsverarbeitung

Informatik I - Übung 2 Programmieren in Eclipse

6.2 Extras/Lesen aus Dateien

Lösung Übungsblatt 7

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

9. Vektoren. (auch Felder/array)

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Klausur in Programmieren

Programmieren in C++ Stream I/O

Hochschule München, FK 03 SS Masterstudiengang Technische Berechnung und Simulation. Programmierung von CAx-Systemen Teil 1

GI Vektoren

Praktikum Betriebssysteme 1. Aufgabe (1)

Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3

C++ - Einführung in die Programmiersprache Ein- und Ausgabe in die Konsole. Leibniz Universität IT Services Anja Aue

Klausur in Programmieren

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Programmierung

CEN1112 Labor Software-Entwicklung

Informatik Repetitorium SS Volker Jaedicke

Grundlagen der Informatik 5. Kontrollstrukturen II

5. Elementare Befehle und Struktogramme

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik

2. Semester, 2. Prüfung, Lösung

Grundlagen der Informatik 11. Zeiger

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen

Grundlagen der Informatik 2. Typen

3. Semester : 1. Prüfung

int i=1; //Integerzahl i anlegen und mit 1 initialisieren float wert; //Floatzahl deklarieren scanf( %f,&wert); //Wert über Tastatur eingeben

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 18

Objektorientierte Programmierung

Mapra: C++ Teil 3. Felix Gruber. 29. April IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 3 29.

Algorithmen und Datenstrukturen

Kontrollstrukturen -- Schleifen und Wiederholungen

Kapitel 8: Abstrakte Datentypen. Inhalt. Definition ADT Keller ADT Schlange

Klausur in Programmieren

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Ein- und Ausgabe in Dateien (File I/O)

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Übungspaket 23 Mehrdimensionale Arrays

Objektorientierte Programmierung

Transkript:

Programmieren in C/C++ und MATLAB Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU, Sommersemester 2008 4-1

Übung Aufgabe: Berechnen Sie für die Klimastation Schleswig des Deutschen Wetterdienstes die Monatsmittelwerte, Monatsmaxima und Monatsminima der Temperatur für das Jahr 2007 und schreiben Sie die Tabelle der Monatswerte in eine Datei. Benötigt werden diese Werte oft für klimatische Berechnungen, hydrologische Berechnungen zum Wasserdargebot und zur Grundwasserneubildung. Als Daten gehen diese Werte dann in das Präprozessing ein. CAU, Sommersemester 2008 4-2

Übung Vorbereitet für Sie ist eine Datei schleswig.txt, die die gemessenen Tageswerte der Klimastation Schleswig enthält. Diese kann man aus dem Internet beim DWD herunterladen, Tageswerte seit 1991 stehen so zur Verfügung. Um Ihnen die Aufgabe zu erleichtern, ist die Datei vereinfacht worden: jeder Monat hat genau 30 Tage. Die Datei enthält insgesamt alle Werte aus dem Jahr 2007, also 12*30 = 360 Tagesmessungen. Die Datei besteht aus einem Dateikopf und den Werten. Der Dateikopf ist eine Zeile lang und enthält die Spaltenbeschriftungen: STAT JJJJMMDD Quality Min_T_5cm Min_T_2m Mean_T_2m_ C Max_T_2m Mean_rel_humidity Mean_Wind Max_wind Sunshine_hours cloud_amount Rain_mm Air_press_hPa 10035 20071230 3 0 2.2 4.1 6.6 90.8 3 11.5 2.3 4.7 0.8 1009.9 10035 20071229 3 3.4 3.9 5.3 6.7 86 4 16.7 0.1 7.5 1.6 1002.6 Achtung: Zeilenumbrüche nur hier, nicht in der Datei! CAU, Sommersemester 2008 4-3

Übung Lesen Sie diese Daten ein und speichern Sie die eingelesenen Werte alle in einem array. Überlegen Sie sich dessen Dimensionen. Achtung: Die Werte sind in der Datei zeitlich so angeordnet, dass die neuesten Werte oben stehen. Beim Einlesen können Sie diese so in das array einlesen, dass sie dort chronologisch richtig stehen. Verwenden Sie dazu eine for-schleife mit umgekehrter Indizierung: for(i=max_i; i >= 0; i ){... Da jeder Monat genau 30 Tage lang ist, können Sie zählen, und müssen nicht anhand des Datums herausbekommen, wann die Monate anfangen und wann diese wiederum aufhören. CAU, Sommersemester 2008 4-4

Übung Zum Berechnen der Monatsmittelwerte gilt: 30 1 T = mean T i 30 i= 1 Maximawerte und Minimawerte werden durch Vergleich mit jedem einzelnen Wert ermittelt. Für das Maximum gilt: double wert_max = 1000.0; // kleiner als alle Werte im Datensatz for(i=0;i<n_werte;i++) if(wert[i] > wert_max) wert_max = wert[i]; Benutzen Sie formatierte Ausgabe, um eine Tabelle in die Ausgabedatei zu schreiben. Wenn Sie die Methode setw() verwenden wollen, müssen Sie den Header iomanip.h einbinden. CAU, Sommersemester 2008 4-5

Übung Das Ergebnis sollte sein: T_mean T_min T_max 5.367 3.2 10.5 3.48 2 7 6.63 3.1 9.7 10.22 5.3 16.8 12.38 8.7 16.9 16.28 11 21.7 16.24 12.1 22.9 17.17 11.8 21.5 13.08 10.2 16.2 8.867 3.6 12.8 4.957 0.4 12.1 3.443 4.6 9.5 Ergänzungen: Adaptieren Sie Ihr Programm so, das es auch Min-Max- Mean Werte für die Luftfeuchte berechnet. Adaptieren Sie Ihr Programm so, das es die Monate anhand des Datums erkennt. CAU, Sommersemester 2008 4-6

Lösung #include <cstdlib> #include <iostream> #include <fstream> #include <iomanip> using namespace std; int main(int argc, char *argv[]) { /* Programm zum Einlesen von Wetterdaten auf Tagesbasis; Berechnung von Monatsmittelwerten der Temperatur */ Dateninput File: Schleswig.txt Format steht in erster Zeile Das Format ist angepass, um die Übung zu erleichtern: Jeder Monat hat 30 Tage, es stehen Werte für 12 Monate zur Verfügung In der Datei stehen 14 Spalten double data[360][14]; // Feld fuer die eingelesenen Klimadaten auf Tagesbasis: 12*30, 14 double wert; // Variable zum Einlesen int i, j, k, d=0; // Zählindex double T_min, T_max, T_mean; // Minimum, Maximum und Mittelwert der Temperatur string name_string; // string zum Einlesen der Titelzeile string monatsnamen[] = {" Januar", " Februar", " Maerz", " April", " Mai", " Juni", " Juli", " August", " September", " Oktober", " November", " Dezember"; ifstream klima_in; // Eingabedateien ofstream mklima_out; // Ausgabedatei CAU, Sommersemester 2008 4-7

/* Öffnen der Eingabedatei */ klima_in.open("schleswig.txt"); if(!klima_in) { cout << "Fehler beim Oeffnen der Datei schleswig.txt"; return 0; Lösung /* Öffnen der Ausgabedatei */ mklima_out.open("schleswig_monatsmittel.txt"); if(!mklima_out) { cout << "Fehler beim Oeffnen der Datei schleswig_monatsmittel.txt"; return 0; // Initialisierung des arrays data for(i=0;i<360;i++) for(j=0;j<14;j++) data[i][j] = 0.0; /* Einlesen der Datei mit den Klima Tageswerten */ // Einlesen erste Zeile: 14 namen je als string for(j=0;j<14;j++){ klima_in >> name_string; cout << name_string <<" "; cout << endl; // Einlesen der Tageswerte // Die Werte werden von oben nach unten aus der Datei gelesen, // aber von unten nach oben in das array data eingespeichert, // damit sie chronologisch richtig vorliegen for(i=360 1;i>=0;i ){ for(j=0;j<14;j++){ klima_in >> data[i][j]; CAU, Sommersemester 2008 4-8

Lösung // Schliessen der Eingabedatei klima_in.close(); // Testausgabe fuer richtiges Einlesen; erste und letzte Zeile ausgeben for(i=0;i<360;i++){ for(j=0;j<14;j++){ if(i==0 i==359) cout << data[i][j] << " "; if(i==0 i==359) cout << endl; cout << endl << endl; // Berechnung der Min, Max und Mittel Wertre für die Temperatur: Spalte 6 (j=5) für die Feuchte Spalte 8 (j=7) // Schleife über Temperatur und Feuchte index k for(k=0;k<2;k++){ if(k==0){ // Berechnung der Temperatur d = 5; cout << " Monat" << " T_mean" << " T_min" << " T_max" << endl; mklima_out << " Monat" << " T_mean" << " T_min" << " T_max" << endl; if(k==1){ // Berechnung der Feuchte d = 7; cout << " Monat" << " F_mean" << " F_min" << " F_max" << endl; mklima_out << " Monat" << " F_mean" << " F_min" << " F_max" << endl; CAU, Sommersemester 2008 4-9

Lösung for(i=0;i<12;i++){ // 12 Monate T_min = 1000; // Startwert für Minimale Temperatur hochsetzen, < Vergleich T_max = 1000; // Startwert für Maximale Temperatur klein setzen, > Vergleich T_mean = 0.0; // Tageswerte werden aufaddiert, Startwert = 0 for(j=0;j<30;j++){ wert = data[i*30+j][d]; if(wert < T_min) T_min = wert; // neue minimale Temperatur gefunden if(wert > T_max) T_max = wert; // neue minimale Temperatur gefunden T_mean += wert; T_mean = T_mean/30.0; // Berechnung des Monatsmittels der Temperatur // Ausgabe auf Bildschirm cout.precision(4); cout << monatsnamen[i] << setw(10) << T_mean << setw(10) << T_min << setw(10) << T_max << endl; // Ausgabe in Datei mklima_out.precision(4); mklima_out << monatsnamen[i] << setw(10) << T_mean << setw(10) << T_min << setw(10) << T_max << endl; // end for(i cout << endl; mklima_out << endl; mklima_out.close(); system("pause"); return EXIT_SUCCESS; CAU, Sommersemester 2008 4-10