Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Kazami~

[Resolvido] matriz em pascal

Recommended Posts

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

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

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.