Kategori C

GIP Aufgabe 6

Mittwoch, November 16th, 2005
// aufgabe_6.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//
#include "stdafx.h"
#include  

using namespace std; 

int addieren(int a, int b);
int subtrahieren(int a, int b);
int multiplizieren(int a, int b);
int dividieren(int a, int b);

double addieren(double a, double b);
double subtrahieren(double a, double b);
double multiplizieren(double a, double b);
double dividieren(double a, double b);


int main()
{
	char c,d;
	int a,b=0;
	double e, f=0, summe;

	do
	{
		do
		{
			cout << "Minirechner: (i)nteger oder (d)ouble ? ";
			cin >> d;
		}while(d != 'i' && d != 'd');
	
		cout << "Zahl 1 = ? ";
		if(d == 'i')
			cin >> a;
		else
			cin >> e;

		do
		{
			cout << "Rechenart (+ - * /) ? ";
			cin >> c;
		} while (c != 43 && c != 45 && c != 42 && c != 47); 
		
		if(d == 'i')
		{
			do
			{
				cout << "Zahl 2 = ? ";
				cin >> b;
			}while(c == 47 && b == 0);
	
			switch(c)
			{
				case '+':
						summe = addieren(a,b);
					break;
				case '-':
						summe = subtrahieren(a,b);
					break;
				case '*':
					summe = multiplizieren(a,b);
					break;
				case '/':
					summe = dividieren(a,b);
					break;
			}
			cout << a << c << b << "=" << summe;
		}
		else
		{
			do
			{
				cout << "Zahl 2 = ? ";
				cin >> f;
			}while(c == '/' && f == 0);

			switch(c)
			{
				case '+':
						summe = addieren(e,f);
					break;
				case '-':
						summe = subtrahieren(e,f);
					break;
				case '*':
					summe = multiplizieren(e,f);
					break;
				case '/':
					summe = dividieren(e,f);
					break;
			}
			cout << e << c << f << "=" << summe;
		}
		
		cout << "\n\nNoch einmal (j/n)? ";
		cin >> c;
	}
	while(c=='j');

	return 0;
}

int addieren(int a, int b)
{
	return a + b;
}
int subtrahieren(int a, int b)
{
	return a - b;
}

int multiplizieren(int a, int b)
{
	return a * b;
}

int dividieren(int a, int b)
{
	if(b)
		return a / b;
	return 0;
}

double addieren(double a, double b)
{
	return a + b;
}
double subtrahieren(double a, double b)
{
	return a - b;
}

double multiplizieren(double a, double b)
{
	return a * b;
}

double dividieren(double a, double b)
{
	if(b)
		return a / b;
	return 0;
}

GIP Aufgabe 5

Mittwoch, November 9th, 2005

Funktionen in C++
Schreiben Sie die folgenden C++-Funktionen und rufen Sie sie in main() auf. Benutzen Sie das Hilfsblatt „Funktionen“ (Download im GIP-Vorlesungsbereich).

  1. Schreiben Sie eine Funktion hw(), die keine Argumente und keinen Rückgabewert hat, sondern lediglich die Zeichenkette „Hello world!“ auf dem Bildschirm ausgibt.

    Testlauf:
    Hello world!

  2. Schreiben Sie eine Funktion cbv1(), die ein Argument vom Typ double und keinen Rückgabewert hat. Der Wert des Argumentes ist von der Funktion auf dem Bildschirm auszugeben. Rufen Sie die Funktion mit dem konstanten Parameter 12.6 auf.
    Testlauf: Wert von a in cbv1 = 12.6
  3. Rufen Sie die Funktion cbv1() auf, indem Sie als Parameter eine Variable übergeben, die Sie vorher mit dem Wert 7.1234 belegt haben.

    Testlauf:
    Wert von a in cbv1 = 7.1234

  4. Schreiben Sie eine Funktion cbv2(), die ein Argument vom Typ double und einen Rückgabewert vom Typ char hat. Die Funktion soll das Zeichen ’p’ zurückgeben, wenn eine positive Integerzahl als Parameter übergeben wird und das Zeichen ’n’ bei einer negativen Integerzahl. Rufen Sie die Funktion einmal mit einer positiven und einmal mit einer negativen Zahl auf und geben Sie das Ergebnis in main() auf dem Bildschirm aus.

    Testlauf:
    Ergebnis von cbv2 mit Parameter -23: n
    Ergebnis von cbv2 mit Parameter +10: p

  5. Schreiben Sie eine Funktion cbr1(), die die Float-Variable f im Hauptprogramm auf den konstanten Wert 12.345 setzt. Geben Sie den Wert von f in main() vor und nach dem Aufruf der Funktion aus.

    Testlauf:
    Vor dem Aufruf von cbr1: f = 0
    Nach dem Aufruf von cbr1: f = 12.345

  6. Schreiben Sie eine Funktion cube(), die abhängig von der Anzahl der übergebenen Parameter den Rauminhalt eines Quaders oder die Fläche eines Rechtecks berechnet und als Wert zurückgibt. Argumente sind Länge, Breite und Höhe. Definieren Sie die Höhe als Default-Parameter mit dem Defaultwert 1, so dass beim Weglassen der Höhe beim Funktionsaufruf mit 1 gerechnet und somit der Wert für die Fläche zurückgegeben wird. Rufen Sie die Funktion mit Beispielwerten auf. Die Daten sind innerhalb der Funktion am Bildschirm auszugeben, das Ergebnis in main().

    Testlauf:
    Daten (L: 10 B: 11 H: 12)
    Rauminhalt: 1320
    Daten (L: 10 B: 11 H: 1)
    Flaeche: 110

