Kategori C

GIP 4

Montag, Oktober 29th, 2007
#include 
#include 

using namespace std;

int game(int max);

int main (void)
{
	int level=0;

	while(true)
	{
		cout << "Welchen Level moechten Sie spielen? (1, 2 oder 3) ";
		cin >> level;

		switch(level)
		{
			case 1:
				return game(10);			
				break;
			case 2:
				return game(100);
				break;
			case 3:
				return game(1000);
				break;
			default:
				break;
		}
	}
	return 0;
}

int game(int max)
{
	int ip=0, zahl=0;

	srand ( time(NULL) );
	zahl = rand()%max + 1;

	for(int i=1; ip != zahl; i++ )
	{
		cout << "Zahl = ? (1 bis " << max << ") ";
		cin >> ip;
		
		if(ip < zahl)
		{
			cout << "Die eingegebene Zahl ist zu klein!" << endl << endl;
		}
		else if (ip > zahl)
		{
			cout << "Die eingegebene Zahl ist zu gross!" << endl << endl;
		}
		else if(ip == zahl)
		{
			cout << "Richtig! Die Zahl lautet " << zahl << endl <<"Sie haben " << i << " Versuche gebraucht." << endl << endl;
			return i;
		} 
		else 
			--i;
	}
	return 0;
}

GIP 3

Montag, Oktober 22nd, 2007
#include 

using namespace std;

int main (void)
{
	int lz=0;
	double ak=0, zs=0, sume=0; 

	cout << "Anfangskapital   = ? ";
	cin >> ak;
	
	cout << "Zinssatz (%)     = ? ";
	cin >> zs;

	cout << "Laufzeit (Jahre) = ? ";
	cin >> lz;

	sume = ak;
	for(int i=1; i <= lz; i++)
	{
		sume = sume * (zs / 100) + sume;
		cout << "Kapital am Ende von Jahr " << i << ": " << sume << " EURO" << endl;
	}
	cout << endl << "Das Kapital erhoehte sich waehrend der Laufzeit um "<< sume - ak << " EURO" << endl;

	return 0;
}

GIP 2

Freitag, Oktober 19th, 2007

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:

Hinweise:

  • Überlegen Sie, welchen Datentyp die Variablen haben sollten.
  • Denken Sie daran, dass auch Zahlenkonstanten (wie 1, 2 oder 4) einen passenden
  • Datentyp haben müssen.

  • Berechnen Sie zuerst die Diskriminante und speichern Sie das Ergebnis in einer Variablen. Prüfen Sie danach, ob die Diskriminante nicht negativ ist und berechnen Sie nur in diesem Fall die Wurzel. Sonst geben Sie die Meldung laut Aufgabenstellung aus.
  • Die Funktion double sqrt(double x) liefert die Quadratwurzel von x. Sie ist in der Datei <math.h> deklariert. Diese muss also mit include eingebunden werden. Für den Eingabewert a=0 muss die Division durch Null abgefangen werden, vgl. Testlauf 4!

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 
#include 

using namespace std;

int main (void)
{
	int a=0, b=0, c=0, term1=0;
	double x1=0, x2=0;
	cout << "Loesung der quadratischen Gleichung" << endl;

	cout << "a = ? ";
	cin >> a;
	
	if(a == 0)
	{
		cout << "Keine Loesung (Division durch Null)" << endl;
		return 0;
	}

	cout << "b = ? ";
	cin >> b;
		
	cout << "c = ? ";
	cin >> c;


	term1 = ( b * b ) - ( 4 * a * c);
	if(term1 < 0)
	{
		cout << "Keine reellen Loesungen" << endl;
		return 0;
	}

	x1 = (1.0 / (2.0 * (double)a ) ) * ( (double)(b * -1) + sqrt( term1 ) );
	x2 = (1.0 / (2.0 * (double)a ) ) * ( (double)(b * -1) - sqrt( term1 ) );
	cout << "Loesung: " << endl << "x1 = " << x1 << endl << "x2 = " << x2 << endl << endl;

	return 0;
}

GIP Aufgabe 8

Mittwoch, November 30th, 2005
#include "stdafx.h"
#include 
#include 

using namespace std;

void datumEinlesen(short &tag, short &monat, short &jahr);
short codewertMonat(short monat, short jahr);
bool schaltjahr(short jahr);
string ermittleWochentag(short ergebnis);

int main()
{	
	short tag, monat, jahr;
	jahr += jahr / 4;
	datumEinlesen(tag, monat, jahr);

	return 0;
}
void datumEinlesen(short &tag, short &monat, short &jahr)
{
	cout << "Datum eingeben: \nTag = ? ";
	cin >> tag;

    cout << "Monat = ? ";
	cin >> monat;

	cout << "Jahr = ?  ";
	cin >> jahr;
}

short codewertMonat(short monat, short jahr)
{
	switch(monat)
	{
		//September, Dezember 1 		
		case 9:
		case 12:
			monat += 1;
			break;

		//April, Juli 2 
		case 4:
		case 7:
			monat += 2;
			break;

		//Januar, Oktober 3
		case 1:
			if(schaltjahr(jahr))
				monat -= 1;
		case 10:
			monat += 3;
			break;
		
		//Mai 4
		case 5:
			monat += 4;
			break;
		//August 5
		case 8:
			monat += 5;
			break;
		
		//Februar, März, November 6
		case 2:
			if(schaltjahr(jahr))
				monat -= 1;
		case 3:
		case 11:
			monat += 6;
			break;

		default:
			//Juni 0 
			break;
	}
	return monat;
}

string ermittleWochentag(short ergebnis)
{
	string a[7];
	a[0] = "Donnerstag";
	a[1] = "Freitag";
	a[2] = "Samstag";
	a[3] = "Sonntag";
	a[4] = "Montag";
	a[5] = "Dienstag";
	a[6] = "Mittwoch";

	return a[ergebnis];
}

bool schaltjahr(short jahr)
{
	//if(jahr%4 == 0 && jahr%100!=0 || jahr%400==0)
	if(jahr%4 == 0)
	{
		if(jahr%100==0)
		{
			if(jahr%400==0)
				return true;
		}
		else
			return true;
	}
	return false;
}

GIP Aufgabe 7

Mittwoch, November 23rd, 2005
#include "stdafx.h"
#include 

using namespace std; 

int main()
{
	int a[20] = {0};
	char text[201];
	int wl = 0;

	cout << "Text = ? ";
	cin.get(text,200);

	for(int i = 0;true;i++)
	{
		if(text[i] == ' ' || text[i] == 32 || text[i] == '\0')
		{
			if(wl>20)
				wl=20;

			if(wl>0)
				a[wl - 1] = a[wl - 1] + 1;
			wl=0;
		}
		else 
			wl++;
		
		if(text[i] == '\0')
			break;
	}
    
	for(int i=0; i < 20; i++)
	{
		if(a[i] != 0)
		{
			if(i < 10)
				cout << " ";

			cout << i + 1 << " "; 
			for(int ii=0;ii < a[i];ii++)
			{
				cout << "#";	
			}
			cout << endl;
		}
	}

	return 0;
}