Initial commit

This commit is contained in:
studavrije7683
2021-10-15 08:36:02 +02:00
commit d3138a4b13
89 changed files with 2898 additions and 0 deletions
@@ -0,0 +1,64 @@
#include <iostream>
using namespace std;
void printTableFor();
void printTableWhile();
void printTableDoWhile();
int main(int argc, char** argv)
{
printTableFor();
cout << endl;
printTableWhile();
cout << endl;
printTableDoWhile();
return 0;
}
void printTableFor()
{
int max = 10;
for(int i = 1; i <= max; i++)
{
for(int j = 1; j <= max; j++)
{
cout << (i*j) << "\t";
}
cout << endl;
}
}
void printTableWhile()
{
int max = 10;
int i = 1, j = 1;
while(i <= 10)
{
while(j <= 10)
{
cout << (i*j) << "\t";
j++;
}
j = 1;
cout << endl;
i++;
};
}
void printTableDoWhile()
{
int max = 10;
int i = 1, j = 1;
do
{
do
{
cout << (i*j) << "\t";
j++;
}while(j <= 10);
j = 1;
cout << endl;
i++;
} while(i <= 10);
}
@@ -0,0 +1,56 @@
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
float fahrenheit;
float tmp;
float celsius;
int schrittweite = 20;
int maximum = 300;
do
{
cout << "Fahrenheit: ";
cin >> fahrenheit;
}while(fahrenheit<=0);
tmp = fahrenheit;
cout << "Schrittweite: ";
cin >> schrittweite;
cout << "Maximum: ";
cin >> maximum;
cout << endl;
for(fahrenheit=tmp; fahrenheit <= maximum; fahrenheit+=schrittweite)
{
celsius = ((fahrenheit - 32) * 5) / 9;
cout << "Fahrenheit: " << fahrenheit << "\t| Celsius: " << celsius << endl;
}
cout << endl;
fahrenheit = tmp;
while(fahrenheit <= maximum)
{
celsius = (((fahrenheit - 32) * 5) / 9);
if( celsius <= 10)
{
cout << "Es hat " << celsius << " \tGrad und es ist kalt" << endl;
}
else if(celsius <= 20)
{
cout << "Es hat " << celsius << " \tGrad und es ist angenehm" << endl;
}
else
{
cout << "Es hat " << celsius << " \tGrad und es wird heiss" << endl;
}
fahrenheit += schrittweite;
}
return 0;
}
@@ -0,0 +1,34 @@
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main ()
{
int zahl, eingabe, versuche=0;
srand (time(NULL));
zahl = rand()%100 + 1; //Zufallszahl zwischen 0 und 99 wird generiert, daher +1, damit die Zahl zwischen 1 und 100 ist
do
{
cout << "Zahl eingeben: ";
cin >> eingabe;
if(eingabe > zahl)
cout << "Zu gross!" << endl;
if(eingabe < zahl)
cout << "Zu klein!" << endl;
versuche ++;
}
while(eingabe != zahl && versuche < 6);
if (eingabe == zahl)
cout << "Erraten!" << endl;
else
cout << "Verloren! Die gesuchte Zahl war " << zahl << endl;
system("pause");
return 0;
}
@@ -0,0 +1,37 @@
#include <cstdlib>
#include <iostream>
using namespace std ;
int main ()
{
float z1, z2, erg;
char op;
cout << "2 Zahlen mit Operator dazwischen [+ - * / ]: ";
cin >> z1 >> op >> z2 ;
cout << z1 << op << z2 << "=";
switch (op)
{
case '+':
erg = z1 + z2;
cout << erg << endl;
break ;
case '-':
cout << z1 - z2 << endl;
break ;
case '*':
cout << z1 * z2 << endl;
break ;
case '/':
if ( z2 ==0)
cout << " Division durch 0 geht nicht" << endl;
else
cout << z1 / z2 << endl;
break ;
default :
cout << " Den Operator kenne ich nicht." << endl;
}
system("pause");
return 0;
}
@@ -0,0 +1,123 @@
#include <iostream>
#include <cstdlib>
using namespace std;
int Tiernummer;
string Art;
float Gewicht;
float Einnahme;
float Tagespreis;
bool Bestand;
//Prototypen
void TierAnlegen(void);
void TierAnzeigen(void);
void TierVerkaufen(int);
// Funktion zum Anlegen
void TierAnlegen(void)
{
cout << "Bitte geben Sie die Tiernummer ein: ";
cin >> Tiernummer;
cout << endl;
cout << "Bitte geben Sie die Tierart ein: ";
cin >> Art;
cout << endl;
cout << "Bitte geben Sie das Gewicht des Tieres an: ";
cin >> Gewicht;
cout << endl;
Bestand = true; //Tier ist im Bestand
} ;
// Funktion um Daten anzuzeigen
void TierAnzeigen(void)
{
cout << "Tiernummer: " << Tiernummer << endl;
cout << "Tierart: " << Art << endl;
cout << "Gewicht: " << Gewicht << endl;
cout << "Noch im Bestand? (1 = ja, 0 = nein): " << Bestand << endl;
};
void TierVerkaufen(int nr)
{
if(Tiernummer == nr && Bestand == 1)
{
cout << "Wie steht der Tagespreis?"<< endl;
cin >> Tagespreis;
Einnahme = Einnahme + (Gewicht*Tagespreis);
cout << "Gesamteinnahmen: " << Einnahme << endl;
Bestand = false;
cout << endl << endl;
}
else if (Tiernummer == nr && Bestand == 0)
{
cout << "Tier mit der Nummer " << nr << " nicht im Bestand." << endl;
}
else
{
cout << "Tier mit der Nummer " << nr << " nicht vorhanden." << endl;
}
} ;
int main(void)
{
int s = 0, eing, nr; // deklariert integer s auf Null, wird für das Menü werwendet
cout << "Herzlich willkommen bei der Bauernhofverwaltung" << endl << endl << "Bitte treffen Sie Ihre Auswahl im Menue..." << endl << endl << endl;
// Do-While-Schleife, die das Menü ausgibt und Untermenüs aufruft
do
{
system("cls");
//Das Menü
cout << "[1] Tier anlegen" << endl;
cout << "[2] Tier anzeigen" << endl;
cout << "[3] Tier verkaufen" << endl;
cout << "[0] Beende" << endl<<endl;
cout << "Treffen Sie Ihre Auswahl: ";
cin >> eing;
//Switch-Abfrage lädt in die einzelnen Menüpunkte
switch(eing)
{
case 1:
{
system("cls");
TierAnlegen(); // Funktion zur Anlage eines Tieres
cout << "Tier wurde angelegt: " << endl;
system("pause");
break;
}
case 2:
{
system("cls");
TierAnzeigen();
system("pause");
break;
}
case 3:
{
system("cls");
cout << "Tiernummer eingeben: " << endl;
cin >> nr;
TierVerkaufen(nr);
system("pause");
break;
}
}
}while (eing != 0);
cout << endl << "Auf Wiedersehen!" << endl;
system("pause");
return 0;
};
@@ -0,0 +1,22 @@
#include <iostream>
using namespace std;
int main()
{
for (int num=0; num<=100; num++)
{
/ * Dies bedeutet, dass wenn der Wert von
        * num nicht durch 2 teilbar ist, dann wird die
        * continue-Anweisung ausgeführt, wodurch die aktuelle Iteration übersprungen
        * wird und und somit die nächste Iteration stattfindet.
        * /
if (num % 2 == 1) // Ist nicht durch die Zahl 2 teilbar
{
continue;
}
cout << num << " ";
}
return 0;
}
@@ -0,0 +1,56 @@
#include <iostream>
using namespace std;
void printTableFor();
void printTableWhile();
void printTableDoWhile();
int main()
{
cout << "For Loop\n";
printTableFor();
cout << "While Loop\n";
printTableWhile();
cout << "Do While Loop\n";
printTableDoWhile();
return 0;
}
void printTableFor()
{
for (int i = 1; i < 11; i++)
{
for (int j = 1; j < 11; j++)
cout << (i * j) << "\t";
cout << "\n";
}
}
void printTableWhile()
{
int i = 1;
while (i < 11)
{
int j = 1;
while (j < 11)
{
cout << (i * j) << "\t";
j++;
}
cout << "\n";
i++;
}
}
void printTableDoWhile()
{
int i = 1;
do
{
int j = 1;
do
{
cout << (i * j) << "\t";
j++;
} while (j < 11);
cout << "\n";
i++;
} while (i < 11);
}
@@ -0,0 +1,24 @@
Erstellen Sie ein Tableau, welches das kleine „Einmaleins“ ausgibt.
Das Tableu soll in der Funktion void printTable() ausgegeben werden.
Ausgabe:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
Tipp:
- Rufen Sie die printTableFor()-Methode in der main()-Methode auf
- Für diese Aufgabe benötigt man eine verschachtelte for-Schleife.
- Den Tabulator erzeugt man mit „\t“.
Realisieren Sie anschließend die gleiche Ausgabe mit einer while
und einer do-while Schleife, welche jeweils in einer neuen Methode aufgerufen wird.
@@ -0,0 +1,65 @@
#include <iostream>
using namespace std;
const int kEauationVal = 32;
template <class T>
void getVal(const char text[], T *val);
int main()
{
float fahrenheit = 0, schritt_weite = 0, maximal_wert = 0;
cout << "Eingabe\n\n";
getVal("Fahrenheit", &fahrenheit);
getVal("Schrittweite", &schritt_weite);
getVal("Maximalwert", &maximal_wert);
cout << "\nAusgabe\n\n";
for (int i = fahrenheit; i <= maximal_wert; i += schritt_weite)
{
float celsius_wert = ((i - kEauationVal) * 5) / 9;
cout << "Celsius: " << celsius_wert;
if (celsius_wert <= 10)
cout << " es ist kalt";
else if (celsius_wert <= 20)
cout << " es ist angenehm";
else if (celsius_wert > 20)
cout << " es ist heiss";
cout << endl;
}
do
{
cout << "Fahrenheit: " << fahrenheit << " | Celsius: " << ((fahrenheit - kEauationVal) * 5) / 9 << endl;
fahrenheit += schritt_weite;
} while (fahrenheit <= maximal_wert);
for (int i = fahrenheit; i <= maximal_wert; i += schritt_weite)
{
float celsius_wert = ((fahrenheit - kEauationVal) * 5) / 9;
cout << "Celsius: " << celsius_wert;
if (celsius_wert <= 10)
cout << " es ist kalt";
else if (celsius_wert <= 20)
cout << " es ist angenehm";
else if (celsius_wert > 20)
cout << " es ist heiss";
cout << endl;
}
return 0;
}
template <class T>
void getVal(const char text[], T *val)
{
do
{
cout << "\t" << text << " = ";
if (cin.fail())
{
cin.clear();
cin.ignore();
}
cin >> *val;
} while (cin.fail() || *val <= 0);
}
@@ -0,0 +1,32 @@
Schreiben Sie ein Programm, dass die Berechnung von Fahrenheit nach Celsius ausgibt.
Hierbei soll der Wert von Fahrenheit eingegeben werden können.
Die Eingabe darf nicht negativ sein und soll solange erfolgen, bis ein Wert größer gleich Null eingegeben wurde.
Legen Sie anschließend eine Schrittweite und einen Maximalwert fest.
Anhand einer Schleife soll der Wert von Fahrenheit und der dazugehörige Celsiuswert ausgegeben werden.
Beispiel
Eingabe:
Fahrenheit = 50
Schrittweite = 5
Maximalwert = 75
Ausgabe:
Fahrenheit: 50 | Celsius: 10
Fahrenheit: 55 | Celsius: 12.7778
Fahrenheit: 60 | Celsius: 15.5556
Fahrenheit: 65 | Celsius: 18.3333
Fahrenheit: 70 | Celsius: 21.1111
Fahrenheit: 75 | Celsius: 23.88889
Erstellen Sie nun eine weitere Schleife (verwenden Sie nun aber aber einen anderen Schleifentyp).
Geben Sie den Celsiuswert und noch folgenden Text aus:
- Wenn es kleiner gleich 10 Grad hat, dann kommt der Text "es ist kalt"
- Wenn es kleiner gleich 20 Grad hat, dann kommt der Text "es ist angenehm"
- Wenn es größer als 20 Grad hat, dann kommt der Text "es wird heiss"
@@ -0,0 +1,38 @@
#include <iostream>
using namespace std;
template <class T>
void getInput(T *val);
int main()
{
srand(time(NULL));
int random_number = rand() & 100;
while (true)
{
int input_number;
getInput(&input_number);
input_number -= random_number;
if (input_number < 0)
cout << "Zu klein\n";
else if (input_number > 0)
cout << "Zu groß\n";
else if (input_number == 0)
break;
}
cout << "Du hast es erraten!\n";
return 0;
}
template <class T>
void getInput(T *val)
{
do
{
cout << "Please guess number(0-99): ";
if (cin.fail())
{
cin.clear();
cin.ignore();
}
cin >> *val;
} while (cin.fail() || *val < 0 || *val >= 100);
}
@@ -0,0 +1,8 @@
Programmieren Sie das Spiel Zahlenraten: Der Computer generiert eine Zufallszahl
zwischen 1 und 100, die der Spieler erraten muß.
Es wird bei jedem Durchgang mitgeteilt, ob die eingegebene Zahl zu groß oder zu klein war.
Tipp: Zufallszahlen werden wie folgt generiert:
Ein einmaliger Aufruf srand(time(NULL)) initialisiert den Zufallszahlengenerator.
Anschließend liefert jeder Aufruf von rand()%100 eine Zufallszahl zwischen 0 und 99.
Die Funktionen sind in <ctime> und <cstdlib> deklariert.
@@ -0,0 +1,35 @@
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
float z1 = 0, z2 = 0;
char op = 0;
cout << "Bitte Ausdruck eingeben: \n";
cin >> z1 >> op >> z2;
switch (op)
{
case '+':
cout<< "Ergebnis: "<<(z1+z2)<<endl;
break;
case '-':
cout<< "Ergebnis: "<<(z1-z2)<<endl;
break;
case '*':
cout<< "Ergebnis: "<<(z1*z2)<<endl;
break;
case '/':
if(z2==0)
cout << "Division durch null!\n";
else
cout<< "Ergebnis: "<<(z1/z2)<<endl;
break;
default:
cout << "Es gab einen Fehler in der Anweisung";
}
}
@@ -0,0 +1,7 @@
Programmieren Sie mithilfe der switch-case Anweisung einen Mini-Taschenrechner, der zwei
Zahlen und einen Operator (+, -, *, /) einliest und das Ergebnis ausgibt.
Die Eingabe soll direkt in einer Zeile erfolgen, z.B. 5+4
Tipp: Sie können bei cin mehrere Variablen verwenden, z.B. cin >> var1 << var2;
Eine eventuelle Division durch 0 soll abgefangen werden.
@@ -0,0 +1,129 @@
#include <iostream>
#include <set>
#include <functional>
#include <string>
#include <algorithm>
using namespace std;
// Prototypen
template <typename T>
using Func = std::function<T(T)>;
template <class T>
T DatenErfassen(T *result, const char message[]);
template <class T, typename K>
T DatenErfassen(T *result, const char message[], K &&constraint);
void addTier();
float EinnahmenBerechnen(float *tagespreis, int *gewicht);
typedef struct Tier
{
string tierart;
int tiernummer;
float gewicht;
bool operator<(const Tier &cmp) const { return tiernummer - cmp.tiernummer; }
bool operator==(const Tier &cmp) const
{
return tiernummer == cmp.tiernummer;
}
string to_string()
{
return ("Tiernummer " + std::to_string(tiernummer) + " ist von der Art " + this->tierart + " und wiegt " + std::to_string(gewicht) + " KG.\n");
}
} tier_frame;
set<Tier> tiere;
const char *fehler_meldung = "\nEs gab einen Fehler bei der Eingabe.\nBitte erneut eingeben.\n";
int main()
{
int menu_state = -1;
cout << "Willkommen auf dem Bauerhof von Bauer Max\n";
while (true)
{
switch (menu_state)
{
case 0:
return 0;
case 1:
{
cout << "Tier anlegen:\n";
Tier tier;
DatenErfassen(&tier.tierart, "Tierart: ");
DatenErfassen(&tier.gewicht, "Gewicht: ");
DatenErfassen(&tier.tiernummer, "Tiernummer: ");
tiere.insert(tier);
menu_state = -1; // Reset
break;
}
case 2:
{
int tierid = 0;
cout << "Tier verkaufen:\n";
DatenErfassen(&tierid, "Tiernummer:");
if (tiere.erase(tier_frame{"", tierid, 0}))
{
cout << "Tier verkauft\n";
}
else
{
cout << "Tier wurde nicht gefunden\n";
}
menu_state = -1; // Reset
break;
}
case 3:
{
cout << "Alle Tiere:\n";
for (Tier tier : tiere)
{
cout << tier.to_string();
}
menu_state = -1; // Reset
break;
}
default:
{
cout << "\t- 1: Tier anlegen ()\n";
cout << "\t- 3: Tier anzeigen ()\n";
cout << "\t- 2: Tier verkaufen (Tiernummer)\n";
cout << "\t- 0: Programm beenden\n";
DatenErfassen(&menu_state, "Programm Modul:", [](int *val)
{ return (bool)(*val >= 0 && *val <= 4); });
}
}
}
float tagespreis = 0, einnahmen = 0;
int gewicht = 0;
cout << "Bitte geben Sie den aktuellen Tagespreis und das Gewicht an.\n ";
DatenErfassen(&tagespreis, "Tagespreis:");
DatenErfassen(&gewicht, "Gewicht:");
einnahmen = tagespreis * gewicht;
cout << "Die heutigen Einnahmen belaufen sich auf: " << EinnahmenBerechnen(&tagespreis, &gewicht) << " € (" << tagespreis << " x " << gewicht << ")\n";
return 0;
}
template <class T>
T DatenErfassen(T *result, const char message[])
{
return DatenErfassen(result, message, [](T *val)
{ return true; });
}
template <class T, typename K>
T DatenErfassen(T *result, const char message[], K &&constraint)
{
do
{
if (cin.fail())
{
cout << fehler_meldung;
cin.clear();
cin.ignore();
}
cout << message << "\t";
cin >> *result;
} while (cin.fail() || !constraint(result));
return *result;
}
float EinnahmenBerechnen(float *tagespreis, int *gewicht)
{
return (*tagespreis) * (*gewicht);
}
@@ -0,0 +1,29 @@
Ergänzen Sie Ihr Bauernhof-Programm aus Kapitel 3 "Uebung 1 - Bauernhof" um folgendes:
Erstellen Sie mit Hilfe einer switch-Anweisung ein Benutzermenü,
welches folgende 3 Funktionen aufruft:
- 1: Tier anlegen ()
- 3: Tier anzeigen ()
- 2: Tier verkaufen (Tiernummer)
- 0: Programm beenden
Das Menü soll solange wiedererscheinen, bis der Nutzer die Zahl für „Programm beenden“ eingibt (Do-While-Schleife).
Beim Anlegen sollen folgende Daten gespeichert werden:
- Tierart
- Tiernummer
- Gewicht
Beim Anzeigen sollen folgende Daten angezeigt werden:
- Tierart
- Tiernummer
- Gewicht
- ob das Tier noch im Bestand ist
Beim Verkauf soll geprüft werden, ob das Tier noch im Bestand ist und ob die gespeicherte Tiernummer mit der eingegebenen Tiernummer übereinstimmt.
Es soll folgendes funktionieren:
- Eingabe des Tagespreises
- Einnahmen erhöhen sich (Gewicht * Tagespreis)
- Ausgabe der Gesamteinnahmen
- Tier ist anschließend nicht mehr im Bestand
@@ -0,0 +1,4 @@
Erstellen Sie eine Schleife, in welcher Sie alle Zahlen von 1 bis 100 ausgeben, welche durch die Zahl 2 teilbar sind.
Verwenden Sie hierfür die continue-Anweisung, um die Zahlen zu überspringen, welche nicht durch die Zahl 2 teilbar sind!
Nähere Informationen zur continue-Anweisung finden Sie im Glossar des VHB-Kurses oder auf folgender Seite: https://en.cppreference.com/w/cpp/language/continue