#include
using namespace std;
int addiren( int augend, int addend )
{
return augend + addend;
}
int subtrahieren( int minuend, int subtrahend )
{
return minuend - subtrahend;
}
int multiplizieren( int multiplikand, int multiplikator )
{
return multiplikand * multiplikator;
}
int dividieren(int dividend, int divisor)
{
if(divisor == 0)
{
return 0;
}
return dividend / divisor;
}
/* Überladene Funktionen */
double addiren( double augend, double addend )
{
return augend + addend;
}
double subtrahieren( double minuend, double subtrahend )
{
return minuend - subtrahend;
}
double multiplizieren( double multiplikand, double multiplikator )
{
return multiplikand * multiplikator;
}
double dividieren(double dividend, double divisor)
{
if(divisor == 0)
{
return 0;
}
return dividend / divisor;
}
int main (void)
{
char id, jn='j', ra;
double erg=0, z1, z2;
do
{
cout << "Minirechner: (i)nteger oder (d)ouble ? ";
cin >> id;
if(id != 'i' && id != 'd')
continue;
cout << "Zahl 1 = ? ";
cin >> z1;
cout << "Rechenart (+ - * /) ? ";
cin >> ra;
cout << "Zahl 2 = ? ";
cin >> z2;
if(id == 'i')
{
z1 = (int)z1;
z2 = (int)z2;
switch(ra)
{
case '+':
erg = addiren( (int)z1, (int)z2 );
break;
case '-':
erg = subtrahieren( (int)z1, (int)z2 );
break;
case '*':
erg = multiplizieren( (int)z1, (int)z2 );
break;
case '/':
erg = dividieren( (int)z1, (int)z2 );
break;
default:
break;
}
}
else
/* if(id == 'd') */
{
switch(ra)
{
case '+':
erg = addiren( z1, z2 );
break;
case '-':
erg = subtrahieren( z1, z2 );
break;
case '*':
erg = multiplizieren( z1, z2 );
break;
case '/':
erg = dividieren( z1, z2 );
break;
default:
break;
}
}
cout << z1 << ra << z2 << "=" << erg << endl;
cout << "Noch einmal (j/n)? ";
cin >> jn;
}
while (jn == 'j');
return 0;
}
Veröffentlicht am: 12.11.2007 von: CHR | publiziert in: C, FH-Aachen
Immer wieder bin ich auf der suche nach Paketen:
dpkg --get-selections | less
Er liefert mir alle Pakete die per apt
installiert sind und listet sie in der less
auf.
Oder wenn man bestimmte Pakete sucht:
dpkg -l "linux-image*"| grep ^ii
Und wenn man wissen will was sich in dem Pakte befindet:
dpkg -L less
Veröffentlicht am: 09.11.2007 von: CHR | publiziert in: Debian, Ubuntu
Zunächst muss ein Schlüsselpaar erstellt werden. Das machen wir mit ssh-keygen
ssh-keygen -b 4096 -t rsa -f rsync
Kein Passfrase eingeben sonst kann man das nicht automatisieren. Abschließend wurden die folgenden Dateien in ~/.ssh/
erstellt.
rsync (ist der private key)
rsync.pub (ist der public key)
Den Public Key auf BackupServer kopieren, damit der lokale Server autorisiert werden kann.
backup@BackupServer:~$ cd /home/backup/.ssh
backup@BackupServer:~/.ssh$ cat rsync.pub >> authorized_keys
backup@BackupServer:~/.ssh$ chmod 0600 authorized_keys
Achtung! Falls schon eine "authorized_keys" Datei existiert nicht überschreiben, sondern anhängen.
Zum Testen und um Akzeptieren des Zertifikates könnt ihr euch per SSH verbinden.
root@server:~$ ssh -i /root/.ssh/rsync backup@BackupServer
Wenn nun die Verbindung direkt aufgebaut wird, ohne die Abfrage eines Passworts, habt ihr alles richtig gemacht.
root@server:~$ rsync -e "ssh -i /root/.ssh/rsync" -avcuz /home/Tux/ ZielServer:/home/Tux/Tuxbackup/
Hier noch eine Übersicht welche Befehle es gibt:
-a Archiv: rekursiv, mit Links und allen Rechten (als das gleich wie: -rlptgoD)
-v Fortschrittsanzeige
-c Checksummen von Dateien vergleichen
-C Unwichtige Dateien ignorieren
-u Update: neue Dateien nicht überschreiben
-H Hardlinks auf dem Ziel synchronisieren
-n Nichts tun, nur zeigen, was getan würde
-e ssh SSH für die Verbindung nutzen
–delete Lokal gelöschte Dateien auch auf dem Ziel entfernen
–modify-window=N Toleranz für Zeitstempel, die Rsync noch als gleich auffasst
-z Zip: Dateien vor dem Übertragen komprimieren (spart Bandbreite, kostet Rechenzeit)
Veröffentlicht am: 07.11.2007 von: CHR | publiziert in: Linux
#include
using namespace std;
void hw(void)
{
cout << "Hello wordl!" << endl;
}
void cbv1(double d)
{
cout << d << endl;
}
char cbv2 (double d)
{
if(d >= 0)
{
return 'p';
}
return 'n';
}
void cbr1(float &f)
{
f = 12.345;
}
int cube(int l, int b, int h=1)
{
return l * b * h;
}
int main (void)
{
/* Aufgabe a) */
hw();
/* Aufgabe b) */
cout << "Wert von a in cbv1 = ";
cbv1(12.6);
/* Aufgabe c) */
double d = 7.1234;
cout << "Wert von a in cbv1 = ";
cbv1( d );
/* Aufgabe d) */
cout << "Ergebnis von cbv2 mit Parameter -23: " << cbv2 (-23) << endl;;
cout << "Ergebnis von cbv2 mit Parameter +10: " << cbv2 (10) << endl;;
/* Aufgabe e) */
float f=0;
cout << "Vor dem Aufruf von cbr1: f = " << f << endl;
cbr1(f);
cout << "Vor dem Aufruf von cbr1: f = " << f << endl;
/* Aufgabe f) */
cout << "Daten (L: 10 B: 11 H: 12)" << endl << "Rauminhalt: " << cube( 10, 11, 12 ) << endl;
cout << "Daten (L: 10 B: 11 H: 1)" << endl << "Flaeche: " << cube( 10, 11 ) << endl;
return 0;
}
Veröffentlicht am: 05.11.2007 von: CHR | publiziert in: C, FH-Aachen
#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;
}
Veröffentlicht am: 29.10.2007 von: CHR | publiziert in: C, FH-Aachen