Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Błąd we wprowadzaniu zmiennych do tablicy n x n

Ostatnio zmodyfikowano 2014-06-25 10:29
Autor Wiadomość
kamilpl1994
Temat założony przez niniejszego użytkownika
[C++] Błąd we wprowadzaniu zmiennych do tablicy n x n
» 2014-06-25 09:52:32
A więc drugi dzisiejszy problem. Mam następujący kod :

C/C++
#include<iostream>
#include<iomanip>
#include<cstring>

using namespace std;


class Wyznacznik
{
public:
    int n, i, j;
    int * Wsk;
    double ** Macierz;
   
public:
   
    void Wprowadz_dane()
    {
        cout << fixed << setprecision( 4 );
        cout << "Podaj stopien macierzy\n";
        cin >> n;
        cout << endl;
       
        Macierz = new double *[ n ];
       
        for( i = 0; i < n; i++ )
        {
           
            Macierz[ i ] = new double[ n ];
           
            for( j = 0; j < n; j++ )
                 cout << "[" << i << "," << j << "]=";
           
            cin >> Macierz[ i ][ j ];
            cout << endl;
           
        }
       
        Wsk = new int[ n ];
       
        for( i = 0; i < n; i++ )
             Wsk[ i ] = i;
       
        cout << endl;
    }
   
    double det( int n, int w, int * Wsk, double ** Macierz )
    {
        int i, j, k, m, * KK;
        double s;
       
        if( n == 1 )
       
             return Macierz[ w ][ Wsk[ 0 ] ];
       
        else
        {
           
            KK = new int[ n - 1 ];
           
            s = 0;
            m = 1;
           
            for( i = 0; i < n; i++ )
            {
               
                k = 0;
               
                for( j = 0; j < n - 1; j++ )
                {
                    if( k == i ) k++;
                   
                    KK[ j ] = Wsk[ k++ ];
                }
               
                s += m * Macierz[ w ][ Wsk[ i ] ] * det( n - 1, w + 1, KK, Macierz );
               
                m = - m;
               
            }
           
            delete[] KK;
           
            return s;
           
        }
    }
   
    void Wyswietlanie()
    {
       
        cout << endl << det( n, 0, Wsk, Macierz ) << endl;
       
        delete[] Wsk;
       
        for( i = 0; i < n; i++ ) delete[] Macierz[ i ];
       
        delete[] Macierz;
    }
};

int main()
{
   
    Wyznacznik Wyznacznik1;
    Wyznacznik1.Wprowadz_dane();
    Wyznacznik1.Wyswietlanie();
    return 0;
}


I jest problem przy wczytywaniu danych do tablicy, bowiem mogę tylko wczytać skrajne wartości np jak dam wyznacznik macierzy 2x2 to moge wczytać wartość [0,1] oraz [1,1] żadnych innych. Myślałem nad tym wczoraj do późna, lecz nic sensownego nie dałem rady wskórać.
P-112692
pekfos
» 2014-06-25 10:19:46
C/C++
for( j = 0; j < n; j++ )
     cout << "[" << i << "," << j << "]=";

cin >> Macierz[ i ][ j ];
Pętla obejmuje tylko wypisywanie, a wczytywania już nie.
P-112697
kamilpl1994
Temat założony przez niniejszego użytkownika
» 2014-06-25 10:23:33
czyli trzeba zrobić?
P-112699
Jacob99
» 2014-06-25 10:25:37
musisz wstawić instrukcje, które chcesz wykonać w pętli w nawiasy
C/C++
{
    //...
}
P-112700
kamilpl1994
Temat założony przez niniejszego użytkownika
» 2014-06-25 10:29:40
czasem najprostsze rozwiązania jak klamerki, które mi umknęły ratują życie. Zastanawiałem się kilka razy nad składnią i kodem, ale nic złego nie widziałem. A tu masz klamerki :)
P-112701
« 1 »
  Strona 1 z 1