Jump to content
Fórum Script Brasil
  • 0

Matrizes: erro ao extrair uma submatriz usando for


Diogo Rupolo

Question

Pessoal, gostaria de ajuda no seguinte código. Estou extraindo uma matriz "Temp" de uma matriz chamada "matriz1" e quero inseri-la numa "matriz2" mas não funciona corretamente. Segue o código abaixo:

#include <iostream>
using namespace std;
int main ()
{

    int matriz1 [7] = {1,2,3,4,5,6,7};
    int matriz2 [5] = {8,9,10,11,12};
    int Temp [3]={};
    int MatrizA2_final[8]={};

    cout << "Matriz 1:" << endl;
    for (int i = 0; i < 7; i++)
    {
    cout << matriz1[i] << endl;
    }


    cout << "\n\n Matriz 2:" << endl;
    for (int i = 0; i < 5; i++)
    {
    cout << matriz2[i] << endl;
    }


    cout<<"\n Matriz Temp:"<<endl;
    for (int i = 4; i < 7; i++)
    {
    Temp[i]=matriz1[i];
    cout << Temp[i] << endl;
    }


    cout<<"\n Matriz1 final: "<<endl;
    for (int i=0; i <4; i++)
    {
    cout << matriz1[i] << endl;
    }


    for (int i=0; i <5; i++)
    {
    MatrizA2_final[i]=matriz2[i];
    MatrizA2_final[i+3]=Temp[i];

    }

  cout<<"\n Matriz2 + matriz Temp: "<<endl;
    for (int i=0; i <8; i++)
    {
        cout << MatrizA2_final[i] << endl;
    }
}

A matriz2 + matriz Temp deveria ser [8,9,10,11,12,85,6,7] mas aparecem outros valores. O que está acontecendo?

Edited by Diogo Rupolo
Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Olá!

Primeiro vou postar o código, depois explico o que fiz:

#include <iostream>
using namespace std;
int main ()
{

    int matriz1 [7] = {1,2,3,4,5,6,7};
    int matriz2 [5] = {8,9,10,11,12};
    int Temp [3]={};
    int MatrizA2_final[8]={};

    cout << "Matriz 1:" << endl;
    for (int a = 0; a < 7; a++)
    {
    cout << matriz1[a] << endl;
    }


    cout << "\n\n Matriz 2:" << endl;
    for (int b = 0; b < 5; b++)
    {
    cout << matriz2[b] << endl;
    }


    cout<<"\n Matriz Temp:"<<endl;
    for (int c = 4; c < 7; c++)
    {
    Temp[c-4]=matriz1[c];
    cout << Temp[c-4] << endl;
    }


    cout<<"\n Matriz1 final: "<<endl;
    for (int d=0; d <4; d++)
    {
    cout << matriz1[d] << endl;
    }


    for (int e=0; e<5; e++)
    {
    MatrizA2_final[e] = matriz2[e];
    }
    for (int f = 5; f < 8; f++)
    {
    MatrizA2_final[f]=Temp[f-5];
    }


  cout<<"\n Matriz2 + matriz Temp: "<<endl;
    for (int i=0; i <8; i++)
    {
        cout << MatrizA2_final[i] << endl;
    }
}
Fiz pequenas alterações no código: 1ª -> Coloquei uma letra diferente em cada for loop para poder diferenciar melhor; 2ª -> Separei os dois for loop que compunham a formação da MatrizA2_final para a visualização ficar mais fácil; 3ª -> A razão do seu código não funcionar era que você estava igualando os valores da MatrizA2_final com os índices errados da matriz Temp. Veja só:
#include <iostream>
using namespace std;
int main ()
{

    int matriz1 [7] = {1,2,3,4,5,6,7};
    int matriz2 [5] = {8,9,10,11,12};
    int Temp [3]={};
    int MatrizA2_final[8]={};

    cout << "Matriz 1:" << endl;
    for (int i = 0; i < 7; i++)
    {
    cout << matriz1[i] << endl;
    }


    cout << "\n\n Matriz 2:" << endl;
    for (int i = 0; i < 5; i++)
    {
    cout << matriz2[i] << endl;
    }


    cout<<"\n Matriz Temp:"<<endl;
    for (int i = 4; i < 7; i++)
    {
    Temp[i]=matriz1[i];//Aqui, você está começando a dar valores para a matriz Temp no índice 4. Mude para Temp[i-4] = Matriz[i] e pronto.
    cout << Temp[i] << endl;//Não se esqueça de mudar aqui para Temp[i-4] também, porque caso não o faça, não irá mostrar os valores certos na tela.
    }


    cout<<"\n Matriz1 final: "<<endl;
    for (int i=0; i <4; i++)
    {
    cout << matriz1[i] << endl;
    }


    for (int i=0; i <5; i++)
    {
    MatrizA2_final[i]=matriz2[i];
    MatrizA2_final[i+3]=Temp[i];// Aqui você tenta igualar a MatrizA2_final com o índice 0,1,2,3,4. Entendeu o erro? :D

    }

  cout<<"\n Matriz2 + matriz Temp: "<<endl;
    for (int i=0; i <8; i++)
    {
        cout << MatrizA2_final[i] << endl;
    }
}

Att.,

Pedro

Edited by PedroCunha
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.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...