Pokaż wyniki 1 do 3 z 3

Temat: [C++] zamiana wektora na mac

  1. #1

    Domyślnie [C++] zamiana wektora na mac

    Moi drodzy!
    Ucze sei korzystac ze wskaznikow i dlatego tez napisalam drobny programik, ktory zamienia wektor na macierz.
    Kod:
    #include <iostream>
    using namespace std;
    
    void wczytuj(double *&T,int m);
    void zamieniaj(double *&T, double **&A,int m,int n);
    void wypisz(double **&A,int m,int n);
    
    int main()
    {
       int k, l;
         k=3; l=4;
    
      double **A=new double *[k];
        for (int i=0; i<k; i++) A[i]=new double[l];
    
      double *wekt=new double [k*l];
    
       wczytuj(wekt,k*l);
       zamieniaj(wekt,A,k,l);
       wypisz(A,k,l);
    
    }
    
      void wczytuj(double *&T,int m)
       {
         for (int i=0; i<m; i++)
         {  cout<<"T["<<i<<"]=";
            cin>>T[i];
         }
        }
    
      void zamieniaj(double *&T,double **&B,int m,int n)
       {
         for (int i=0; i<m; i++)
           {for (int j=0; j<n; j++)
             { B[i][j]=T[i*m+j];
             }
            }
    }
    
       void wypisz(double **&B,int m,int n)
        {
           for (int i=0; i<m; i++)
           for (int j=0; j<n; j++)
            {
              cout<<"A["<<i<<"]["<<j<<"]="<<B[i][j]<<"\n";
            }
        }
    Czy dobrze korzystam ze wskaznikow? Nie chce nabrac zlych nawykow.

    Mam rowniez pytanie odnosnie kodu. Podczas wypisywania macierzy otrzymuje podwojne wyniki, tzn:

    Kod:
    T[0]=1
    T[1]=2
    T[2]=3
    T[3]=4
    T[4]=5
    T[5]=6
    T[6]=7
    T[7]=8
    T[8]=9
    T[9]=10
    T[10]=11
    T[11]=12
    
    A[0][0]=1
    A[0][1]=2
    A[0][2]=3
    A[0][3]=4
    A[1][0]=4   -->powtarza sie
    A[1][1]=5
    A[1][2]=6
    A[1][3]=7
    A[2][0]=7   -->powtarza sie
    A[2][1]=8
    A[2][2]=9
    A[2][3]=10
    Czy moglibyscie mi wskazac gdzie lezy moj blad?

    Bede niezmiernie za wasze cenne wskazowki.

  2. #2

    Lightbulb

    W zamieniaj używasz złego wymiaru.
    Zmień
    Kod:
    B[i][j]=T[i*m+j];
    na
    Kod:
    B[i][j]=T[i*n+j];
    lub
    Kod:
    B[i][j]=T[j*m+i];
    Jeśli chodzi o wskaźniki to polecam 1, 2, 3, 4, 5, 6, 7, 8, 9

    PS. Krzywo wstawiasz wcięcia w kodzie i trudno się czyta
    Niniejszy post przedstawia opinie autora w dniu dzisiejszym, na datę jego publikacji. Nie mogą być one wykorzystane przeciwko niemu w dniu jutrzejszym, ani innym następującym po nim dniu. Autor zastrzega sobie prawo do zmiany poglądów bez podawania przyczyn.

  3. #3

    Domyślnie

    Wielkie dzieki za pomoc! Bede pracowac nad wygladem estetycznym kodu!

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj