Thursday, 18 June 2009
Aufgabenstellung:
Der Benutzer soll 3 Punkte (bestehend aus je 3 Koordinaten) eingeben können und bekommt anschließend die Fläche dieses Dreiecks im Raum. Dies ist eine Erweiterung der Aufgabe Länge einer Strecke im Raum berechnen.
Benötigte Formeln:


/**
* Headerdatei fuer Palindrom
* Funktiondeklarierung
*
* Rainer Hihn
*/
#include
#include
/*
* functions
*/
struct point readPoint();
float distance(struct point point1, struct point point2);
float areaTrinagle(struct point point1, struct point point2, struct point point3);
/*
* structs
*/
struct point
{
float rX;
float rY;
float rZ;
};
/**
* Funktionen von 'Laenge einer Strecke im Raum'
*
* Rainer Hihn
*/
#include "strecke.h"
/**
* x-, y- und z-Koordianten einlesen
*/
struct point readPoint()
{
struct point userPoint;
printf("Bitte x-Koordinate eingeben \n");
scanf("%62f", &userPoint.rX);
printf("Bitte y-Koordinate eingeben \n");
scanf("%62f", &userPoint.rY);
printf("Bitte z-Koordinate eingeben \n");
scanf("%62f", &userPoint.rZ);
return userPoint;
}
/**
* Distanz zwischen 2 Punkten berechnen
*/
float distance(struct point point1, struct point point2)
{
float rNewX = 0;
float rNewY = 0;
float rNewZ = 0;
float rDistance = 0;
rNewX = point1.rX - point2.rX;
rNewY = point1.rY - point2.rY;
rNewZ = point1.rZ - point2.rZ;
rDistance = sqrt((rNewX * rNewX) + (rNewY * rNewY) + (rNewZ * rNewZ));
return rDistance;
}
/**
* Flaeche eines Dreicks berechnen
* die Seitenlaengen werden mittles distance()
* berechnet
*/
float areaTrinagle(struct point point1, struct point point2, struct point point3)
{
float rA = 0; /* Seitenlaenge A */
float rB = 0; /* Seitenlaenge A */
float rC = 0; /* Seitenlaenge A */
float rS = 0; /* halber Umfang */
rA = distance(point1, point2);
rB = distance(point2, point3);
rC = distance(point3, point1);
rS = (rA + rB + rC)/2;
return sqrt(rS * (rS - rA) * (rS - rB) * (rS - rC));
}
/***********************
* Laenge einer Strecke im Raum
*
* Rainer Hihn
*/
#include "strecke.h"
int main(void)
{
/**
* Variablendeklaration
*/
struct point firstPoint;
struct point secondPoint;
struct point thirdPoint;
printf("Entfernung berechnen \n");
/**
* einlesen der 3 Punkte
*/
firstPoint = readPoint();
secondPoint = readPoint();
thirdPoint = readPoint();
printf("Die Flaeche des Dreiecks betraegt %f \n", areaTrinagle(firstPoint, secondPoint, thirdPoint));
return 0;
}
Tags: c
Posted in Allgemein | Comments Off
Thursday, 18 June 2009
Aufgabenstellung:
2 Punkte (bestehend aus 3 Koordinaten) sollen vom Benutzer eingegeben werden können. Daraus soll dann die Länge einer Strecke im Raum berechnet werden.
Die Formel:

