×
Ir ao conteúdo
  • Cadastre-se

Pascal Eliminar linha e coluna de uma matriz


James1567

Posts recomendados

Boa tarde pessoal, tudo bem? 

 

Estou tentando fazer esse exercício, porém não estou conseguindo eliminar a linha e a coluna da matriz "Gerada" a partir da matriz principal, acho que estou no caminho certo (creio eu kk), estou começando a estudar programação faz pouco tempo, então desculpe se estiver alguma burrada kk

 

O exercício:

 

 Faça um programa em Pascal que leia uma matriz M(5x4), um valor para linha e um
valor para coluna. O programa deverá gerar uma matriz N, onde N é M sem a linha
e a coluna recebida.

Program EX7;

var

M:array[1..5,1..4] of integer;
N:array[1..4,1..3] of integer;

i,j,aux: integer;

Begin

  for i:=1 to 5 do
   begin
   
  for j:= 1 to 4 do
   begin
   
    Writeln('Digite os valores de ', i, ' - ', j, ' ');
     readln(M[i,j]);
     
     clrscr;
     
  end;
 end;
 
  for i:= 1 to 4 do
   begin
   
   for j:= 1 to 3 do
    begin
    
    aux:=N[i,j];
    aux:=M[1,1];
    aux:=M[2,j];
    aux:=M[i,3];
    aux:=M[4,4];
    N[i,j]:=aux;
    
  end;
 end;
 
 for i:=1 to 5 do
   begin
   
  for j:= 1 to 4 do
   begin
  
  //writeln('O valor da matriz normal é: ');
   writeln(M[i,j], ' ');
   
  end;
   end;
   
    for i:=1 to 4 do
   begin
   
  for j:= 1 to 3 do
   begin
  
 // writeln('O valor da matriz gerada é: ');
   writeln(N[i,j], ' ');
   
  end;
   end;
    
    
     

  
End.

 

img2.png

  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

@James1567    essa tentativa de usar um auxiliar é boa mas mesmo assim não está funcionado muito bem não ,  então você pode usar um if para decidir a linha e a coluna que não pode ter os números inseridos na segunda matriz ,  e então seu código bem modificado poderia ser assim  :

Program EX7;
var
  M   : array[1..5,1..4] of integer;
  N   : array[1..4,1..3] of integer;
  i,j,aux,val_lin,val_col : integer;
  l,k :                     integer;
Begin
textcolor(yellow);
  for i:=1 to 5 do
  begin
    for j:= 1 to 4 do
    begin
      Writeln('Digite os valores de ', i, ' - ', j, ' ');
//      readln(M[i,j]);                       //  inserir manualmente será dureza 
      M[i,j] := random(100)+1;                //  insere automaticamente com random
      clrscr;
    end;
  end;
  
  repeat                                      // validar os valores digitados
    writeln('o valor da linha (de 1 ate 5) ');// msg pra o usuario
    readln(val_lin);                          // numero da linha a ser removida
  until ( val_lin > 0 ) and ( val_lin < 6 );  // repete ate que se digite valores validos
  
  repeat                                      // repetir se digitou numero fora de faixa
    writeln('o valor da coluna (de 1 ate 4) '); 
    readln(val_col);                          // numero da coluna a ser removida
  until ( val_col > 0 ) and ( val_col < 5 );  // valida os numeros na faixa perimitida
  
  l := 1;                                     // inicializa as linhas da segunda matriz
  for i:= 1 to 5 do                           // percorrer todas cinco linhas originais
  begin
    k := 1;                                   // inicializa as colunas da segunda matriz   
    for j:= 1 to 4 do                         // percorrer todas Quatro colunas da matriz original
    begin
      if( (i <> val_lin) and (j <> val_col)) then // se não for a linha e nem a coluna escolhida para remocao
      begin    
        N[l,k] := M[i,j];                     // insere o conteudo dessa posicao na segunda matriz 
        k := k + 1;                           // incrementa a coluna da segunda matriz
      end;
    end;
    if( (i <> val_lin) and (j <> val_col)) then l := l + 1; // se não foa o linha e nem a coluna escolhida para remocao
  end;                                        // incrementa a linha da segunda matriz
                                              
  writeln('O valor da matriz normal é: ');    // escreve a matriz original
  for i:=1 to 5 do                            // cinco linhas
  begin
    for j:= 1 to 4 do                         // Quatro colunas
    begin                                                   
      if(M[i,j] < 10) then write('  ')        // organizar em colunas , se for < 10 escreve 2 espacos em branco
      else                                    // Antes de ELSE não pode haver ponto e virgula ;
        if(M[i,j] < 100) then write(' ');     // organz em colun se for menor que 100 escreve um espaco
      write(M[i,j], ' ');                     // escreve o valor que esta nessa posicao da matriz
    end;
    writeln('');                              // pular para a linha de baixo sem escrever nada
  end;
  writeln('');                                // Quebra de linha
  writeln('O valor da matriz gerada é: ');    // escreve a segunda matriz
  for i:=1 to 4 do                            // serao Quatro linhas
  begin         
    for j:= 1 to 3 do                         // e tres colunas
    begin
      if(N[i,j] < 10) then write('  ')        // se o numero for < 10 escreve 2 espacos em branco
      else                                    // Antes de ELSE não pode haver ponto e virgula ;
        if(N[i,j] < 100) then write(' ');     // se o numer for < 100 escreve 1 espaco em branco
      write(N[i,j], ' ');                     // escreve o numero que esta nessa posicao da matriz
    end;
    writeln('');                              // Quebra de Linha
  end;
  writeln('');                                // Quebra de Linha
  writeln('linha e coluna removida');         // essa parte aqui não esta mo enunciado
  for i:=1 to 5 do                            // percorre as cinco Linhas da matriz originaL
  begin
    for j:=1 to 4 do                          // percorre as Quatro colunas damatriz originaL
    begin
      if ((i = val_lin) or (j = val_col) ) then // se for a linha ou a coluna escolhida para ser removida
      begin
        textcolor(lightred);
        textbackground(white);      
	   if M[i,j] < 10 then write('  ')
        else 
          if M[i,j] < 110 then write(' ');	   
          write(M[i,j],' ');                 // escreve  os numeros dessa linha ou coluna
        textcolor(lightgreen);
        textbackground(black);        
      end
      else write('   ');                     // senao escreve tres espacos em branco
    end;
    writeln('');                             // quebra a Linha
  end;
  readkey;                                   // espera ate que seja pressionado alguma tecla
End.

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!