<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Quelltext in Klasse schreiben]]></title><description><![CDATA[<p>Ich hab einen funktionierenden Quelltext geschrieben. Wollte diesen jez in eine Klasse umwandeln und bekomme nur Fehlermeldungen beim kompilieren.</p>
<pre><code class="language-cpp">// meine  main.cpp

#include &quot;CRS.h&quot;
#include&lt;fstream&gt;
#include&lt;iostream&gt;

int main(int argc, char** args) 
{   

	double** matrix_A; // Matrix wird deklariert
	int matrix_A_n; 
	// Container werden deklariert

	if(argc!=2) {
		cout &lt;&lt; &quot;Bitte Namen der einzulesenden Datei eingeben&quot; &lt;&lt; endl;
		return 1;
	}
	//einlesen vom Dateinamen
	infile = string(args[1]); 
	cout &lt;&lt; &quot;The determinant of &quot;&lt;&lt;endl;
	// liest Matrix in CRS-Format ein
	read(matrix_A, matrix_A_n, infile, alpha , kappa , rho);
    // gibt die Matrix im CRS_Format aus 
    //print( alpha, kappa, rho); 
	dealloc(matrix_A, matrix_A_n); // Matrix wird gelöscht

	int s;
    cin &gt;&gt; s;

	return 0;
}
</code></pre>
<pre><code>// CRS.cpp
/**
 * Übung B 24.01.2010
 * ===============================================
 * 
 * Dieses Programm errechnet Determinanten im CRS-Format
 **/

#include &lt;iostream&gt;
#include &lt;sstream&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
#include &lt;cmath&gt;
#include &quot;CRS.h&quot;

using namespace std;

/**
 * Aufgabenteil 1) Einlesen der Matrix im CRS-Format
 **/

void CRS:: read(double**&amp; mem, int&amp; n, const string&amp; fn, vector&lt;double&gt;&amp;  alpha,vector&lt;double&gt;&amp; kappa, vector&lt;double&gt;&amp; rho) 
{
	double buffer;
	ifstream ifs(fn.c_str());  // liest Textdatei aus dem Stream ein
	if( ifs.is_open() ) {      // öffnet Testdatei
		ifs &gt;&gt; n;              //liest Dimension aus
//		alpha.reserve (n*n);   // reserviert Speicher
//		kappa.reserve ((n)*(n)); 
		alloc(mem, n, n);      // Speicher für Matrix wird reserviert
		for(int i=0;!ifs.eof() &amp;&amp; i&lt;n;i++)    // Matrix wird gefüllt
			for(int j=0;!ifs.eof() &amp;&amp; j&lt;n;j++) 
				ifs &gt;&gt; mem[i][j];
		ifs.close();           // Stream wird geschlossen
	}
	else {
		cout &lt;&lt; &quot;error: the file &quot;&lt;&lt;fn&lt;&lt;&quot; cannot opened for reading.&quot;&lt;&lt;endl;
	}
	int position=0;

	// Wandelt die Matrix in CRS Format um
   rho.push_back(0);

    for(int zeile=0; zeile &lt;n; zeile++)
     {   
       for(int spalte=0; spalte&lt; n; spalte++)
       {              
             if( mem[zeile][spalte]!= 0)
                 { alpha.push_back(mem[zeile][spalte]);  // Alpha enthält nicht 0 Elemente der Matrix               
                   kappa.push_back(spalte);              // Kappa speichert die Position der Elemente in der Zeile 

                      position++;
                 }
       }
    rho.push_back(position);                             // rho enthält Zeilenumbrüche    
    }

  print( alpha, kappa, rho);                             //Matrix im CRS_Format wird ausgegeben 
  cout &lt;&lt; &quot;is: &quot; &lt;&lt; det(n, alpha, kappa , rho) &lt;&lt; endl;  // Determinante wird berechnet

}

//Allocation of memory
void CRS::alloc(double**&amp; mem, int m, int n) 
{ 

	mem = new double*[m];
	for(int i=0;i&lt;m;i++) {
		mem[i] = new double[n];
	}
}

// Deallocation of memory
void CRS:: dealloc(double**&amp; mem, const int n) 
{
	if(mem!=NULL) {
		for(int i=0;i&lt;n;i++)
			delete [] mem[i];
		delete [] mem;
		mem=NULL;
	}
}

//Ausgeben der Matrix im CRS-Format
void CRS:: print(vector&lt;double&gt; alpha,vector&lt;double&gt; kappa, vector&lt;double&gt; rho) 
{   
     vector&lt;double&gt;::const_iterator a;

     for (a=alpha.begin();a&lt;alpha.end();a++) cout &lt;&lt; *a &lt;&lt; &quot; &quot;;
      cout &lt;&lt; endl;

     for (a=kappa.begin();a&lt;kappa.end();a++) cout &lt;&lt; *a &lt;&lt; &quot; &quot;;
      cout &lt;&lt; endl;

     for (a=rho.begin();a&lt;rho.end();a++) cout &lt;&lt; *a &lt;&lt; &quot; &quot;;
      cout &lt;&lt; endl;  

      cout &lt;&lt;&quot;&quot; &lt;&lt;endl;      

}

//Erstellen der Untermatrix im CRS-Format
void CRS::create_submatrix(vector&lt;double&gt; alpha,vector&lt;double&gt; kappa, vector&lt;double&gt; rho,
                      vector&lt;double&gt;&amp; sub_alpha,vector&lt;double&gt;&amp; sub_kappa, vector&lt;double&gt;&amp; sub_rho, int knull)
{

  // sub_kappa und sub_alpha berechnen:   
  // da wo kappa 0 ist wird alpha =0 und kappa =-1 gesetzt
  // anschließend werden die Nullen in alpha und die -1'er in kappa gelöscht
for (int i= 0; i&lt;kappa.size(); i++){
    if(kappa.at(i)==0)
    {
     kappa.at(i) =-1;
     alpha.at(i)=0;
    }
 } 

 // zeile zum&quot;löschen&quot; markieren
 if(rho.at(knull+1)== rho.at(rho.size()-1))
 {
  for(int i=knull;i&lt;knull+(alpha.size()-knull-1) ; i++)
         {
              alpha.at(i)=0; 
              kappa.at(i)=-1;             
         }

     }
     else{
           for(int i=knull;i&lt;rho.at(knull+1) ; i++)
           {
              alpha.at(i)=0; 
              kappa.at(i)=-1;             
           }     
         }

 // sub_kappa und sub_alpha füllen
     for(int i= 0; i&lt;alpha.size(); i++)
     {
      if(alpha.at(i)!=0 &amp;&amp; kappa.at(i)!=-1)
      {
        sub_alpha.push_back(alpha.at(i)) ;
        sub_kappa.push_back(kappa.at(i)-1) ;                       
      }            
     }         

     //rho bestimmen
    int nullzaehler; //zählt die Nullen in Alpha
    sub_rho.push_back(0);

    for(int i= 1; i&lt;rho.size()-1; i++)
   {       
    if( alpha.at(rho.at(i))!=0 )
    {    
         nullzaehler=0;
         for(int j=0; j&lt;rho.at(i);j++)
         { if(alpha.at(j)==0)
           { 
            nullzaehler++;
           }
          }
         sub_rho.push_back(rho.at(i)-nullzaehler);           
     }

     if(alpha.at(rho.at(i))==0 &amp;&amp; rho.at(i)!=rho.at(i+1))
     {   
         nullzaehler=0;
         for(int j=0; j&lt;rho.at(i);j++)
         { if(alpha.at(j)==0)
           { 

            nullzaehler++;
           }
         }
          sub_rho.push_back(rho.at(i)-nullzaehler);          
     }

     }

   /* for( int i=1; i&lt; sub_rho.size(); i++)
          {
              if(sub_rho.at(i)== sub_rho.at(i-1))
              {
                 sub_rho.at(i-1)=-1;
              }  
          } 

     vector&lt;double&gt; subsub_rho;  //temporäres Ausweich-Rho
     subsub_rho=sub_rho;
     sub_rho.clear();            //sub_rho wird geleert
     //es darf keine doppelten Einträge in sub_rho geben(außer möglicherweise am ende, aber
     // das letzte Element wird erst eingefügt, wenn der rest von sub_rho fertig ist)      
     for( int i=0; i&lt; subsub_rho.size(); i++){

           if(subsub_rho.at(i)!=-1)
              {
                 sub_rho.push_back(subsub_rho.at(i)) ;

              }         
          }*/
     sub_rho.push_back(sub_alpha.size());   //Einfügen des letzten Elements in sub_rho, dass angibt,
                                            //wieviele Nicht-Null-Elemente in der Matrix existieren 
   print(sub_alpha, sub_kappa, sub_rho);  //Ausgeben der Untermatrix im CRS-Format 

}

//Methode zur Berechnung der Determinante
double CRS::det( int n,vector&lt;double&gt; alpha,vector&lt;double&gt; kappa,vector&lt;double&gt; rho )
{	
	vector&lt;double&gt; sub_alpha; 
//	sub_alpha.reserve ((n)*(n)); //Speicherreservierung für sub_alpha
    vector&lt;double&gt; sub_kappa;
//   	sub_kappa.reserve ((n)*(n)); 
	vector&lt;double&gt; sub_rho ;

	double d=0.;
	int j=0;
	//Fallunterscheidung für verschiedene Dimensionen
	switch(n) {
		case 0: {
			cerr &lt;&lt; &quot;Cannot compute determinant of matrix with dimension 0.&quot;&lt;&lt;endl;
			exit(1);
		}
		case 1: {
			d = alpha.at(0);
			break;
		}
		case 2: {
              // 0 oder 1 Element
              cout &lt;&lt; &quot;fall 2&quot;;
              if(alpha.size()&lt;=1) 
             {
             d=0;
             return d;
             }           

              // 2 Elemente in der Matrix
              if(alpha.size()==2) 
             { 
              // Eine Nullzeile existiert
               if(rho.at(1)==2)// ein Zeilenumbruch und 1mal Anzahl der Elemente
               {
                d=0;   return d;              
               }
                   // Nullspalte
               if(kappa.at(0)==kappa.at(1))
               {
                d=0; return d;
               }
               // 01  zum Beispiel
               // 10
              if(kappa.at(0)==1 &amp;&amp; kappa.at(1)!=1)
               {
                d=-alpha.at(0)*alpha.at(1) ;   return d;           
               }
               // 10  zum Beispiel
               // 01
               else{d=alpha.at(0)*alpha.at(1) ; return d;}
             }

            // 3Elemente in der Matrix 
            if(alpha.size() ==3)
            {
                //rho an der 2.Stelle = 1 bedeutet das in der 1.Zeile nur 1 Element steht     
                if( rho.at(1)== 1)
                {  
                        if( kappa.at(0)== 1)
                        {
                         d=-alpha.at(0) * alpha.at(1); return d;
                        }
                        else
                        {
                          d=alpha.at(0) * alpha.at(2); return d;
                        }
                }
                 //rho an der 2.Stelle = 2 bedeutet das in der 2.Zeile nur 1 Element steht
                if( rho.at(1)== 2)
                {
                        if( kappa.at(2)== 1)
                        {
                         d=alpha.at(0) * alpha.at(2); return d;
                        }
                        else
                        {
                          d=-alpha.at(1) * alpha.at(2); return d;
                        }
                }
           } 

        // wenn die 2x2 Matrix voll besetzt ist, dann wird die determinate normal berechnet
             if(rho.at(rho.size()-1) == 4)
             { 	
			   d = alpha.at(0) * alpha.at(3)-alpha.at(1) * alpha.at(2);  return d;		  
              }	
            break;
        }

		default: {

        double res;

		for(int j=0;j&lt;n;j++)
       {  
         res= pow(-1.0,(double)j) ;       

         //Untermatrizen sollen nur dann erstellt werden, wenn der Faktor, also die Zahl mit
         //der die Untermatrix multipliziert wird ungleich Null ist         	
		 if (kappa.at(j)== 0)
         {                 
    	  int knull= j;
    	  create_submatrix(alpha, kappa, rho,sub_alpha, sub_kappa, sub_rho, knull);
    	  res*=alpha.at(j)*det(n-1, sub_alpha, sub_kappa, sub_rho);
          d+=res;      
         }//else{return d=0;}

       }
			break;

	  }

	} 
  //print(sub_alpha, sub_kappa, sub_rho);
	return d;

}

///////////////////////////////////////////////////////////////////////////////
</code></pre>
<p>// CRS.h</p>
<p>#include &lt;iostream&gt;<br />
#include &lt;vector&gt;</p>
<p>using namespace std;<br />
class CRS{</p>
<p>public:<br />
CRS::CRS(){}<br />
CRS::~CRS() {}<br />
vector&lt;double&gt; alpha;<br />
vector&lt;double&gt; kappa;<br />
vector&lt;double&gt; rho ;</p>
<p>void read(double**&amp; mem, int&amp; n, const string&amp; fn,vector&lt;double&gt;&amp; alpha,vector&lt;double&gt;&amp; kappa, vector&lt;double&gt;&amp; rho) ;</p>
<p>int main(int argc, char** args) ;<br />
void alloc(double**&amp; mem, int m, int n) ;<br />
void dealloc(double**&amp; mem, const int n) ;</p>
<p>double det(int n,vector&lt;double&gt; alpha,vector&lt;double&gt; kappa,vector&lt;double&gt; rho);<br />
void print(vector&lt;double&gt; alpha,vector&lt;double&gt; kappa, vector&lt;double&gt; rho);<br />
void create_submatrix(vector&lt;double&gt; alpha,vector&lt;double&gt; kappa, vector&lt;double&gt; rho,<br />
vector&lt;double&gt;&amp; sub_alpha,vector&lt;double&gt;&amp; sub_kappa, vector&lt;double&gt;&amp; sub_rho , int knull);</p>
<p>string infile;</p>
<p>};<br />
[cpp]</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/259615/quelltext-in-klasse-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 19:43:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/259615.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 25 Jan 2010 17:57:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Quelltext in Klasse schreiben on Mon, 25 Jan 2010 17:57:14 GMT]]></title><description><![CDATA[<p>Ich hab einen funktionierenden Quelltext geschrieben. Wollte diesen jez in eine Klasse umwandeln und bekomme nur Fehlermeldungen beim kompilieren.</p>
<pre><code class="language-cpp">// meine  main.cpp

#include &quot;CRS.h&quot;
#include&lt;fstream&gt;
#include&lt;iostream&gt;

int main(int argc, char** args) 
{   

	double** matrix_A; // Matrix wird deklariert
	int matrix_A_n; 
	// Container werden deklariert

	if(argc!=2) {
		cout &lt;&lt; &quot;Bitte Namen der einzulesenden Datei eingeben&quot; &lt;&lt; endl;
		return 1;
	}
	//einlesen vom Dateinamen
	infile = string(args[1]); 
	cout &lt;&lt; &quot;The determinant of &quot;&lt;&lt;endl;
	// liest Matrix in CRS-Format ein
	read(matrix_A, matrix_A_n, infile, alpha , kappa , rho);
    // gibt die Matrix im CRS_Format aus 
    //print( alpha, kappa, rho); 
	dealloc(matrix_A, matrix_A_n); // Matrix wird gelöscht

	int s;
    cin &gt;&gt; s;

	return 0;
}
</code></pre>
<pre><code>// CRS.cpp
/**
 * Übung B 24.01.2010
 * ===============================================
 * 
 * Dieses Programm errechnet Determinanten im CRS-Format
 **/

#include &lt;iostream&gt;
#include &lt;sstream&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
#include &lt;cmath&gt;
#include &quot;CRS.h&quot;

using namespace std;

/**
 * Aufgabenteil 1) Einlesen der Matrix im CRS-Format
 **/

void CRS:: read(double**&amp; mem, int&amp; n, const string&amp; fn, vector&lt;double&gt;&amp;  alpha,vector&lt;double&gt;&amp; kappa, vector&lt;double&gt;&amp; rho) 
{
	double buffer;
	ifstream ifs(fn.c_str());  // liest Textdatei aus dem Stream ein
	if( ifs.is_open() ) {      // öffnet Testdatei
		ifs &gt;&gt; n;              //liest Dimension aus
//		alpha.reserve (n*n);   // reserviert Speicher
//		kappa.reserve ((n)*(n)); 
		alloc(mem, n, n);      // Speicher für Matrix wird reserviert
		for(int i=0;!ifs.eof() &amp;&amp; i&lt;n;i++)    // Matrix wird gefüllt
			for(int j=0;!ifs.eof() &amp;&amp; j&lt;n;j++) 
				ifs &gt;&gt; mem[i][j];
		ifs.close();           // Stream wird geschlossen
	}
	else {
		cout &lt;&lt; &quot;error: the file &quot;&lt;&lt;fn&lt;&lt;&quot; cannot opened for reading.&quot;&lt;&lt;endl;
	}
	int position=0;

	// Wandelt die Matrix in CRS Format um
   rho.push_back(0);

    for(int zeile=0; zeile &lt;n; zeile++)
     {   
       for(int spalte=0; spalte&lt; n; spalte++)
       {              
             if( mem[zeile][spalte]!= 0)
                 { alpha.push_back(mem[zeile][spalte]);  // Alpha enthält nicht 0 Elemente der Matrix               
                   kappa.push_back(spalte);              // Kappa speichert die Position der Elemente in der Zeile 

                      position++;
                 }
       }
    rho.push_back(position);                             // rho enthält Zeilenumbrüche    
    }

  print( alpha, kappa, rho);                             //Matrix im CRS_Format wird ausgegeben 
  cout &lt;&lt; &quot;is: &quot; &lt;&lt; det(n, alpha, kappa , rho) &lt;&lt; endl;  // Determinante wird berechnet

}

//Allocation of memory
void CRS::alloc(double**&amp; mem, int m, int n) 
{ 

	mem = new double*[m];
	for(int i=0;i&lt;m;i++) {
		mem[i] = new double[n];
	}
}

// Deallocation of memory
void CRS:: dealloc(double**&amp; mem, const int n) 
{
	if(mem!=NULL) {
		for(int i=0;i&lt;n;i++)
			delete [] mem[i];
		delete [] mem;
		mem=NULL;
	}
}

//Ausgeben der Matrix im CRS-Format
void CRS:: print(vector&lt;double&gt; alpha,vector&lt;double&gt; kappa, vector&lt;double&gt; rho) 
{   
     vector&lt;double&gt;::const_iterator a;

     for (a=alpha.begin();a&lt;alpha.end();a++) cout &lt;&lt; *a &lt;&lt; &quot; &quot;;
      cout &lt;&lt; endl;

     for (a=kappa.begin();a&lt;kappa.end();a++) cout &lt;&lt; *a &lt;&lt; &quot; &quot;;
      cout &lt;&lt; endl;

     for (a=rho.begin();a&lt;rho.end();a++) cout &lt;&lt; *a &lt;&lt; &quot; &quot;;
      cout &lt;&lt; endl;  

      cout &lt;&lt;&quot;&quot; &lt;&lt;endl;      

}

//Erstellen der Untermatrix im CRS-Format
void CRS::create_submatrix(vector&lt;double&gt; alpha,vector&lt;double&gt; kappa, vector&lt;double&gt; rho,
                      vector&lt;double&gt;&amp; sub_alpha,vector&lt;double&gt;&amp; sub_kappa, vector&lt;double&gt;&amp; sub_rho, int knull)
{

  // sub_kappa und sub_alpha berechnen:   
  // da wo kappa 0 ist wird alpha =0 und kappa =-1 gesetzt
  // anschließend werden die Nullen in alpha und die -1'er in kappa gelöscht
for (int i= 0; i&lt;kappa.size(); i++){
    if(kappa.at(i)==0)
    {
     kappa.at(i) =-1;
     alpha.at(i)=0;
    }
 } 

 // zeile zum&quot;löschen&quot; markieren
 if(rho.at(knull+1)== rho.at(rho.size()-1))
 {
  for(int i=knull;i&lt;knull+(alpha.size()-knull-1) ; i++)
         {
              alpha.at(i)=0; 
              kappa.at(i)=-1;             
         }

     }
     else{
           for(int i=knull;i&lt;rho.at(knull+1) ; i++)
           {
              alpha.at(i)=0; 
              kappa.at(i)=-1;             
           }     
         }

 // sub_kappa und sub_alpha füllen
     for(int i= 0; i&lt;alpha.size(); i++)
     {
      if(alpha.at(i)!=0 &amp;&amp; kappa.at(i)!=-1)
      {
        sub_alpha.push_back(alpha.at(i)) ;
        sub_kappa.push_back(kappa.at(i)-1) ;                       
      }            
     }         

     //rho bestimmen
    int nullzaehler; //zählt die Nullen in Alpha
    sub_rho.push_back(0);

    for(int i= 1; i&lt;rho.size()-1; i++)
   {       
    if( alpha.at(rho.at(i))!=0 )
    {    
         nullzaehler=0;
         for(int j=0; j&lt;rho.at(i);j++)
         { if(alpha.at(j)==0)
           { 
            nullzaehler++;
           }
          }
         sub_rho.push_back(rho.at(i)-nullzaehler);           
     }

     if(alpha.at(rho.at(i))==0 &amp;&amp; rho.at(i)!=rho.at(i+1))
     {   
         nullzaehler=0;
         for(int j=0; j&lt;rho.at(i);j++)
         { if(alpha.at(j)==0)
           { 

            nullzaehler++;
           }
         }
          sub_rho.push_back(rho.at(i)-nullzaehler);          
     }

     }

   /* for( int i=1; i&lt; sub_rho.size(); i++)
          {
              if(sub_rho.at(i)== sub_rho.at(i-1))
              {
                 sub_rho.at(i-1)=-1;
              }  
          } 

     vector&lt;double&gt; subsub_rho;  //temporäres Ausweich-Rho
     subsub_rho=sub_rho;
     sub_rho.clear();            //sub_rho wird geleert
     //es darf keine doppelten Einträge in sub_rho geben(außer möglicherweise am ende, aber
     // das letzte Element wird erst eingefügt, wenn der rest von sub_rho fertig ist)      
     for( int i=0; i&lt; subsub_rho.size(); i++){

           if(subsub_rho.at(i)!=-1)
              {
                 sub_rho.push_back(subsub_rho.at(i)) ;

              }         
          }*/
     sub_rho.push_back(sub_alpha.size());   //Einfügen des letzten Elements in sub_rho, dass angibt,
                                            //wieviele Nicht-Null-Elemente in der Matrix existieren 
   print(sub_alpha, sub_kappa, sub_rho);  //Ausgeben der Untermatrix im CRS-Format 

}

//Methode zur Berechnung der Determinante
double CRS::det( int n,vector&lt;double&gt; alpha,vector&lt;double&gt; kappa,vector&lt;double&gt; rho )
{	
	vector&lt;double&gt; sub_alpha; 
//	sub_alpha.reserve ((n)*(n)); //Speicherreservierung für sub_alpha
    vector&lt;double&gt; sub_kappa;
//   	sub_kappa.reserve ((n)*(n)); 
	vector&lt;double&gt; sub_rho ;

	double d=0.;
	int j=0;
	//Fallunterscheidung für verschiedene Dimensionen
	switch(n) {
		case 0: {
			cerr &lt;&lt; &quot;Cannot compute determinant of matrix with dimension 0.&quot;&lt;&lt;endl;
			exit(1);
		}
		case 1: {
			d = alpha.at(0);
			break;
		}
		case 2: {
              // 0 oder 1 Element
              cout &lt;&lt; &quot;fall 2&quot;;
              if(alpha.size()&lt;=1) 
             {
             d=0;
             return d;
             }           

              // 2 Elemente in der Matrix
              if(alpha.size()==2) 
             { 
              // Eine Nullzeile existiert
               if(rho.at(1)==2)// ein Zeilenumbruch und 1mal Anzahl der Elemente
               {
                d=0;   return d;              
               }
                   // Nullspalte
               if(kappa.at(0)==kappa.at(1))
               {
                d=0; return d;
               }
               // 01  zum Beispiel
               // 10
              if(kappa.at(0)==1 &amp;&amp; kappa.at(1)!=1)
               {
                d=-alpha.at(0)*alpha.at(1) ;   return d;           
               }
               // 10  zum Beispiel
               // 01
               else{d=alpha.at(0)*alpha.at(1) ; return d;}
             }

            // 3Elemente in der Matrix 
            if(alpha.size() ==3)
            {
                //rho an der 2.Stelle = 1 bedeutet das in der 1.Zeile nur 1 Element steht     
                if( rho.at(1)== 1)
                {  
                        if( kappa.at(0)== 1)
                        {
                         d=-alpha.at(0) * alpha.at(1); return d;
                        }
                        else
                        {
                          d=alpha.at(0) * alpha.at(2); return d;
                        }
                }
                 //rho an der 2.Stelle = 2 bedeutet das in der 2.Zeile nur 1 Element steht
                if( rho.at(1)== 2)
                {
                        if( kappa.at(2)== 1)
                        {
                         d=alpha.at(0) * alpha.at(2); return d;
                        }
                        else
                        {
                          d=-alpha.at(1) * alpha.at(2); return d;
                        }
                }
           } 

        // wenn die 2x2 Matrix voll besetzt ist, dann wird die determinate normal berechnet
             if(rho.at(rho.size()-1) == 4)
             { 	
			   d = alpha.at(0) * alpha.at(3)-alpha.at(1) * alpha.at(2);  return d;		  
              }	
            break;
        }

		default: {

        double res;

		for(int j=0;j&lt;n;j++)
       {  
         res= pow(-1.0,(double)j) ;       

         //Untermatrizen sollen nur dann erstellt werden, wenn der Faktor, also die Zahl mit
         //der die Untermatrix multipliziert wird ungleich Null ist         	
		 if (kappa.at(j)== 0)
         {                 
    	  int knull= j;
    	  create_submatrix(alpha, kappa, rho,sub_alpha, sub_kappa, sub_rho, knull);
    	  res*=alpha.at(j)*det(n-1, sub_alpha, sub_kappa, sub_rho);
          d+=res;      
         }//else{return d=0;}

       }
			break;

	  }

	} 
  //print(sub_alpha, sub_kappa, sub_rho);
	return d;

}

///////////////////////////////////////////////////////////////////////////////
</code></pre>
<p>// CRS.h</p>
<p>#include &lt;iostream&gt;<br />
#include &lt;vector&gt;</p>
<p>using namespace std;<br />
class CRS{</p>
<p>public:<br />
CRS::CRS(){}<br />
CRS::~CRS() {}<br />
vector&lt;double&gt; alpha;<br />
vector&lt;double&gt; kappa;<br />
vector&lt;double&gt; rho ;</p>
<p>void read(double**&amp; mem, int&amp; n, const string&amp; fn,vector&lt;double&gt;&amp; alpha,vector&lt;double&gt;&amp; kappa, vector&lt;double&gt;&amp; rho) ;</p>
<p>int main(int argc, char** args) ;<br />
void alloc(double**&amp; mem, int m, int n) ;<br />
void dealloc(double**&amp; mem, const int n) ;</p>
<p>double det(int n,vector&lt;double&gt; alpha,vector&lt;double&gt; kappa,vector&lt;double&gt; rho);<br />
void print(vector&lt;double&gt; alpha,vector&lt;double&gt; kappa, vector&lt;double&gt; rho);<br />
void create_submatrix(vector&lt;double&gt; alpha,vector&lt;double&gt; kappa, vector&lt;double&gt; rho,<br />
vector&lt;double&gt;&amp; sub_alpha,vector&lt;double&gt;&amp; sub_kappa, vector&lt;double&gt;&amp; sub_rho , int knull);</p>
<p>string infile;</p>
<p>};<br />
[cpp]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1844670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1844670</guid><dc:creator><![CDATA[claudia_vw]]></dc:creator><pubDate>Mon, 25 Jan 2010 17:57:14 GMT</pubDate></item></channel></rss>