Ir para o conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

    0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

Foto:

[Resolvido] matriz em pascal

  • Por favor, faça o login para responder
3 respostas neste tópico

#1 Kazami~

Kazami~
  • Membros
  • 3 posts

Postado 28 setembro 2009 - 02:28

Oi...
Tenho q fazer 2 problemas envolvendo matrizes...
sei que eles são fáceis, mas definitivamente não consigo fazer eles funcionar direito... :ermm:

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??? :grin:

Editado por Mário Monteiro, 28 setembro 2009 - 08:53 .
Retirada a palavra "AJUDA" do Titulo ou Descrição

  • 0

#2 quitZAUMMM

quitZAUMMM

    YES, WE CAN

  • Moderadores
  • 3.923 posts

Postado 28 setembro 2009 - 10:47

Bom vamos por partes, o primeiro.
[quoteo menor valor de cada uma das linhas da matriz[/quote]
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

#3 Chrnos

Chrnos

    Analista Programador

  • Membros
  • 1.466 posts

Postado 28 setembro 2009 - 15:41

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

#4 Kazami~

Kazami~
  • Membros
  • 3 posts

Postado 28 setembro 2009 - 17:05

Vlw mesmo pessoas!!

consegui fazer eles funcionarem xD~

Obrigada ^^


:bye:
  • 0




Publicidade

/ins>