/**
* Headerdatei fuer Streckenberechnung
* Funktiondeklarierung
*
* Rainer Hihn
*/
#include
#include
/*
* functions
*/
struct point readPoint();
float distance(struct point point1, struct point point2);
/*
* structs
*/
struct point
{
float rX;
float rY;
float rZ;
};
/**
* Funktionen von 'Laenge einer Strecke im Raum'
*
* Rainer Hihn
*/
#include "strecke.h"
struct point readPoint()
{
struct point userPoint;
printf("Bitte x-Koordinate eingeben \n");
scanf("%62f", &userPoint.rX);
printf("Bitte y-Koordinate eingeben \n");
scanf("%62f", &userPoint.rY);
printf("Bitte z-Koordinate eingeben \n");
scanf("%62f", &userPoint.rZ);
return userPoint;
}
float distance(struct point point1, struct point point2)
{
float rNewX = 0;
float rNewY = 0;
float rNewZ = 0;
float rDistance = 0;
rNewX = point1.rX - point2.rX;
rNewY = point1.rY - point2.rY;
rNewZ = point1.rZ - point2.rZ;
rDistance = sqrt((rNewX * rNewX) + (rNewY * rNewY) + (rNewZ * rNewZ));
return rDistance;
}
* Laenge einer Strecke im Raum
*
* Rainer Hihn
*/
#include "strecke.h"
int main(void)
{
/**
* Variablendeklaration
*/
struct point firstPoint;
struct point secondPoint;
printf("Entfernung berechnen \n");
firstPoint = readPoint();
secondPoint = readPoint();
printf("Die Entfernung von Punkt 1 nach Punkt 2 ist: %f \n", distance(firstPoint, secondPoint));
return 0;
}
Tags: c
Posted in Allgemein | Comments Off
Monday, 18 May 2009
Tolle Übungsaufgabe in C: Ein Programm das die Länge eines angegebenen Strings, den Buchstaben mit den höchsten und den Buchstaben mit den niedrigsten ASCII-Wert zurückgibt. Die Funktion dafür soll aber nur die Länge des Strings als Rückgabewert liefern – der Rest soll über Pointer gemacht werden.
/***********************
* Stringstats
*
* Rainer Hihn
*/
#include
#define LENGTH 64
/*
* Funktion deklarieren
*/
int stringstats(char[], char *, char *);
int main(void)
{
/**
* Variablendeklaration
*/
char cString[LENGTH] = {0};
int iLength = 0;
char cGroesster = 0;
char cKleinster = 0;
while(1)
{
/**
* Benutzereingabe String
*/
printf("Bitte einen String eingeben ('q' fuer Beenden) \n");
scanf("%62s", &cString);
/**
* Abbruchbedingung pruefen
*/
if(cString[0] == 'q' && cString[1] == '\0')
{
break;
}
/**
* Funktion stringstats aufrufen
*/
iLength = stringstats(cString, &cGroesster, &cKleinster);
printf("Laenge: %i \n", iLength);
printf("Kleinster Buchstabe: %c \n", cKleinster);
printf("Groesster Buchstabe: %c \n\n", cGroesster);
}
return 0;
}
/**
* Funktionen um Werte eines
* Strings zu berechnen
*/
#include
int stringstats(char sString[], char* cGroesster, char* cKleinster)
{
/**
* Variablendeklaration
*/
int iLength = 0;
int i = 0;
*cKleinster = sString[0];
*cGroesster = sString[0];
while(sString[iLength] != '\0')
{
iLength++;
}
for(i = 0; i <= iLength-1; i++)
{
if(sString[i] < *cKleinster)
{
*cKleinster = sString[i];
}
if(sString[i] > *cGroesster)
{
*cGroesster = sString[i];
}
}
return iLength;
}
Tags: c
Posted in Allgemein | Comments Off
Monday, 18 May 2009
Pidgin ist freie Software welche man unter http://pidgin.im/download/ herunterladen kann. Sie unterstützt mehrere Protokolle, so dass man z.B. mit seinem Jabber- und ICQ-Account gleichzeit online sein kann.
Ein Mal installiert kann man mit folgenden Schritten einen Jabber Account erstellen (Grund 1, Grund 2):

Hier auf “Konten” -> “Konten verwalten”

Hier auf “Hinzufügen”

