Inhaltsverzeichnis

Allgemein

Quelle: https://www.programmieren-lernen-cplusplus.de/

Datentypen

Datentyp Bitanzahl Wertebereich Beschreibung
char, signed char 8 -128..127 Zeichen, negative Zeichen
unsigned char 8 0-255 nur positive Zeichen
short int 16 -32768..32767 Ganzzahlen
unsigned short int 16 0..65535 positive Zahlen
int, signed int 32 -2147583648..2147583647 Zahlen, negative Zahlen
unsigned int 32 0..4294967295 positive Zahlen
float 32 1.2*10⁻³⁸..3.4*10³⁸ rationale Zahlen (fließkomma)
double 64 2.2*10⁻³⁰⁸..1.8*10³⁰⁸ rationale Zahlen (fließkomma)

Vergleichsoperatoren

Operator Beschreibung
== gleich
!= ungleich
< kleiner
> größer
kleiner gleich
>= größer gleich

Ein- und Ausgabe

Eine Ein-/Ausgabe benötigt die Biblothek #include <iostream> wenn die Ausgabe formatiert werden soll, benötigt man zusätzlich noch #includ <iomanip>.
Um nicht ständig std::[cout|cin|endl|…] eingeben zu müssen, kann man den Namespace „std“ einbinden: using namespace std;

Wenn, Dann, Sonst

if (Bedingung) {
  Anweisungen;
}
else if (Bedingung) {
  Anweisungen;
}
else {
  Anweisungen;
}

Schleifen

Funktionen

Funktionen werden außerhalb des Main-Programms definiert.

normale Funktion:

Rückgabedatentyp Funktionsname (Datentyp Parameter,...){
  Anweisungen;
  return(Rückgabewert);
}

Referenzen:

int number=38;
int& refnumber=number;

Funktion mit Referenz:

