Jump to content
Fórum Script Brasil
  • 0

Armazenar uma matriz temporária usando um laço for


Diogo Rupolo
 Share

Question

Pessoal estou com o seguinte problema no programa abaixo. Extraio uma submatriz temporária de uma matriz A1, mas quando quero adicioná-la com outra matriz A3, chamando a união da matriz A3 com a Matriz Temporaria de A2 meu código não funciona. O que fazer?

#include <iostream>

using namespace std;

int A1[][2]={{1,0},{2,1},{3,2},{4,2},{5,3}};
int A3[][2]={{12,0},{13,1},{14,2},{15,2},{16,3}};
int Matriz_Temp[][2]={};
int A2[][2]={};


int main ()
{
    //Extraindo uma submatriz da matriz A1
    cout<<" Matriz temporaria: "<<endl;
    for (int i=0;i<3;i++)
{
    for (int j=0;j<2;j++)
    {
        Matriz_Temp[i][j]=A1[i][j];
        cout<<Matriz_Temp[i][j]<<" ";
    }
    cout<<endl;
}

cout <<" Matriz = Matriz A3: "<<endl;
 for (int i=0;i<5;i++)
{
    for (int j=0;j<2;j++)
    {
       A2[i][j]=A3[i][j];
       A2[i+3][j]=Matriz_Temp[i][j]; //Matriz A2 na posição i+3 = matriz tempórária?
        cout<<A2[i][j]<<" ";
    }
    cout<<endl;
}
//Queria imprimir aqui Matriz A2 juntamente com a matriz temporária
cout<<" Matriz A2: "<<endl;
for (int i=0;i<8;i++)
{
    for (int j=0;j<2;j++)
    {
        cout<<A2[i][j]<<" ";
    }
    cout<<endl;
}


}

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Olá!

São dois os seus problemas:

1- Quando você não coloca o tamanho do vetor na sua declaração, a quantidade de itens usados na inicialização é que define o seu tamanho. Assim, as declarações abaixo:

int A1[][2]={{1,0},{2,1},{3,2},{4,2},{5,3}};
int A3[][2]={{12,0},{13,1},{14,2},{15,2},{16,3}};
int Matriz_Temp[][2]={};
int A2[][2]={};
criam vetores com o seguinte tamanho: A1 e A3 tem 5 posições Matriz_Temp e A2 tem... ZERO posições!!! Defina um tamanho fixo para estes vetores. Exemplo:
int A1[][2]={{1,0},{2,1},{3,2},{4,2},{5,3}};
int A3[][2]={{12,0},{13,1},{14,2},{15,2},{16,3}};
int Matriz_Temp[100][2]={};
int A2[100][2]={};
2- Na sua lógica de cópia você avança apenas 3 posições:
for (int i=0;i<5;i++)
{
    for (int j=0;j<2;j++)
    {
       A2[i][j]=A3[i][j];
       A2[i+3][j]=Matriz_Temp[i][j]; //Matriz A2 na posição i+3 = matriz tempórária?
        cout<<A2[i][j]<<" ";
    }
    cout<<endl;
}
Mas o correto é avançar 5 posições pois este é o número de elementos da primeira matriz:
for (int i=0;i<5;i++)
{
    for (int j=0;j<2;j++)
    {
       A2[i][j]=A3[i][j];
       A2[i+5][j]=Matriz_Temp[i][j]; //Matriz A2 na posição i+3 = matriz tempórária?
        cout<<A2[i][j]<<" ";
    }
    cout<<endl;
}

Abraços,

Marcelo Utikawa da Fonseca

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.4k
×
×
  • Create New...