Simpler Taschenrechner in C

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

Umrechnung Dezimalzahl nach Dualzahl

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

fusefs-kmod-Fehler beim Kompilieren

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.

Ascii-Tabelle in C

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

}

audacious Plugin für XChat

Plugin für XChat um den aktuellen Titel in audacious anzuzeigen:

Download

Das Ausgabeformat entspricht dem Format der audacious Playlist.

Aufruf erfolg aus XChat raus mit

/audacious

PostgreSQL Timestamp zu Unix Timestamp

So kann man aus einem PostgreSQL Timestamp einen Unix Timestamp machen:

select  extract(epoch from "timestamp"(postgres_timestamp)) as unix_timestamp from table

Mit mplayer Bilder aus Videos extrahieren

Mit folgendem Befehl kann man mittels mplayer einzelne Bilder aus Videos extrahieren:

mplayer -frames 10 -ss 60 -vo png outdir=/home/foo/:quality=75 /path/to/video.avi 

-vo png definiert das Bildformat (möglich wäre hier z.B. auch “jpeg”)
-outdir=/home/foo/test/ definiert das Verzeichnis in dem das Bild gespeichert werden soll
-frames 10 definiert wieviele Bilder extrahiert werden sollen
-ss 200 definiert das Offset, also die Stelle im Video, an der die Bilder extrahiert werden sollen

Upload Progressbar unter Debian mit PHP5

Es gibt einige fertige JavaScripts mit denen man genaue Informationen über Dateiuploads bekommen kann (z.B. Progress Bars):
http://t.wits.sg/misc/jQueryProgressBar/demo.php
http://framework.zend.com/manual/en/zend.progressbar.html

Allerdings funktionieren diese Scripte nicht mit einer Standardinstallation von PHP5, da eine Extension fehlt.
Folgende Fehlermeldung taucht auf:

PHP Fatal error:  Call to undefined function uploadprogress_get_info()

Um diese Funktion benutzen zu können muss pear installiert werden.

apt-get install php-pear

Danach muss die Extension installiert werden:

pecl install uploadprogress

Un in die php.ini geschrieben werden:

extension=uploadprogress.so

Wenn man jetzt folgende Fehlermeldung erhält:

sh: phpize: command not found
ERROR: `phpize' failed

Muss man noch das Paket php5-dev installieren:

apt-get install php5-dev

Exaile Plugin für XChat

Plugin für XChat um den aktuellen Titel (mit Interpret und Album) aus Exaile anzuzeigen:

Download

Die Ausgabe sieht so aus:

* vesperlynd is listening to 'Bob Dylan - 4Th Time Around' from 'Blonde On Blonde'

Aufruf erfolg aus XChat raus mit

/exaile

International programmieren mit Zend_Translate

Mit dem im Zend Framework enthaltenen Zend Translate kann man komfortabel international programmieren.

Beispiel mit Zend_Translate_Adapter_Array:

In der de.php werden die deutschen Sprachvariablen gespeichert.

/**
 * de.php
 */
return array(
    'message1' => 'das ist die erste Nachricht'
);

In der en.php die englischen usw.

/**
 * en.php
 */
return array(
    'message1' => 'this is the first message'
);

Initialisierung und Ausgabe:

/**
 * index.php
 */
$translate= new Zend_Translate('array', './lang/en.php', 'en');
echo $translate->_("message1");

Benutzung mit smarty:

$var = $translate->_("message1");
$s->assign("var", $var);

« Older Entries | Newer Entries »