Ir para conteúdo
Fórum Script Brasil
  • 0

Matrizes: erro ao extrair uma submatriz usando for


Diogo Rupolo

Pergunta

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?

Editado por Diogo Rupolo
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 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

Editado por PedroCunha
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...