Hier gewünschten Benutzernamen, Domain (z.B. jabber.org oder jaber.ccc.de), Ressource (kann z.B. auch “Work” sein) und ein Passwort. Den Haken ganz unten bei “Dieses neue Konto auf dem Server anlegen” nicht vergessen.
Danach steht einer Nutzung von Jabber nichts mehr im Weg.
Update:
Die Registrierung auf jabber.org ist durch Pidgin nicht mehr möglich. Einen Account kann man sich aber hier anlegen: http://register.jabber.org/
Tags: jabber, pidgin
Posted in Allgemein | 1 Comment »
Saturday, 25 April 2009
Tolle Übungsaufgabe in C: Ein Programm (bestehend aus 3 Dateien) das prüft, ob der eingegebene String ein Palindrom ist. Zudem soll das Programm auch Palindrome erkennen, die Leerzeichen enthalten und Groß- bzw. Kleinschreibung nicht unterscheidet.
/**
* Funktionen des Palindrom-Programms
*
* Rainer Hihn
*/
#include
/**
* ermittelt die Laenge eines Strings
*/
int lengthOfString(char cWord[])
{
int i = 0;
/**
* solang das Ende nicht erreicht ist
* wird der Wert i um 1 erhöht
*/
while(cWord[i] != '\0')
{
i++;
}
return i;
}
/**
* prueft, ob der angegebe String ein Palindrom ist
*/
int isPalindrom(char cWord[])
{
int i = 0;
int length = lengthOfString(cWord);
for(i = 0; i <= (length-1); i++)
{
/**
* vergleiche ersten und letzten, zweiten und vorletzten etc Buchstaben
*/
if(cWord[i] != cWord[((length-1)-i)])
{
/**
* vergleiche Gross- und Kleinschreibung
*/
if(cWord[i]+32 != cWord[((length-1)-i)] && cWord[i]-32 != cWord[((length-1)-i)])
{
return 0;
}
}
}
return 1;
}
/***********************
* Palindromtest
*
* Rainer Hihn
*/
#include "palindromfun.h"
#define LENGTH 63
int main(void)
{
/**
* Variablendeklaration
*/
char cWord[LENGTH] = {0};
char cWordWork[LENGTH] = {0};
int i = 0;
int j = 0;
/**
* Benutzereingabe String
*/
printf("Bitte ein Wort eingeben \n");
scanf("%62[^\n]s", cWord);
for(i = 0; i <= LENGTH-1; i++)
{
if(cWord[i] != ' ')
{
cWordWork[j] = cWord[i];
j++;
}
}
if(isPalindrom(cWordWork))
{
printf("%s ist ein Palindrom \n", cWord);
}
else {
printf("%s ist kein Palindrom \n", cWord);
}
return 0;
}
/**
* Headerdatei fuer Palindrom
* Funktiondeklarierung
*
* Rainer Hihn
*/
#include
int isPalindrom(char *);
int lengthOfString(char *);
Tags: c, palindrom
Posted in Allgemein | Comments Off
Friday, 24 April 2009
Mit diesem Befehl kann man alle Suchergebnisse unmittelbar löschen:
# löscht alle SVN Dateien aus dem aktuellen Verzeichnis
find . -type d -name ".svn" -exec rm -r {} \;
Tags: konsole, shell
Posted in Allgemein | 1 Comment »
Thursday, 16 April 2009
Tolle Übungsaufgabe in C: ein simpler Konsolentaschenrechner der addieren, multiplizieren, subtrahiren und divieren kann. Ausserdem soll das Programm beendet werden wenn man ‘q’ eingibt.
/***********************
* Ein einfacher Taschenrechner
*
* Rainer Hihn
*/
#include
void exit(int);
float calculate(char optr, float opr1, float opr2)
{
float rErg = 0;
switch(optr) {
/**
* addieren
*/
case '+':
rErg = opr1 + opr2;
break;
/**
* subtrahieren
*/
case '-':
rErg = opr1 - opr2;
break;
/**
* multiplizieren
*/
case '*':
rErg = opr1 * opr2;
break;
/**
* dividieren
*/
case '/':
rErg = opr1 / opr2;
break;
/**
* Wenn kein erlaubter
* Operator eingegeben wurde
*/
default:
printf("Falscher Operator \n");
exit(1);
}
return rErg;
}
int main(void)
{
/**
* Variablendeklaration
*/
char cOptr;
float fOpr1;
float fOpr2;
float fErg;
while(1)
{
printf("Eingabe: Operator Operand1 Operand2 \n");
/**
* Benutzereingabe Operator
*/
printf("Bitte Eingabe Operator \n");
scanf(" %c", &cOptr);
/**
* Programm wird beendet wenn
* 'q' eingeben wird
*/
if(cOptr == 'q')
{
break;
}
/**
* Benutzereingabe Operand 1
*/
printf("Bitte Eingabe Operand1: \n");
scanf(" %f", &fOpr1);
/**
* Benutzereingabe Operand 2
*/
printf("Bitte Eingabe Operand2: \n");
scanf(" %f", &fOpr2);
if(cOptr == '/' && fOpr2 == 0)
{
printf("ehm ... nein? \n");
break;
}
/**
* Ergebnis berechnen und ausgeben
*/
fErg = calculate(cOptr, fOpr1, fOpr2);
printf("%f %c %f = %f \n\n", fOpr1, cOptr, fOpr2, fErg);
}
return 0;
}
Tags: c, taschenrechner
Posted in Allgemein | Comments Off
Thursday, 16 April 2009
Tolle Übungsaufgabe in C: ein Programm das eine Dezimalzahl in eine Dualzahl umwandelt.
/***********************
* Umrechnung Dezimalzahl
* nach Dualzahl
*
* Rainer Hihn
*/
#include
int main(void)
{
/**
* Variablendeklaration
*/
int iDezi = 0;
int iDual[16] = {0};
int i = 0;
int iErg = 0;
int iRest = 0;
/**
* Einlesen der Dezimalzahl
*/
printf("Geben Sie eine Dezimalzahl ein: \n");
scanf("%i", &iDezi);
printf("\n");
/**
* Pruefen ob die Dezimalzahl
* groesser als 16 bit ist
*/
if(iDezi > 65536)
{
printf("Geben Sie eine Dezimalzahl ein die kleiner als 65.536 ist \n");
}
else{
iErg = iDezi;
i = 0;
while(iErg > 0)
{
if(iErg % 2 == 0)
{
iDual[i] = 0;
}
else {
iDual[i] = 1;
}
iErg = iErg / 2;
i++;
}
/**
* Ausgabe der Dualzahl
*/
i = 15;
for(i = 15; i >= 0; i--)
{
printf("%i", iDual[i]);
}
printf("\n");
}
return 0;
}
Tags: c, dezimalzahl, dualzahl
Posted in Allgemein | Comments Off
Tuesday, 7 April 2009
Wer beim Benutzen der Ports-Collection unter FreeBSD mal über den Fehler stolpern sollte:
fusefs-kmod requires the userland sources to be installed. Set SRC_BASE if it is not in /usr/src.
Lösung:
sysinstall
Dann Configure -> Distributions -> src -> base + sbin + sys auswählen und installieren.
Tags: FreeBSD, konsole
Posted in Allgemein | Comments Off
Thursday, 26 March 2009
Tolle Übungsaufgabe in C: eine Ascii-Tabelle anzeigen.
/***********************
* Ascii Tabelle
*
* Rainer Hihn
*/
#include
int main(void)
{
int Start = 32;
int Ende = 55;
int i = 0;
int j = 0;
for(i = Start; i <= Ende; i++)
{
for(j = 0; j <= 3; j++)
{
printf("%i ", i+(j*24));
printf("%c\t", i+(j*24));
}
printf("\n");
}
}
Tags: c
Posted in Allgemein | Comments Off