Schreiben Sie ein Programm, welches folgende Bestandteile besitzt. Verwenden Sie diese Elemente geeignet, um eine Sortierung des Feldes zu erzielen!

Ähnliche Dokumente
Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Angewandte Mathematik und Programmierung

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik

Verwenden Sie für jede Aufgabe die C++ IDE von Eclipse (pro Aufgabe ein Projekt).

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Klausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: F Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

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

Lösungshinweise zum Übungsblatt 10: Programmieren in C (WS 2018/19)

Hochschule Darmstadt Informatik-Praktikum SS 2018 EIT Bachelor 3. Aufgabenblatt Funktionen - Unterprogramme

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

Kontrollstrukturen -- Schleifen und Wiederholungen

Übung HP Musterlösung zu Aufgabe 9:

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

4 Schleifen und Dateien

Programmieren in C/C++ und MATLAB

Musterlösung zur 6. Übung

Einführung in die Programmierung Wintersemester 2011/12

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

Variablen, Konstanten und Datentypen

Grundlagen der Informatik 2. Typen

Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente

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

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

C++ Teil Schleifen. Man kann bestimme Anweisungen in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen.

Einführung in die Programmierung

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

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

Abschlußtest Programmieren 30. Juni 2017 Name: Punkte von 32: Gruppe: Haase-Di Haase-Do Stanek-Di Stanek-Do

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

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

Grundlagen der Informatik 6. Arrays I

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

Ziele sind das Arbeiten mit Funktionen (Modularisierung, Parameterübergabe), sowie - Reihentyp (Array)

Auswahlen (Selektionen)

2.2 Der Algorithmus von Knuth, Morris und Pratt

Wiederholung, Abbruch von Schleifen, switch-anweisung Datentypen, char, formatierte Ausgabe

Klausur in Programmieren

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

5. Elementare Befehle und Struktogramme

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

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

Klausur Programmieren 1 SS 2017

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

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

Klausur in Programmieren

C Spickzettel: Was haben wir bisher von C verwendet?

Vergleich verschiedener OO-Programmiersprachen

Hochschule Darmstadt Informatik-Praktikum SS 2018 EIT Bachelor 4. Aufgabenblatt Dateiverarbeitung, Funktionen, Records

Klausur Informatik WS 2012/13

Programmieren in C/C++ und MATLAB

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

Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.

Klassen. C++ Übung am 02. Juni 2016

Klausur in Programmieren

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz

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

Informatik I (D-ITET)

Klausur Informatik I WS 2006/2007

Klausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: E Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Grundlagen der Informatik 4. Kontrollstrukturen I

Angewandte Mathematik und Programmierung

9. Vektoren. (auch Felder/array)

1.8.5 Wiederholungen. Beispiele Unendliche Schleife: 1.8 Kontrollstrukturen 75. ( Bedingung ) AnweisungOderBlock. ja Anweisung. Bedingung erfüllt?

virtual Wertpapier& operator=(const Wertpapier&); // VIRTUELLE ZUWEISUNG protected: static enum {wortfeldlaenge = 20}; char* name_z; double kurs; };

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

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

Algorithmische Bioinformatik 1

GI Vektoren

Ein- und Ausgabe (I/O)

Klausur in Programmieren

Programmiertechnik 1 FOR-SCHLEIFEN

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

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

Klausur in Programmieren