Rückgabedatentyp Funktionsname (Datentyp**&** Parameter,...){
  Anweisungen;
  return(Rückgabewert);

Man bemerke das „&“-Symbol in der Parameterliste.

Beispiel:

void quadrat(int& x){
  x=x*x;
}
 
int main(){
  int zahl;
  cin >> zahl;
  quadrat(zahl);
  cout << zahl;
}

Parameter welche an eine Funktion übergeben werden, sind nur Kopien.
Funktionen können per „call-by-reference“ oder „call-by-value“ aufgerufen werden.
call-by-reference: der übergebene Parameter ändert sich zeitgleich im „Main-Programm“
call-by-value: der übergebene Parameter ändert sich nicht im „Main-Programm“, da eine Kopie des Parameter an die Funktion übergeben wird

Array

int feld[10];
int feld[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int feld[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int feld[5];
feld[0]=1;
feld[1]=4;
feld[2]=2;
feld[3]=43;
feld[4]=33;
// Eingabe
cin >> feld[0];
cin >> feld[1];
 
// oder Eingabe
 
int feld[10];
for(int i=0;i<10;i++) {
  cout << "Bitte einen Wert eingeben: "
  cin >> feld[i];
}
 
// Ausgabe
 
for(int i=0;i<10;i++) {
  cout << "Element“ << i+1 << ":<< feld[i] << endl;
}

Arrays können an Funktionen übergeben werden. Der Aufruf erfolgt per „call-by-reference“, alle Änderungen an den Arrayelementen bleiben somit erhalten.

String

Strings sind Anreihungen mehrerer Wörter.
Sie können mit der Bibliothek „string“ implementiert werden.

#include <string>

Beispiel:

string wohnort;
string studienort;
 
wohnort=“Hamburg“;
studienort=“Rostock“;
 
if (wohnort==studienort) {
  cout << "Wohn- und Studienort sind gleich.“ << endl;
}

Da Strings mehrere Wörter sein können, und ein normales „cin“ nur zusammenhängende Parameter ohne Leerzeichen akzeptieren, müssen Strings wie folgt übergeben werden:

string text;
getline(cin, text);

In der String-Bibliothek gibt es noch folgende Funktionen:

Strukturen

Mit Strukturen können eigene Datentypen definieren werden.
Strukturen werden wie Funktionen außerhalb des Main-Programms definiert.

struct Strukturname {
Datentyp1 komponente1;
Datentyp2 komponente2;
};

Beispiel:

einfache Struktur

struct person {
string name;
string vorname;
int alter;
int ausweisnummer;
char geschlecht;
};
 
main(){
  person p1;
  // Ausgabe des Parameters "p1" des Datentyps "person"
  cout << p1;
 
  //Eingabe von Parametern in den Datentyp "person"
  getline (cin, p1.name);
  getline (cin, p1.vorname);
  getline (cin, p1.alter);
  getline (cin, p1.ausweisnummer);
  getline (cin, p1.geschlecht);
 
  return(0)
}

Strukturen in Arrays eingeben

main(){
  person liste[100];
  liste[0].name=“Petrovich“;
  liste[7].alter=45;
  liste[18].geschlecht='m';
}

verschachtelte Struktur

struct adresse {
  string straße;
  int hausnummer;
  int plz;
  string ort;
};
 
struct person {
  string name;
  string vorname;
  int alter;
  int ausweisnummer;
  char geschlecht;
  adresse adr;
};
 
main(){
  person p1;
  p1.name=“Schmidt“;
  p1.adr.ort=“München“;
}

Arbeiten mit Dateien

Mit der Bibliothek „fstream“ kann man Daten in Dateien speichern und auslesen.

#include<fstream>
 
main(){
  fstream f;
}

Die Bibliothek liefert folgende Funktionen:

Schreiben und lesen von Daten in/aus eine/-r Datei

string vorname=“Gerald“;
  string nachname=“Ülmer-Neumann“
  fstream f;
  f.open(„daten.txt“, ios::out);
 
  // Daten schreiben
  f<<vorname << endl;
  f<<name<<endl;
 
  // Daten lesen
  fstrean f2;
  f.open("daten.txt", ios::in);
  f2>>vorname;
 
  // Daten lesen über eine Schleife
  fstream f3;
  int i=0;
  werte[1000];
 
  while(!f3.eof() && i<1000){
    f3 >> werte[i];
    i++;
  }

Beispiele

Zahl gerade oder ungerade

#include <iostream>
using namespace std;
 
int main () {
 
  int wert;
 
  do {
    cout << "Bitte eine gerade Zahl eingeben: ";
    cin >> wert;
    if (wert % 2 == 0) {
      cout << "Die Zahl " << wert << " ist eine gerade Zahl." << endl;
    }
  cout << endl;
  } while (wert % 2 != 1);
}

Funktion-MwSt

#include<iostream>
using namespace std;
 
 
float b_preis (float preis){
  float brutto=preis*1.19;
  return brutto;
}
 
int main(){
  float netto;
 
  while(true){
    cout << "bitte einen netto Preis angeben: ";
    cin >> netto;
    cout << endl << "-------" << endl << "Ihr Bruttopreis beträgt: " << b_preis(netto) << endl << "-------" << endl << endl;
 
  }
  return(0);
}

Funktion-Durchschnitt

#include <iostream>
#include <string>
using namespace std;
 
float durchschnitt (int anzahl,string u_fach) {
        int summe=0;
        int note;
        for (int i=1; i<=anzahl; i++) {
          cout << "Note für " << u_fach << " eingeben: ";
           cin >> note;
            summe=summe+note;
        }
        float d=(float) summe/anzahl;
        return d;
    }
 
    int main() {
        string fach;
 
        int anzahlMathenoten=5;
        fach = "Mathematik";
        float durchschnittMathe=durchschnitt(anzahlMathenoten,fach);
 
        int anzahlDeutschnoten=7;
        fach="Deutsch";
        float durchschnittDeutsch=durchschnitt(anzahlDeutschnoten,fach);
 
        int anzahlEnglischnoten=5;
        fach="Englisch";
        float durchschnittEnglisch=durchschnitt(anzahlEnglischnoten,fach);
 
        cout << endl<< endl<< endl<< endl;
 
        cout << "Durchschnitt in Mathematik: " << durchschnittMathe << endl;
        cout << "Durchschnitt in Deutsch: " << durchschnittDeutsch << endl;
        cout << "Durchschnitt in Englisch: " << durchschnittEnglisch << endl;
 
        return (0);
   }

Funktion Kreisberechnungen

#include<iostream>
#include<iomanip>
#include <math.h>
using namespace std;
 
float flaeche(float radius){
  float pi=3.14159;
  float fl=pi*(radius*radius);
  return fl;
}
 
float umfang(float radius){
  float pi=3.14159;
  float um=2*pi*radius;
  return um;
}
 
int main (){
  float radius;
 
  while (radius != 0) {
    cout << "Bitte Kreisradius eingeben: ";
    cin >> radius;
    if (isnan (radius)){
      cout << "Die angegebene Zahl wurde mit einem ',' angegeben." << endl << "Bitte geben Sie stattdessen einen '.' als Trenner ein." << endl;
    }
 
    if (radius==0) {
      cout << "Der Radius darf nicht null sein, das Programm wird nun beendet.";
      break;
    }
 
    float kreisfl=flaeche(radius);
    float kreisumf=umfang(radius);
 
    cout << "Die Kreisfläche beträgt: " << kreisfl << endl;
    cout << "Der Kreisumfang beträgt: " << kreisumf << endl << endl;
  }
 
  return(0);
}

Referenz

#include<iostream>
using namespace std;
 
void quadratzahl(int &x){
  x=x*x;
}
 
int main () {
 
  for(int zahl;zahl != 0;) {
  cout << "Zahl eingeben: ";
  cin>>zahl;
  quadratzahl(zahl);
  cout << zahl << endl << endl;
}
  return(0);
}

Pizza berechnen

#include<iostream>
using namespace std;
 
const float pi=3.141;
 
void preisLeist(float durchm,float preis){
  cout << "Das Preis-Leistungs-Verhaeltnis dieser Pizza betraegt: ";
  cout << preis / (pi*durchm*durchm/4.0) << " EUR je cm^2" << endl;
 
  return;
}
 
int warenkorb( float preis, float &summe, int anzahl){
  summe = summe + preis;
  anzahl = anzahl+1;
 
  return(anzahl);
}
 
int main(){
  int durchmesser;
  float preis;
  float summe = 0;
  int anzahl = 0;
  int menu;
 
  do{
    cout << "Durchmesser in cm: ";
    cin >> durchmesser;
    cout << "Preis in EUR: ";
    cin >> preis;
 
    preisLeist(durchmesser, preis);
    anzahl = warenkorb(preis, summe, anzahl);
 
    cout << "Sie haben bisher " << anzahl << " Pizzen fuer insgesamt " << summe << " EUR bestellt.";
    cout << endl;
    cout << "(0) Einkauf abschliessen \t (1) Einkauf fortsetzen" << endl;
    cout << "Eingabe: ";
    cin >> menu;
    cout << endl;
 
    }while(menu != 0);
 
  return 0;
}

Haarlänge

#include<iostream>
using namespace std;
 
const float wachsen=0.5;
 
int haarlaenge(float laenge1, int tage){
  laenge1=laenge1*tage;
  return(laenge1);
}
 
int main(){
  float laenge;
  int tage=40;
  float laenge1=0.5;
 
  for(int tage=40; tage != 0;){
    cout << "bitte anzahl Tage eingeben: ";
    cin >> tage;
    cout << endl <<endl;
 
    laenge = haarlaenge(laenge1, tage);
    cout << "die haarlaenge nach " << tage << " Tagen, wird " << laenge << " mm sein." << endl ;
  }
 
  return(0);

Array mit Zahlen

#include<iostream>
using namespace std;
 
int main(){
  int wert[10];
  int menu;
  cout << "Es gibt 10 Werte" << endl << endl;
  for (int i=0;i<10;i++){
    cout << "Bitte einen Zahl für Stelle " << i << " eingeben." << endl;
    cin >> wert[i];
 
    if (i == 9) {
      cout << "Mehr Zahlen gehen nicht" << "--------" << endl;
      cout << "Soll ich die Zahlen ausgeben? [0]Ja, [1]Nein";
      cin >> menu;
      cout << endl << "-------" << endl;
      if (menu == 1){
        cout << "OK, beende das Programm.";
        break;
      }
      else {
        cout << "Welchen Zahlenwert soll ich ausgeben (Für die Ausgabe aller Zahlen bitte [11] eingeben)?";
        cin >> menu;
        if (menu == 11){
        cout << "Ihre eingegebenen Zahlen sind:" << endl;
        for (int i=0;i<10;i++){
          cout << wert[i] << endl;
        }
      }
      else {
        cout << "Die eingegebene Zahl für Wert " << menu << ", beträgt " << wert[menu-1] << ".";
      }
      }
      }
    }
  return (0);
}