Programm in mehreren Übersetzungseinheiten verteilen

Justin09

Mitglied
Hallo zusammen,

hab folgendes Programm "lgs.cpp":

Code:
#include <iostream>
#include <iomanip>

using namespace std;

const int n=10; //Systemdimension

//Ueberschreibt A mit der entsprechenden LU-Zerlegung 
//(ohne Pivotisierung)
void lu(double A[n][n]) { 
  for(int k=0 ; k<n ; k++) {
    for(int i=k+1 ; i<n ; i++) {
      A[i][k] /= A[k][k];
      for(int j=k+1 ; j<n ; j++)
        A[i][j] -= A[i][k] * A[k][j];
    }    
  }
}

//Bestimmt Loesung x des Gleichungssystems aus LU-Zerlegung
//und rechter Seite b
void solve(double LU[n][n], double* b, double* x) {
  double y[n];

  for(int i=0 ; i<n ; i++) {
    y[i] = b[i];
    for(int j=0 ; j<i ; j++)
      y[i] -= LU[i][j]*y[j];
  }

  for(int i=n-1 ; i>=0 ; i--) {
    x[i] = y[i];
    for(int j=n-1 ; j>i ; j--)
      x[i] -= LU[i][j]*x[j];
    x[i] /= LU[i][i];
  }
}


int main() {
  double b[n], x[n];
  double A[n][n];

  //Matrix A und rechte Seite mit Werten fuellen
  for(int i=0 ; i<n ; i++) {
    b[i] = 1.0;
    for(int j=0 ; j<n ; j++)
      if(i>j) A[i][j] = i+1; else A[i][j] = j+1;
  }

  lu(A);

  solve(A,b,x);

  cout << setprecision(10) << endl;
  cout << "Loesungsvektor:" << endl;
  for(int i=0 ; i<n ; i++)
    cout << x[i] << endl;
  cout << endl;

  return 0;
}

Ich muss jetzt das Programm in mehreren Übersetzungseinheiten verteilen, bzw ich beide Funktionen "lu" und "solve" in eine eigene Quelldatei namens "loeser.cpp" auslagern, eine passende Headerdatei "loeser.hpp" schreiben und der Headerdatei einen Wächter hinzufügen.


Zu guter Letzt soll ich ein "makefile " schreiben, wo ich mit einem einfachen Aufruf von make das ganze dann kompilieren kann!

Ich bin ein absoluter Laie in dem Gebiet.

Ich danke im voraus
Gruß Justin
 
Hallo deepthroat,

also muss ich jetzt eine Datei namens loeser.cpp erstellen und die beide voids einfügen oder?

danach soll ich eine header datei schreiben und dass was ich nicht versteh ist "was ein wächter ist"!

Das Hauptprogramm kann ich dann auch einzeln aufstellen!

Danke

PS: wie mach ich einen make unter Windows Vista?
 
also muss ich jetzt eine Datei namens loeser.cpp erstellen und die beide voids einfügen oder?
Ja, da müssen die beiden Funktionen rein. In die Headerdatei gehören die Deklarationen der Funktionen (die Prototypen).
danach soll ich eine header datei schreiben und dass was ich nicht versteh ist "was ein wächter ist"!
Wenn du nach "c++ wächter" suchst, findest du z.B. das hier (2. Treffer):
http://books.google.de/books?id=3rr...d=0CA8Q6AEwAQ#v=onepage&q=c++ wächter&f=false

Gemeint ist damit also ein "Include-Wächter" (include guard).
PS: wie mach ich einen make unter Windows Vista?
Was meinst du damit? Was du installieren mußt?

Gruß
 
Zurück