1.8 Kontrollstrukturen 73. default : ziffer = 0; if (ziffer > 0) { cout << "Ziffer = " << ziffer; else { cout << "keine römische Ziffer!

Grundlagen der Informatik

Effiziente Algorithmen 2

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

Programmieren in C++

Musterlösung: 12. Jgst. 2. Kursarbeit Datum: Fach: Informationsverarbeitung (LK)

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

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden

Polymorphismus 44. Function.hpp. #include <string>

Arrays, Zeiger und Funktionen (call by reference)

Annehmende Schleife do while

Programmieren in C (Übungsblatt 1)

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen

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

Einführung in die Programmierung Wintersemester 2008/09

Programmieren in C (Übungsblatt 1)

Programmieren in C (Übungsblatt 1)

Übung Datenstrukturen. Sortieren

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

Transkript:

Übung: Felder & Sortieren Schreiben Sie ein Programm, welches folgende Bestandteile besitzt Anlegen eines Feldes mit z.b. 10 ganzzahligen Elementen und Abfrage dieser Werte von der Tastatur Funktion void print(int Feld[ ]) die alle Feldelemente z.b. in einer Zeile ausgibt Funktion int minindex(int Feld[ ], int Ind1, int Ind2), welche den Index (!) des Feldelements mit dem kleinsten Wert im Bereich der Indices Ind1 Ind2 liefert Funktion void swap(int Feld[ ], int Ind1, int Ind2), welche zwei durch Indices angegebene Feldelemente miteinander vertauscht Verwenden Sie diese Elemente geeignet, um eine Sortierung des Feldes zu erzielen! Tip: Eine Skizze dieses Sortierverfahrens ist sicher hilfreich 1

Sortieren #include "stdafx.h" #include <stdlib.h> #include <iostream> using namespace std; const int FeldGr = 100000; void print(int a[]) for (int i=0; i<feldgr; i++) cout << a[i] << " "; int _tmain(int argc, _TCHAR* argv[]) int meinfeld[feldgr]; // = 9, 4, 6, 1, 3, 2, 8, 7, 5, 0 ; int mi; srand(4711); for (int i=0; i<feldgr; i++) meinfeld[i] = rand() % 1000; cout << endl; int minindex(int a[], int Ind1, int Ind2) int mi=ind1; for (int i=ind1+1; i<ind2; i++) if (a[i] < a[mi]) mi = i; return mi; //print(meinfeld); for (int i=0; i<feldgr-1; i++) mi = minindex(meinfeld, i, FeldGr); swap(meinfeld, i, mi); //print(meinfeld); return 0; void swap(int a[], int Ind1, int Ind2) int t = a[ind1]; a[ind1] = a[ind2]; a[ind2] = t; 2

Übung: Felder & Analyse von Feldinhalten Schreiben Sie ein Programm, welches folgende Bestandteile besitzt Anlegen eines Feldes mit z.b. 100 ganzzahligen Elementen und Auffüllen dieser Werte durch Zufallszahlen srand(), rand() im Wertebereich von 0..10 Funktion void Feld_scannen(int ZahlenFeld[], int ScanFeld[]), welche das Zahlenfeld hinsichtlich der Häufigkeit der generierten Zufallszahlen untersucht Funktion void ScanFeldAusgeben(int ScanFeld[ ]) die alle Feldelemente, d.h. die Häufigkeiten z.b. in einer Zeile ausgibt Anregung: Sie können die Ausgabe auch als horizontale Balkendiagramme durchführen 0: ******** 1: *** 2: ***** 3

4

Zufallsgütetest #include "stdafx.h" #include <iostream> #include <stdlib.h> using namespace std; int _tmain(int argc, _TCHAR* argv[]) int zahlen[zmax], scan[smax]; int i; const int zmax = 100000; const int smax = 20; void FeldScannen(int z[], int s[]) for (int i=0; i<zmax; i++) //switch(z[i]) // //case 0: null=null+1; break; //case 0: s[0] = s[0]+1; // s[0]++; srand(4711); for (i=0; i<zmax; i++) zahlen[i] = rand() % smax; for (i=0; i<smax; i++) scan[i]=0; FeldScannen(zahlen, scan); ScanFeldAusgeben(scan); return 0; s[ z[i] ] ++; void ScanFeldAusgeben(int s[]) for (int i=0; i<smax; i++) cout << i << ": " << s[i] << endl; 5

6

Übung: Strings, Umkopieren, Analyse, Zeiger Schreiben Sie ein Programm, welches folgende Aufgaben löst Abfragen einer Zeile von der Tastatur cin.getline(), siehe Hilfe Umkopieren der Eingabe in ein anderes Feld gleicher Länge, hierbei sollen alle Kleinbuchstaben in Großbuchstaben konvertiert werden void CopyToUpper(char *ziel, char *quelle) Analyse dieser Großbuchstabenzeile wie in der vorherigen Übungsaufgabe hinsichtlich der Häufigkeit der vorkommenden Zeichen void Analyse(char *string, int scan[ ]) Wenn als Text "stop" eingegeben wird, soll das Sammeln der Daten aufhören und die Häufigkeiten der Zeichen ausgegeben werden Hinweis: Verwenden Sie beim Umkopieren und der Analyse Zeiger für den Felddurchlauf! 7

Strings, Zeichenzählen, Zeiger #include "stdafx.h" #include <iostream> using namespace std; void CopyToUpper(char *ziel, char *quelle) while (*quelle!= '\0') if (*quelle >= 'a' && *quelle<='z') *ziel = *quelle-'a'+'a'; else *ziel = *quelle; ziel++; quelle++; *ziel = '\0'; void Analyse(char *string, int scan[]) while (*string!= '\0') if (*string >= 'A' && *string <= 'Z') scan[ *string -'A' ] ++; string++; int _tmain(int argc, _TCHAR* argv[]) char kfeld[100], gfeld[100]; int scanfeld['z'-'a'+1]; for (int i=0; i<26; i++) scanfeld[i] = 0; while (1) cin.getline(kfeld, 100); if (strcmp(kfeld,"stop") == 0) break; CopyToUpper(gFeld, kfeld); Analyse(gFeld, scanfeld); cout << "Zeile: " << gfeld << endl; for (char c='a'; c<= 'Z'; c++) cout << c << ": " << scanfeld[c-'a'] << endl; return 0; 8

Spiel "Hangman" Realisieren Sie das bekannte Wortratespiel auf dem Computer. Zeigen Sie zunächst von einem zu ratenden Wort für die einzelnen Zeichen jeweils nur Striche an. Anschließend fragen Sie nach Buchstaben. Sollten die Buchstaben im zu ratenden Wort vorkommen, so werden die entsprechenden Positionen aufgedeckt, d.h. an dieser Stelle werden die tatsächlichen Zeichen angezeigt. Durch Eingabe eines Zeichens (z.b. '#' welches dann in keinem Wort vorkommen darf) kann das Raten abgebrochen werden und die Eingabe des vollständigen Worts ist nun möglich. Stimmt das eingegebene Wort mit dem verdeckten Wort überein, ist das Spiel zu Ende, ansonsten wird wieder in den obigen Buchstabenratemodus zurückgekehrt. Beispiel:Zu ratendes Wort: "Hangman" (verdeckt) ------- Eingabe (a) -a ---a - Eingabe (g) -a -g -a - Eingabe (e) -a -g -a - Eingabe (n) - a n g - a n Eingabe (#) ~ Ende Buchstabenraten Eingabe: Hangman richtig geraten / bzw. Zurückkehren zum Buchstabenraten Tipp: Legen Sie sich eine Tabelle von zu ratenden Wörtern an und wählen Sie aus dieser Tabelle zufällig einen Eintrag für das Ratewort: char *ratewoerter[ ]="Wort1", "Wort2", "Wort3", ; Hinweis: Verwenden Sie für das Durchlaufen der Zeichenkette(n) wieder Zeiger, wo immer dies sinnvoll ist! 9

Hangman (Ausschnitt) #include "stdafx.h" #include <iostream> #include <stdlib.h> using namespace std; void InitGeraten(char *gw, char *w) //int len=strlen(w); //for (int i=0; i<len; i++) // gw[i]='-'; while (*w!= '\0') *gw='-'; gw++; w++; *gw='\0'; bool ZeichenEintragen(char *gw, char *w, char ch, bool &ez) bool fertig=true; ez = false; //ch = toupper(ch); int _tmain(int argc, _TCHAR* argv[]) char *ratewoerter[] = "Test", "Computer", "Hangman", "Otto"; char geraten[20]; char *wort, ch; bool ExZeichen, fertig; int fehlversuche=0; srand(4711); wort = ratewoerter[rand() % 4]; InitGeraten(geraten, wort); do cout << "Wort: " << geraten << " Zeichen? "; cin >> ch; fertig = ZeichenEintragen(geraten, wort, ch, ExZeichen); if (!ExZeichen) fehlversuche++; cout << fehlversuche << " "; while (!fertig); return 0; while (*w!= '\0') if (toupper(*w) == toupper(ch)) *gw=ch; ez = true; else if (*gw == '-') fertig = false; w++; gw++; return fertig; 10

Übungsaufgabe Schiffe versenken In dieser Übungsaufgabe soll das bekannte "Schiffe versenken"-spiel auf einem 10x10 Kästchen großen Spielfeld realisiert werden. Hierbei darf der Computer auf einem Spielfeld Schiffe platzieren (ein Schiff, welches 4 Kästchen groß ist, zwei 3er-Schiffe und drei 2er-Schiffe). Die Schiffe müssen von dem Verfahren zufällig platziert werden, jedoch natürlich so, dass sich zwei Schiffe nicht berühren, es muss also mindestens ein Kästchen zwischen zwei Schiffen frei bleiben). Im folgenden können Sie raten, wo sich die Schiffe befinden könnten. Hierzu können Sie Koordinaten eingeben und der Computer hat die Aufgabe, diese Position folgendermaßen zu bewerten: Wasser - knapp daneben Treffer - Treffer, versenkt Neben dieser Information soll nach jedem Raten ein aktualisiertes Spielfeld angezeigt werden, in dem schon geratene Positionen, getroffene Schiffe, etc. geeignet dargestellt werden. Hinweise: Überlegen Sie sich bitte zuerst genau (!), welche Informationen Sie für die einzelnen Stadien des Spiels (Initialisierung, Raten) benötigen und wie Sie diese am besten zur Verfügung stellen können, d.h. welche Informationen werden für ein Schiff benötigt, um alle Zustände beschreiben zu können, z.b. belegte Felder, vollständig versenkt?,... 11