zur Startseite ...

Jugendförderverein
Lübbenau e.V.

Vorstandsmitglieder
Vereinssatzung
Vereinsgeschichte
Veröffentlichungen

Technikschule
"Clever Inside"

Arbeitsgemeinschaften
Projekte
Sommerlager


Aktuell
Info und Kontakt
Impressum
Sponsoren

Forschen macht Spaß - Jugend gibt Gas

| Kooperationen | | Unterwegs mit dem JFV | | Carl Friedrich Gauß | | Computermuseum | | Sonstige Projekte |

Algorithmus in C

Die Aufgabe:

Das i-Tüpfelchen unseres Projektes über Carl Friedrich Gauss war die Entwicklung seines Eliminationsverfahrens in der Programmiersprache C. Nachdem die Mitglieder der Arbeitsgruppe Linux sich also mit der Umsetzung mithilfe von JavaScript gegeißelt hatten, kehrten sie zur Wurzel, nämlich der Linux-Oberfläche, zurück. Daraufhin entstand folgender Quellcode, welcher eine vordefinierte dreidimensionale Matrix auflöst. (Zugegeben: Die Ausgabe ist schlichter als bei der JavaScript-Version.)

Die Lösung:
#include <stdio.h>

/* Ausgabeprozedur */
void printMatrix(float matrix[3][4])
{
   int i, j;

   for (i=0; i<3; i++)
   {
      for (j=0; j<4; j++)
      {
         printf("[%1.1f]\t",matrix[i][j]);
      }
      printf("\n");
   }
   printf("\n");
   return;
}

/* Hauptprogramm */
int main()
{
   int   i, ze1, sp1, ze2, sp2;
   float faktor, summe;
   float lsg[3], tmp[4];
   float matrix[3][4]=
   {  6, -3, -8, 39,
      4,  5,-12, 13,
      1,  1, -2,  6 };

   /* Auflösen */
   for (sp1=0; sp1<=1; sp1++)
   {
      ze2=sp1;
      for (ze1=ze2+1; ze1<=2; ze1++)
      {
         faktor=-(matrix[ze1][sp1]/matrix[ze2][sp1]);
         for (i=0; i<=3; i++)
         {
            tmp[i]=matrix[ze2][i];
            matrix[ze2][i]=matrix[ze2][i]*faktor;
            matrix[ze1][i]=matrix[ze1][i]+matrix[ze2][i];
         }
      printMatrix(matrix);
      }
   }

   /* Zurückrechnen */
   i=0;
   lsg[i]=matrix[2][3]/matrix[2][2];
   for (ze1=1; ze1>=0; ze1--)
   {
      summe=0;
      for (sp1=2; sp1>ze1; sp1--)
      {
         summe=summe+matrix[ze1][sp1]*lsg[2-sp1];
      }
      i++;
      lsg[i]=(matrix[ze1][3]-summe)/matrix[ze1][ze1];
   }

   /* Lösungsmenge */
   for (i=0; i<=2; i++)
   {
      printf("[%1.2f]\t\n",lsg[i]);
   }
   return 0;
}