• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed C++ kopiowanie tablic dwuwymiarowych

VPS Starter Arubacloud
0 głosów
1,593 wizyt
pytanie zadane 20 grudnia 2016 w Rozwój zawodowy, nauka, praca przez Waffel Obywatel (1,030 p.)
zamknięte 20 grudnia 2016 przez Waffel

Witam, mam taki oto kod, który na pozór działa dobrze - kompiluje się. Problemem jest to, że mam potrzebę skopiowania zawartości tablicy matrix do matrix2. Niestety po wyświetleniu skopiowanej tablicy pokazują się w niej jakieś śmieci z pamięci czyli nie udało się przekopiować wartości. Proszę o pomoc.

#include <iostream>
#include <cstdlib>
#include <ctime>
#include "matrix3.h"

using namespace std;

int main()
{
    srand(time (NULL));
    MATRIX mat;
    MATRIX2 mat2;

    losowanie(mat);
    printMatrix(mat);
    cout << "wyswietlam skopiowana macierz" << endl;
    zamienionyMatrix(mat,mat2);
    return 0;
}
#include"matrix3.h"
#include<cstdlib>
using namespace std;

void printMatrix(MATRIX matrix)
{
    for(int i = 0; i<N; i++)
    {
        for(int j=0; j<M; j++)
            cout << matrix[i][j] << "\t";
        cout << endl;
    }
}

void losowanie(MATRIX matrix)
{
    for( int i=0;i<N;i++)
    {
        for(int j=0;j<M;j++)

        matrix[i][j] = (rand() % 11 + 10 );
    }
}

void zamienionyMatrix(MATRIX matrix ,MATRIX2 matrix2)
{
    for( int i=0;i<N;i++)
    {
        for(int j=0;j<M;j++)
            matrix[i][j] = matrix2[i][j];
    }

    for( int i=0; i<N; i++)
    {
        for(int j=0; j<M;j++)
            cout << matrix2[i][j] << "\t";
        cout << endl;
    }
}
#ifndef MATRIX3_H_INCLUDED
#define MATRIX3_H_INCLUDED

#include <iostream>

#define N 6
#define M 7

typedef float MATRIX[N] [M];
typedef float MATRIX2[N] [M];

void printMatrix(MATRIX matrix);
void losowanie(MATRIX matrix);
void zamienionyMatrix(MATRIX matrix ,MATRIX2 matrix2);

#endif // MATRIX3_H_INCLUDED

Wiem, że dziwnie wygląda program rozbity na 3 pliki, ale prowadzący życzy sobie zachowania takiej konwencji.

komentarz zamknięcia: rozwiązany

1 odpowiedź

+1 głos
odpowiedź 20 grudnia 2016 przez niezalogowany
wybrane 20 grudnia 2016 przez Waffel
 
Najlepsza
Jeżeli funkcja zamieniony matrix ma kopiować pierwszy argument do drugiego to w 30 linijce implementacji funkcji masz błąd. Powinno być matrix2[i][j] = matrix[i][j];

I lepiej przekazać to przez referencję :D
komentarz 20 grudnia 2016 przez Waffel Obywatel (1,030 p.)

Królu złoty jesteś geniuszem :D Tyle godzin już nad tym siedzę i nie wyczaiłem tego. Odnośnie referencji to były na wykładzie, ale jednym uchem wleciały a drugim wyleciały. W każdym razie dzięki za szybką pomoc i duży browar dla ciebie kolego!yes

Podobne pytania

+1 głos
1 odpowiedź 1,517 wizyt
pytanie zadane 18 czerwca 2016 w Java przez Waszek Gaduła (4,130 p.)
+2 głosów
2 odpowiedzi 532 wizyt
pytanie zadane 4 listopada 2022 w C# przez JoannS Początkujący (250 p.)
0 głosów
1 odpowiedź 582 wizyt
pytanie zadane 3 listopada 2022 w C# przez JoannS Początkujący (250 p.)

92,770 zapytań

141,695 odpowiedzi

320,518 komentarzy

62,107 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...