Überprüfen Sie die Werte der Variablen in den Aufgaben b) bis f) mit dem Debugger!

#include "stdafx.h"

using namespace std;

void hw(void);
void cbv1(double i = 12.6);
char cbv2(double d = 0);
void cbr1(double &d);
int cube(int l,int b,int h=1);

int main(void)
{
	// Aufgabe A
	hw();

	//Aufgabe B
	cbv1();

	//Aufgabe C
	cbv1(7.1234);

	// Aufgabe D
	double d = -23;
	cout << "Ergebnis von cbv2 mit Parameter " << d << ": " << cbv2(d) << endl;
	d = 10;
	cout << "Ergebnis von cbv2 mit Parameter +" << d << ": " << cbv2(d) << endl;

	// Aufgabe E
	d = 0;
	cout << "Vor dem Aufruf von cbr1: f = " << d << endl;
	cbr1(d);
	cout << "Nach dem Aufruf von cbr1: f = " << d << endl;

	// Aufgabe F
	int l=10,b=11,h=12;
/*
	cout << "Daten (L: "<< l << " B: " << b << " H: " << h <<")" << endl << "Rauminhalt: " << cube(l,b,h)  << endl;
	h=1; 
	cout << "Daten (L: "<< l << " B: " << b << " H: " << h <<")" << endl << "Flaeche: " << cube(l,b) << endl;	
*/

	cout << cube(l,b,h) << endl;
	cout << cube(l,b) << endl;

	return 0;
}

void hw(void)
{
	cout << "Hello world!" << endl;
}

void cbv1(double i)
{
	cout << "Wert von a in cbv1 = " << i << endl;
}

// Aufgabe D
char cbv2(double d)
{
	char zeichen;

	if(d < 0)
	{
		zeichen = 'n';
	}
	else if(d > 0)
	{
		zeichen = 'p';
	}
	//	cout << "Ergebnis von cbv2 mit Parameter " << d << ": " << zeichen;

	return zeichen;
}

void cbr1(double &d)
{
	d = 12.345;
}

int cube(int l,int b,int h)
{
	if(h==1)
	{
		cout << "Daten (L: "<< l << " B: " << b << " H: " << h <<")" << endl << "Flaeche: ";
	}
	else 
	{
		cout << "Daten (L: "<< l << " B: " << b << " H: " << h <<")" << endl << "Rauminhalt: ";
	}

	return l*b*h;
}

GIP Aufgabe 4

Mittwoch, November 2nd, 2005

Schreiben Sie ein Zahlenratespiel in C++.
Der Anwender soll eine vom Programm vorgegebene Zahl raten. Dazu wird er zunächst nach dem Level gefragt, auf dem er spielen möchte. Danach beginnt das Raten. Der Anwender soll dabei vom Rechner mit den Hinweisen „Die eingegebene Zahl ist zu klein“ oder „Die eingegeben Zahl ist zu gross“ unterstützt werden. Sobald er die richtige Zahl geraten hat, sollen die Zahl und die Anzahl seiner Versuche auf dem Bildschirm ausgegeben werden.

Hinweise:

Es gibt 3 Level, die den Zahlenbereich angeben, aus dem die zu ratende Zahl
gebildet wird
Level 1: 1 bis 10
Level 2: 1 bis 100
Level 3: 1 bis 1000
Falsche Eingaben sind abzufangen!
Die zu ratende ganze Zahl ist als Zufallszahl zu generieren. Dazu sind am Beginn
des Programms zunächst folgende Bibliotheken einzubinden:

#include 
#pragma comment(lib, "winmm.lib")

Das Bilden der Zufallszahl in Programm erfolgt dann in zwei Schritten:
1. srand(timeGetTime()); // Startwert für Zufallszahlgenerierung
2. // Beispiel: Zufallszahl zwischen 1 und 100 generieren:
zahl = (rand()%100) + 1;

#include "stdafx.h"
#include 
#include 

#pragma comment(lib, "winmm.lib")

using namespace std;

int main(void)
{
	int level=0,i=0,zufall,wert=0;

	do
	{
		cout << "Welchen Level moechten Sie spielen? (1, 2 oder 3) ";
		cin >> level;
	} while (level > 3 || level <= 0);

	switch(level)
	{
		case 1:
			level = 10;
			break;

		case 2:
			level = 100;
			break;

		case 3:
			level = 1000;
			break;
	}

	srand(timeGetTime());
	zufall = (rand()%level) + 1;

	for(;;i++)
	{
		cout << "Zahl = ? (1 bis " << level << ") ";
		cin >> wert;

		if(wert < zufall)
			cout << "Die eingegebene Zahl ist zu klein!" << endl << endl;
		else if(wert > zufall)
			cout << "Die eingegebene Zahl ist zu gross!" << endl << endl;
		else
			break;
	}

	cout << "Richtig! Die Zahl lautet " << wert << endl << "Sie haben " << i << " Versuche gebraucht." << endl << endl;

	return 0;
}

GIP Aufgabe 3

Mittwoch, Oktober 26th, 2005
#include "stdafx.h"

using namespace std;

int main()
{
	int r, a;
	const double pi = 3.1415926535897932384626433832795;
	char jn;

	bool ausgabe;

	do
	{
		cout << endl << "r = ? ";
		cin >> r;
		cout << "Winkel (Grad) = ? ";
		cin >> a;

		if(a < 0)
		{
			cout << endl << "Fehler bei der Eingebe des Winkels! Nur positive Werte erlaubt.";
		} 
		else if(a > 360)
		{
			cout << endl << "Fehler bei der Eingebe des Winkels! Keine Werte groesser 360 erlaubt.";
		} 
		else if(r < 0)
		{
			cout << endl << "Fehler bei der Eingabe von r! Nur positive Werte erlaubt.";
		}
		else
		{
			cout << endl << "Flaeche des Kreissektors = " 
                               << ((double)a / 360) * (double)r * (double)r * pi;
		}

		cout << endl << endl << "Berechnung wiedeholen? (ja=j / nein=n)";
		cin >> jn;
	}while(jn=='j');

	return 0;
}

GIP Aufgabe 2

Mittwoch, Oktober 19th, 2005

Schreiben Sie ein Programm zur Lösung der quadratischen Gleichung ax2 + bx + c = 0 Die Koeffizienten a, b und c sollen von der Tastatur eingelesen werden. Ist die Diskriminante (b2 -4ac) negativ, gebe man den Text „Keine reellen Loesungen“ auf dem Bildschirm aus. Ist die Diskriminante nicht negativ, berechne man die Lösungswerte x1 sowie x2 und gebe sie auf dem Bildschirm aus.
Für a ≠ 0 gilt:

Das Programm soll auf Anfrage wiederholt ausgeführt werden können, vgl. Testlauf.
Hinweise:
Die Funktion double sqrt(double x) liefert die Quadratwurzel von x. Sie ist in der
Datei deklariert.

Testdaten:

  1. a=1, b=2, c=-3
  2. a=4, b=8, c=0
  3. a=1, b=2, c=3
  4. a=0, b=8, c=4
#include "stdafx.h"
#include "math.h"
#include 

using namespace std;

int main(void)
{
	double a, b, c;
	for(char w='j'; w=='j'; )
	{
		cout << endl << "Loesung der quadratischen Gleichung" << endl <>a;

		// Überprüfen ob a ungleich 0
		if (a != 0)
		{
			cout << "b = ? ";
			cin >>b;
			cout << "c = ? ";
			cin >>c;

			// überprüfen ob diskriminante nicht negativ
			if ( ( (b*b) -4 * a * c ) >= 0 )
			{
				cout << endl << "Loesung:" << endl << "x1 = " 
                                       << (0.5 * a * (-b+sqrt((b*b)-4*a*c))) 
                                       << endl << "x2 = " 
                                       << ( 0.5 * a * (-b -sqrt( (b*b) -4 * a * c) )) 
                                       <> w;
	}
        return 0;
}