<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>hihn.org &#187; c</title>
	<atom:link href="http://hihn.org/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://hihn.org</link>
	<description></description>
	<lastBuildDate>Sun, 27 Nov 2011 18:59:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Mehrfach-Deklarierung verhindern</title>
		<link>http://hihn.org/2010/01/mehrfach-deklarierung-verhindern/</link>
		<comments>http://hihn.org/2010/01/mehrfach-deklarierung-verhindern/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 17:52:03 +0000</pubDate>
		<dc:creator>rh</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[c]]></category>

		<guid isPermaLink="false">https://hihn.org/?p=490</guid>
		<description><![CDATA[Bei mehreren header-Dateien die sich untereinander referenzieren und einem Hauptprogramm dass beide inkludiert kann es zu Fehleren wie diesen kommen: media.h:15: Fehler: Redefinition von »class Media« media.h:16: Fehler: vorherige Definition von »class Media« Um diese Fehler zu vermeiden kann man sich einer Präprozessorabfrage bedienen. In diesem Fall heisst die Datei container.h: #ifndef CONTAINER_H #define CONTAINER_H [...]]]></description>
			<content:encoded><![CDATA[<p>Bei mehreren header-Dateien die sich untereinander referenzieren und einem Hauptprogramm dass beide inkludiert kann es zu Fehleren wie diesen kommen:</p>
<pre>
media.h:15: Fehler: Redefinition von »class Media«
media.h:16: Fehler: vorherige Definition von »class Media«
</pre>
<p>Um diese Fehler zu vermeiden kann man sich einer Präprozessorabfrage bedienen. In diesem Fall heisst die Datei <em>container.h</em>:</p>
<pre>
#ifndef CONTAINER_H
#define CONTAINER_H

// code

#endif
</pre>
<p>Eclipse etc. machen das automatisch, aber es soll ja noch Leute geben die <em>vim</em> benutzen. ;-)</p>
<p><a href="http://www.fredosaurus.com/notes-cpp/preprocessor/ifdef.html">Prevent multiple definitions in header files</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hihn.org/2010/01/mehrfach-deklarierung-verhindern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Verkettete Listen / stacks</title>
		<link>http://hihn.org/2009/07/verkettete-listen-stack/</link>
		<comments>http://hihn.org/2009/07/verkettete-listen-stack/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 21:59:41 +0000</pubDate>
		<dc:creator>rh</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[stack]]></category>

		<guid isPermaLink="false">https://hihn.org/?p=470</guid>
		<description><![CDATA[Beispielprogramm für verkettete Listen / stacks: Ein Programm, das beliebig viele Punkte einlesen und in einer verketteten Liste abspeichert. Beim Aufruf hat der Benutzer die Wahl neue Punkte einzugeben oder die bisherigen ausgeben zu lassen (in dem Fall werden sie auch aus dem stack gelöscht). Der stack soll/darf ausschließlich über die Funktionen pop() und push() [...]]]></description>
			<content:encoded><![CDATA[<p>Beispielprogramm für verkettete Listen / stacks: Ein Programm, das beliebig viele Punkte einlesen und in einer verketteten Liste abspeichert. Beim Aufruf hat der Benutzer die Wahl neue Punkte einzugeben oder die bisherigen ausgeben zu lassen (in dem Fall werden sie auch aus dem stack gelöscht). Der stack soll/darf ausschließlich über die Funktionen <em>pop()</em> und <em>push()</em> bearbeitet werden. </p>
<pre>
/**
 * Datei: pointStack.c
 * Funktionen vom Stack Programm
 *
 * Rainer Hihn
 */

#include "pointStack.h"

/**
 * globale Variable, die auf das
 * oberste Element des Stacks zeigt
 */
STACK_POINT_PTR stackTop = NULL;

void push(POINT pushPoint)
{
    /**
     * temporaere Variable
     */
    STACK_POINT_PTR stackPoint = (STACK_POINT_PTR) malloc(sizeof(STACK_POINT));

    /**
     * debugging
     * printf("%d \n", stackPoint);
     */

    /**
     * Abbruchbedingung, falls zu wenig Speicher zur Verfuegung steht
     */
    if(stackPoint == NULL)
    {
        printf("nicht genug Speicher zur Verfuegung ... Ende \n");
        exit(1);
    }

    /*
     * Punnkt speichern und
     * stackTop auf den aktuellen Wert setzen
     */
    stackPoint->p = pushPoint;
    stackPoint->next = stackTop;
    stackTop = stackPoint;

    return;
}

POINT pop()
{
    /**
     * stackTop und nextStackTop
     * zwischenspeichern
     */
    STACK_POINT firstStackPoint = *stackTop;

    /**
     * Speicher vom obersten
     * Stack-Element freigeben
     */

    /**
     * debugging
     * printf("%d \n", stackTop);
     */
    free(stackTop);

    /**
     * stackTop auf das ehemals
     * zweite Element des Stacks setzen
     */
    stackTop = firstStackPoint.next;

    /**
     * Punkte vom ehemals ersten Element
     * zurueckgeben
     */
    return firstStackPoint.p;
}

int isEmpty()
{
    /**
     * wenn next auf NULL zeigt
     * dann ist dies das letzte Element
     * des Stacks
     * und es wird '1' zurueckgegeben
     */
    if(stackTop == NULL)
    {
        return 1;
    }
    else {
        return 0;
    }
}

void printStackElement(POINT aPoint)
{
    printf("Punkt x: %f, Punkt y: %f, Punkt z: %f \n", aPoint.rX, aPoint.rY, aPoint.rZ);
    return;
}
</pre>
<pre>
/**
 * Datei: pointStack.h
 * Headerdatei fuer Stack Programm
 *
 * Rainer Hihn
 */

#include <stdio.h>
#include <stdlib.h>

/*
 * structs
 */

/*
 * struct fuer die Koordinaten
 */
struct point
{
    float rX;
    float rY;
    float rZ;
};
typedef struct point POINT;

struct stackPoint
{
    POINT p;
    struct stackPoint *next;
};
typedef struct stackPoint STACK_POINT;
typedef STACK_POINT *STACK_POINT_PTR;

/*
 * Funktionen
 */
void push(POINT pushPoint);
POINT pop();
int isEmpty();
void printStackElement(POINT aPoint);
</pre>
<pre>
/***********************
 * Datei: stackmain.c
 * Speichern einer Menge von Punkten
 *
 * Rainer Hihn
 */

#include "pointStack.h"

void exit(int);

POINT readPoint()
{
    POINT userPoint;

    printf("Bitte x-Koordinate eingeben \n");
    scanf("%62f", &#038;userPoint.rX);
    printf("Bitte y-Koordinate eingeben \n");
    scanf("%62f", &#038;userPoint.rY);
    printf("Bitte z-Koordinate eingeben \n");
    scanf("%62f", &#038;userPoint.rZ);

    return userPoint;
}

int main(void)
{
    /**
     * Variablendeklaration
     */
    char cCmd;

    printf("’p’ fuer Punkt eingeben, ’q’ fuer Ausgabe: \n");

    while(1)
    {

        scanf("%c", &#038;cCmd);

        if(cCmd == 'p')
        {
            push(readPoint());
            printf("’p’ fuer Punkt eingeben, ’q’ fuer Ausgabe: \n");
        }

        if(cCmd == 'q')
        {
            while(!isEmpty())
            {
                printStackElement(pop());
            }
            break;
        }
    }

    return 0;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://hihn.org/2009/07/verkettete-listen-stack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C: Fläche eines Dreiecks im Raum berechnen</title>
		<link>http://hihn.org/2009/06/c-flache-eines-dreiecks-im-raum-berechnen/</link>
		<comments>http://hihn.org/2009/06/c-flache-eines-dreiecks-im-raum-berechnen/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 16:42:12 +0000</pubDate>
		<dc:creator>rh</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[c]]></category>

		<guid isPermaLink="false">https://hihn.org/?p=434</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>Aufgabenstellung:<br />
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 <a href="http://hihn.org/2009/06/c-lange-einer-strecke-im-raum-berechnen/">Länge einer Strecke im Raum berechnen</a>.</p>
<p>Benötigte Formeln:<br />
<img src="http://hihn.org/wp-content/uploads/2009/06/formel2.png" alt="formel2" /><br />
<img src="http://hihn.org/wp-content/uploads/2009/06/formel3.png" alt="formel3" /></p>
<pre>
/**
 * Headerdatei fuer Palindrom
 * Funktiondeklarierung
 *
 * Rainer Hihn
 */

#include <stdio.h>
#include
<math.h>

/*
 * 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;
};
</pre>
<pre>
/**
 * 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", &#038;userPoint.rX);
    printf("Bitte y-Koordinate eingeben \n");
    scanf("%62f", &#038;userPoint.rY);
    printf("Bitte z-Koordinate eingeben \n");
    scanf("%62f", &#038;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));
}
</pre>
<pre>
/***********************
 * 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;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://hihn.org/2009/06/c-flache-eines-dreiecks-im-raum-berechnen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C: Länge einer Strecke im Raum berechnen</title>
		<link>http://hihn.org/2009/06/c-lange-einer-strecke-im-raum-berechnen/</link>
		<comments>http://hihn.org/2009/06/c-lange-einer-strecke-im-raum-berechnen/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 16:32:31 +0000</pubDate>
		<dc:creator>rh</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[c]]></category>

		<guid isPermaLink="false">https://hihn.org/?p=431</guid>
		<description><![CDATA[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); /* [...]]]></description>
			<content:encoded><![CDATA[<p>Aufgabenstellung:<br />
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.<br />
Die Formel:<br />
<img src="http://hihn.org/wp-content/uploads/2009/06/formel1.png" alt="formel1" /></p>
<pre>
/**
 * Headerdatei fuer Streckenberechnung
 * Funktiondeklarierung
 *
 * Rainer Hihn
 */

#include <stdio.h>
#include
<math.h>

/*
 * functions
 */
struct point readPoint();
float distance(struct point point1, struct point point2);

/*
 * structs
 */
struct point
{
    float rX;
    float rY;
    float rZ;
};
</pre>
<pre>
/**
 * 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", &#038;userPoint.rX);
    printf("Bitte y-Koordinate eingeben \n");
    scanf("%62f", &#038;userPoint.rY);
    printf("Bitte z-Koordinate eingeben \n");
    scanf("%62f", &#038;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;
}
</pre>
<pre>
 * 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;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://hihn.org/2009/06/c-lange-einer-strecke-im-raum-berechnen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Länge, kleinster und größter Buchstabe mit C herausfinden</title>
		<link>http://hihn.org/2009/05/lange-kleinster-und-groster-buchstabe-mit-c-herausfinden/</link>
		<comments>http://hihn.org/2009/05/lange-kleinster-und-groster-buchstabe-mit-c-herausfinden/#comments</comments>
		<pubDate>Mon, 18 May 2009 11:50:00 +0000</pubDate>
		<dc:creator>rh</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[c]]></category>

		<guid isPermaLink="false">https://hihn.org/?p=415</guid>
		<description><![CDATA[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 &#8211; der Rest soll über Pointer gemacht werden. /*********************** * Stringstats * * Rainer Hihn */ #include [...]]]></description>
			<content:encoded><![CDATA[<p>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 &#8211; der Rest soll über Pointer gemacht werden.</p>
<pre>
/***********************
 * Stringstats
 *
 * Rainer Hihn
 */

#include <stdio.h>
#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", &#038;cString);

        /**
         * Abbruchbedingung pruefen
         */
        if(cString[0] == 'q' &#038;&#038; cString[1] == '\0')
        {
            break;
        }

        /**
         * Funktion stringstats aufrufen
         */
        iLength = stringstats(cString, &#038;cGroesster, &#038;cKleinster);

        printf("Laenge: %i \n", iLength);
        printf("Kleinster Buchstabe: %c \n", cKleinster);
        printf("Groesster Buchstabe: %c \n\n", cGroesster);
    }

    return 0;
}
</pre>
<pre>
/**
 * Funktionen um Werte eines
 * Strings zu berechnen
 */

#include <stdio.h>

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;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://hihn.org/2009/05/lange-kleinster-und-groster-buchstabe-mit-c-herausfinden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Palindrom-Test in C</title>
		<link>http://hihn.org/2009/04/palindrom-test-in-c/</link>
		<comments>http://hihn.org/2009/04/palindrom-test-in-c/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 00:08:30 +0000</pubDate>
		<dc:creator>rh</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[palindrom]]></category>

		<guid isPermaLink="false">https://hihn.org/?p=395</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>Tolle Übungsaufgabe in C: Ein Programm (bestehend aus 3 Dateien) das prüft, ob der eingegebene String ein <a href="http://de.wikipedia.org/wiki/Palindrom">Palindrom</a> ist. Zudem soll das Programm auch Palindrome erkennen, die Leerzeichen enthalten und Groß- bzw. Kleinschreibung nicht unterscheidet.</p>
<pre>
/**
 * Funktionen des Palindrom-Programms
 *
 * Rainer Hihn
 */

#include <stdio.h>

/**
 * 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)] &#038;&#038; cWord[i]-32 != cWord[((length-1)-i)])
            {
                return 0;
            }
        }
    }

    return 1;
}
</pre>
<pre>
/***********************
 * 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;
}
</pre>
<pre>
/**
 * Headerdatei fuer Palindrom
 * Funktiondeklarierung
 *
 * Rainer Hihn
 */

#include <stdio.h>

int isPalindrom(char *);
int lengthOfString(char *);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://hihn.org/2009/04/palindrom-test-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simpler Taschenrechner in C</title>
		<link>http://hihn.org/2009/04/simpler-taschenrechner-in-c/</link>
		<comments>http://hihn.org/2009/04/simpler-taschenrechner-in-c/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 12:21:06 +0000</pubDate>
		<dc:creator>rh</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[taschenrechner]]></category>

		<guid isPermaLink="false">https://hihn.org/?p=386</guid>
		<description><![CDATA[Tolle Übungsaufgabe in C: ein simpler Konsolentaschenrechner der addieren, multiplizieren, subtrahiren und divieren kann. Ausserdem soll das Programm beendet werden wenn man &#8216;q&#8217; eingibt. /*********************** * Ein einfacher Taschenrechner * * Rainer Hihn */ #include void exit(int); float calculate(char optr, float opr1, float opr2) { float rErg = 0; switch(optr) { /** * addieren */ [...]]]></description>
			<content:encoded><![CDATA[<p>Tolle Übungsaufgabe in C: ein simpler Konsolentaschenrechner der addieren, multiplizieren, subtrahiren und divieren kann. Ausserdem soll das Programm beendet werden wenn man &#8216;q&#8217; eingibt.</p>
<pre>
/***********************
 * Ein einfacher Taschenrechner
 *
 * Rainer Hihn
 */

#include <stdio.h>

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 <return> Operand1 <return> Operand2 <return> \n");

        /**
         * Benutzereingabe Operator
         */
        printf("Bitte Eingabe Operator \n");
        scanf(" %c", &#038;cOptr);

        /**
         * Programm wird beendet wenn
         * 'q' eingeben wird
         */
        if(cOptr == 'q')
        {
            break;
        }

        /**
         * Benutzereingabe Operand 1
         */
        printf("Bitte Eingabe Operand1: \n");
        scanf(" %f", &#038;fOpr1);
        /**
         * Benutzereingabe Operand 2
         */
        printf("Bitte Eingabe Operand2: \n");
        scanf(" %f", &#038;fOpr2);

        if(cOptr == '/' &#038;&#038; 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;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://hihn.org/2009/04/simpler-taschenrechner-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Umrechnung Dezimalzahl nach Dualzahl</title>
		<link>http://hihn.org/2009/04/umrechnung-dezimalzahl-nach-dualzahl/</link>
		<comments>http://hihn.org/2009/04/umrechnung-dezimalzahl-nach-dualzahl/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 07:59:01 +0000</pubDate>
		<dc:creator>rh</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[dezimalzahl]]></category>
		<category><![CDATA[dualzahl]]></category>

		<guid isPermaLink="false">https://hihn.org/?p=384</guid>
		<description><![CDATA[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; /** * [...]]]></description>
			<content:encoded><![CDATA[<p>Tolle Übungsaufgabe in C: ein Programm das eine Dezimalzahl in eine Dualzahl umwandelt.</p>
<pre>
/***********************
 * Umrechnung Dezimalzahl
 * nach Dualzahl
 *
 * Rainer Hihn
 */

#include <stdio.h>

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", &#038;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;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://hihn.org/2009/04/umrechnung-dezimalzahl-nach-dualzahl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ascii-Tabelle in C</title>
		<link>http://hihn.org/2009/03/ascii-tabelle-in-c/</link>
		<comments>http://hihn.org/2009/03/ascii-tabelle-in-c/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 18:27:04 +0000</pubDate>
		<dc:creator>rh</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[c]]></category>

		<guid isPermaLink="false">https://hihn.org/?p=375</guid>
		<description><![CDATA[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]]></description>
			<content:encoded><![CDATA[<p>Tolle Übungsaufgabe in C: eine <a href="http://de.wikipedia.org/wiki/ASCII-Tabelle#ASCII-Tabelle">Ascii-Tabelle</a> anzeigen.</p>
<pre>
/***********************
 * Ascii Tabelle
 *
 * Rainer Hihn
 */

#include <stdio.h>

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");
    }

}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://hihn.org/2009/03/ascii-tabelle-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multiplikationstabelle in C</title>
		<link>http://hihn.org/2009/01/multiplikationstabelle-in-c/</link>
		<comments>http://hihn.org/2009/01/multiplikationstabelle-in-c/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 09:23:22 +0000</pubDate>
		<dc:creator>rh</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[c]]></category>

		<guid isPermaLink="false">https://hihn.org/?p=291</guid>
		<description><![CDATA[Tolle Übungsaufgabe in C: eine Multiplikationstabelle. Ausgabe (mit 3 Spalten und 4 Zeilen): 1 2 3 2 4 6 3 6 9 4 8 12 Lösungsvorschlag mit einer for-Schleife: /* * Multiplikationstabelle mit for-Schleife * * by Rainer Hihn */ #include int main(void) { /* * vertical and horizontal limit */ int hlimit; int vlimit; [...]]]></description>
			<content:encoded><![CDATA[<p>Tolle Übungsaufgabe in C: eine Multiplikationstabelle.<br />
Ausgabe (mit 3 Spalten und 4 Zeilen):</p>
<pre>
1       2       3
2       4       6
3       6       9
4       8       12
</pre>
<p>Lösungsvorschlag mit einer for-Schleife:</p>
<pre>
/*
 * Multiplikationstabelle mit for-Schleife
 *
 * by Rainer Hihn
 */

#include <stdio.h>

int main(void) {
	/*
	 * vertical and horizontal limit
	 */
	int hlimit;
	int vlimit;

	scanf("%d", &#038;hlimit);
	scanf("%d", &#038;vlimit);

	/*
	 * for loop vars
	 */
	int i;
	int j;

	for(i = 1; i <= vlimit; i++) {
		for(j = 1; j <= hlimit; j++) {
			printf("%d\t", i*j);
		}
		printf("\n");
	}	

	printf("\n");

	return 0;
}
</pre>
<p>while-Schleife:</p>
<pre>
/*
 * Multiplikationstabelle mit while-Schleife
 *
 * by Rainer Hihn
 */

#include <stdio.h>

int main(void) {
	/*
	 * vertical and horizontal limit
	 */
	int hlimit;
	int vlimit;

	scanf("%d", &#038;hlimit);
	scanf("%d", &#038;vlimit);

	 /*
	  * while loop vars
	  */
	 int i = 1;
	 int j = 1;

	while(i <= vlimit) {
		while(j <= hlimit) {
			printf("%d\t", i*j);
			j++;
		}
		j = 1;
		i++;
		printf("\n");
	}	

	printf("\n");

	return 0;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://hihn.org/2009/01/multiplikationstabelle-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

