Publicidade

Entre para seguir isso  
Seguidores 0
Kazami~

[Resolvido] matriz em pascal

Oi...

Tenho q fazer 2 problemas envolvendo matrizes...

sei que eles são fáceis, mas definitivamente não consigo fazer eles funcionar direito... http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

 

os exercícios são:

~Entrar com uma matriz de ordem 4 x 3 e mostrar:

o menor valor de cada uma das linhas da matriz, //<~ aqui está o meu problema...

o menor valor de toda a matriz e seu índice.

 

Código:

Program exerc04 ;
var m:array [1..4,1..3] of integer;
    menor,a,b,l,c:integer;	
 Begin
 	for l:=1 to 4 do
 	    for c:=1 to 3 do
 	    begin
 		   writeln('Digite linha ',l,' e coluna ',c );
 		   readln(m[l,c]);                                     
 	    end;
	menor:=m[1,1];
	for l:=1 to 4 do
 	begin
 	    for c:=1 to 3 do
 		   if m[l,c] < menor then
 		   begin
			  menor:= m[l,c];
			  a:=l;
			  b:=c;
		   end;                                      
	    writeln('Menor da linha: ',l,': ',menor); //ele mostra o primeiro valor digitado, e o resto que é pra ser o menor.. ou empaca quando acha o menor da matriz antes do fim     
 	end; 
 	writeln('Menor da matriz é ',menor,'(',a,',',b,')');               
 End.

~ Elaborar um algoritmo que lê uma matriz M de ordem M(3 x 2) e um valor A, multiplica a matriz M pelo valor A,

coloca os valores da matriz multiplicados por A em um vetor Vet, mostre no final o vetor Vet em ordem crescente.

 

só consegui fazer isso (que está medonho... não dá pra entregar isso :( )

 

Código:

Program exerc05 ;
var m:array [1..3,1..2] of integer;
    x,menor,a,l,c:integer;
    vet: array[1..6] of integer;
    i,j,aux: integer;
 Begin
   write('Defina um valor para multiplcar a matriz:');
   readln(a);
   for l:=1 to 3 do
 	for c:=1 to 2 do
 	begin
 	    writeln('Digite um valor para linha: ',l,' e coluna: ',c );
 	    readln(m[l,c]);
	    m[l,c]:=a*m[l,c];                                    
 	end;
	vet[1]:=m[1,1];vet[2]:=m[1,2];vet[3]:=m[2,1];
        vet[4]:=m[2,2];vet[5]:=m[3,1];vet[6]:=m[3,2]; //definitivamente não consigo colocar a matriz num vetor "normal"... de forma normal...  ¬¬''
    //método da bolha
    for i:=1 to 6 do
       for j:=1 to 5 do
          if vet[j]>vet[j+1] then
           begin
              aux:=vet[j];
              vet[j]:=vet[j+1];
              vet[j+1]:=aux;
		 end;
    clrscr;
    writeln('Resultados em ordem crescente:');	 
    for i:=1 to 6 do
    writeln(vet[i]/a:0:0,' * ',a,' = ',vet[i]);
 End.

será que alguma alma caridosa pode me ajudar??? http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Editado por Mário Monteiro
Retirada a palavra "AJUDA" do Titulo ou Descrição
0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom vamos por partes, o primeiro.

Você precisará de variaveis auxiliares para te ajudar.

a cada leitura verifica se ele é o numero menor.

passo pra outro linha use outra variavel para pegar o menor numero.

 

e por ai vai..

 

[]s

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para o seu primeiro problema, você pode montar algo assim:

 

Program exerc04 ; 
var m:array [1..4,1..3] of integer; 
    menor_linha, //Aqui você vai pegar o menor valor da linha lida
 menor_array, //Aqui você vai pegar o menor valor da matriz inteira
 iColunaMenorValorLinha,
 iLinhaMenorValorLinha,
 iColunaMenorValorArray,
 iLinhaMenorValorArray, 
 l,
 c:integer;       
 Begin 
    for l:=1 to 4 do 
  for c:=1 to 3 do 
        begin 
            writeln('Digite linha ',l,' e coluna ',c ); 
   readln(m[l,c]);                                      
  end;   
 menor_matriz   := m[1,1]; //Inicialização do menor valor da matriz
 iColunaMenorValorArray  := 1;
 iLinhaMenorValorArray := 1;   
 for l:=1 to 4 do 
    begin 
  menor_linha:= m[l,1]; //Inicialização do menor valor da linha
  iColunaMenorValorLinha  := 1;
  iLinhaMenorValorLinha := l;   
  for c:=1 to 3 do 
  begin
   if m[l,c] < menor_linha then 
   begin 
                menor_linha:= m[l,c]; 
    iColunaMenorValorLinha  := c;
    iLinhaMenorValorLinha := l;   
   end;                                          
   if m[l,c] < menor_matriz then 
   begin 
                menor_matriz := m[l,c]; 
    iColunaMenorValorArray  := c;
    iLinhaMenorValorArray := l;   
   end;            
        end;  
  writeln('Menor da linha: ',l,': ',menor_linha); //ele mostra o primeiro valor digitado, e o resto que é pra ser o menor.. ou empaca quando acha o menor da matriz antes do fim      
 end;
 writeln('Menor da matriz é ',menor_array,'(',iLinhaMenorValorArray,',',iColunaMenorValorArray,')');                
 End.

Para o segundo, é só questão de você estudar um pouco o primeiro exemplo e pensar em como pode usar variáveis auxiliares que vai achar a solução.

 

[]'s

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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
Entre para seguir isso  
Seguidores 0

  • Próximos Eventos