CarinhaDoTI
Membro Júnior-
Posts
13 -
Cadastrado em
-
Última visita
Reputação
12-
Pascal problema de matrizes em pascal envolvendo diagonal
CarinhaDoTI respondeu ao tópico de CarinhaDoTI em Programação - outros
@Simon Viegas Só uma pequena dúvida, pra que serve esse "uses CRT"? -
Pascal problema de matrizes em pascal envolvendo diagonal
CarinhaDoTI respondeu ao tópico de CarinhaDoTI em Programação - outros
Beleza, eu fiz esse aqui, mas ainda não consegui colocar na diagonal principal, poderia me ajudar? Program Pzim ; Var i,j,k:integer; mat:ARRAY[1..5,1..5] of integer; Begin for i := 1 to 5 do Begin for j := 1 to 5 do Begin write('Insira um número para a posição [', i ,',', j ,']: '); readln(mat[i,j]); if (i = j) and (mat[i,j] mod 5 = 0) then Begin k := k + 1; mat[i,j] := mat[i,i]; End; if (k > 5) then Begin writeln('Não há mais espaço na diagonal principal!'); Repeat write('Insira outro valor para a posição [', i ,',', j ,']: '); readln(mat[i,j]); Until(mat[i,j] mod 5 <> 0); End; End; End; for i := 1 to 5 do Begin for j := 1 to 5 do Begin write(mat[i,j],' '); End; writeln; End; readkey; End. -
Pascal problema de matrizes em pascal envolvendo diagonal
CarinhaDoTI respondeu ao tópico de CarinhaDoTI em Programação - outros
E quando for [5,5] ? Beleza, até isso eu entendi, então como ficaria o código dessa primeira parte? -
Pascal problema de matrizes em pascal envolvendo diagonal
CarinhaDoTI respondeu ao tópico de CarinhaDoTI em Programação - outros
Mas como assim a anterior mais 1? Se fosse isso, daria uma posição em [6,6] por exemplo. Eu ainda não entendi -
Pascal problema de matrizes em pascal envolvendo diagonal
CarinhaDoTI respondeu ao tópico de CarinhaDoTI em Programação - outros
Faça um programa em Pascal que utilize uma matriz 5x5 que aceite três tipos de valores: múltiplos de 5, múltiplos de 11 e múltiplos de 13. Devem ser lidos apenas valores maiores que zero. Após a leitura, os números devem ser distribuídos da seguinte maneira: Os múltiplos de 5 devem ocupar a diagonal principal; Os múltiplos de 11 devem ficar acima da diagonal principal; Os múltiplos de 13 devem ficar abaixo da diagonal principal. Como alguns números podem ser múltiplos de 5, de 11 e também de 13 (por exemplo, 55 é múltiplo de 5 e de 11; 65 é múltiplo de 5 e de 13), deve-se, primeiro, verificar se o número digitado é múltiplo de 5. Caso não seja, deve-se verificar se é múltiplo de 11. Caso não seja, deve-se verificar se é múltiplo de 13. Caso não seja, o programa deverá mostrar a mensagem Número inválido (por exemplo, o número 55 deverá ser considerado múltiplo de 5, pois essa é a comparação que será feita primeiro). Esse programa deverá observar as seguintes situações: Quando o usuário digitar um múltiplo de 5 e não houver mais espaço na diagonal principal, deverá mostrar a mensagem Diagonal totalmente preenchida; Quando o usuário digitar um múltiplo de 11 e não houver mais espaço disponível na matriz, deverá mostrar a mensagem Não existe espaço acima da diagonal principal; Quando o usuário digitar um múltiplo de 13 e não houver mais espaço disponível na matriz, deverá mostrar a mensagem Não existe espaço abaixo da diagonal principal; Quando a matriz estiver totalmente preenchida, deverá mostrar todos os elementos da matriz, juntamente com suas posições (linha e coluna). -
Pascal problema de matrizes em pascal envolvendo diagonal
CarinhaDoTI respondeu ao tópico de CarinhaDoTI em Programação - outros
Sim, e nesse caso como continuamos? (Eu ainda não aprendi esse Random) -
Pascal problema de matrizes em pascal envolvendo diagonal
CarinhaDoTI respondeu ao tópico de CarinhaDoTI em Programação - outros
Program Ex2 ; Var i,j:integer; mat:ARRAY[1..5,1..5] of integer; Begin for i := 1 to 5 do Begin for j := 1 to 5 do Begin write('Matriz[', i ,',', j ,']'); readln(mat[i,j]); End; End; for i := 1 to 5 do Begin for j := 1 to 5 do Begin write(mat[i,j]:5); writeln; End; End; End. -
Pascal problema de matrizes em pascal envolvendo diagonal
CarinhaDoTI respondeu ao tópico de CarinhaDoTI em Programação - outros
Nesse caso, eu precisaria fazer desse modo mais elaborado, pois o objetivo é inserir valores quaisquer em posições quaisquer, o que importa é que os valores correspondentes estejam nas suas respectivas posições. Eu entendi a sua sugestão, até executei aqui, e só falta a mensagem de erro mesmo. Então poderia me ajudar a fazer a desse jeito mais elaborado? Agradeço -
Pascal problema de matrizes em pascal envolvendo diagonal
CarinhaDoTI respondeu ao tópico de CarinhaDoTI em Programação - outros
Citação: Então, se tirar o if e colocar o and, vai dar errado, porque o programa só vai aceitar o 11 somente se o i for menor que o j. Aí só vai mostrar uma mensagem de valor inválido, o que não era pra acontecer. Eu queria achar um padrão de atribuição, como por exemplo, a diagonal principal é mat[i,i] ou mat[j,j] Program Ex2 ; Var i,j,k,cont,cont1,cont2,n,m:integer; mat:ARRAY[1..5,1..5] of integer; Begin for i := 1 to 5 do Begin for j := 1 to 5 do Begin //Preenchendo a matriz e forçando com que seja Repeat //digitado os respectivos multiplos write('Insira um valor para a posição [',i,',',j,']: '); readln(mat[i,j]); if(i = j) then Begin mat[i,j] := mat[i,i]; End; if(cont > 5) then Begin Repeat writeln('Diagonal completamente preenchida!'); write('Insira outro valor para a posição [',i,',',j,']: '); readln(mat[i,j]); Until(mat[i,j] mod 5 <> 0) End; if (j > i) then mat[i,j] := m; //Arrumar essa parte pra baixo// if(cont1 > 10) then Begin Repeat writeln('Parte de cima completamente preenchida!'); write('Insira outro valor para a posição [',i,',',j,']: '); readln(mat[i,j]); Until(mat[i,j] mod 11 <> 0) End; if (j<i) then mat[i,j] := n; if(cont2 > 10) then Begin Repeat writeln('Parte de baixo completamente preenchida!'); write('Insira outro valor para a posição [',i,',',j,']: '); readln(mat[i,j]); Until(mat[i,j] mod 13 <> 0) End; if (mat[i,j] mod 5 <> 0) or (mat[i,j] mod 11 <> 0) or (mat[i,j] mod 13 <> 0) then writeln('Valor inválido!'); Until(mat[i,j] mod 5 = 0) or (mat[i,j] mod 11 = 0) or (mat[i,j] mod 13 = 0) End; End; writeln('Matriz resultante: '); for i := 1 to 5 do Begin for j := 1 to 5 do Begin write(mat[i,j],' '); End; writeln; End; readkey; End. No código acima, eu fiz o que você sugeriu, tem alguns valores encaixados na diagonal principal, e o mesmo erro de posição que expliquei aqui em cima do código está acontecendo. Aguardo sua ajuda -
Pascal problema de matrizes em pascal envolvendo diagonal
CarinhaDoTI respondeu ao tópico de CarinhaDoTI em Programação - outros
No caso, os números em baixo e em cima da diagonal principal tem um limite de 10 números, pois é uma matriz 5x5. No seu exemplo de atribuição, como seria essa "posição da matriz"? Minha dúvida está aí. E também esse "número lido" ,seria simplesmente o mat[i,j]? -
Pascal problema de matrizes em pascal envolvendo diagonal
CarinhaDoTI respondeu ao tópico de CarinhaDoTI em Programação - outros
Estou com dúvidas sobre como armazenar os respectivos valores em cima e em baixo da diagonal principal. Eu já achei o padrão, como, em cima o j tem que ser maior que o i, e em baixo o contrário, minha dúvida está na atribuição, como vocês podem ver eu coloquei um comentário de "arrumar daqui pra baixo" -
Pascal problema de matrizes em pascal envolvendo diagonal
CarinhaDoTI respondeu ao tópico de CarinhaDoTI em Programação - outros
Program Ex2 ; Var i,j,k,cont,cont1,cont2:integer; mat:ARRAY[1..5,1..5] of integer; Begin for i := 1 to 5 do Begin for j := 1 to 5 do Begin //Preenchendo a matriz e forçando com que seja Repeat //digitado os respectivos multiplos write('Insira um valor para a posição [',i,',',j,']: '); readln(mat[i,j]); if (mat[i,j] mod 5 = 0) then Begin if(i = j) then Begin mat[i,j] := mat[i,i]; cont := cont + 1; End; if(cont > 5) then Begin Repeat writeln('Diagonal completamente preenchida!'); write('Insira outro valor para a posição [',i,',',j,']: '); readln(mat[i,j]); Until(mat[i,j] mod 5 <> 0) End; End else if (mat[i,j] mod 11 = 0) then Begin if (j > i) then mat[i,j] := mat[i,j]; //Arrumar essa parte pra baixo// cont1 := cont1 + 1; if(cont1 > 10) then Begin Repeat writeln('Parte de cima completamente preenchida!'); write('Insira outro valor para a posição [',i,',',j,']: '); readln(mat[i,j]); Until(mat[i,j] mod 11 <> 0) End; End else if (mat[i,j] mod 13 = 0) then Begin if (j<i) then mat[i,j] := mat[i,j]; cont2 := cont2 + 1; if(cont2 > 10) then Begin Repeat writeln('Parte de baixo completamente preenchida!'); write('Insira outro valor para a posição [',i,',',j,']: '); readln(mat[i,j]); Until(mat[i,j] mod 13 <> 0) End; End else if (mat[i,j] mod 5 <> 0) or (mat[i,j] mod 11 <> 0) or (mat[i,j] mod 13 <> 0) then writeln('Valor inválido!'); Until(mat[i,j] mod 5 = 0) or (mat[i,j] mod 11 = 0) or (mat[i,j] mod 13 = 0) End; End; writeln('Matriz resultante: '); for i := 1 to 5 do Begin for j := 1 to 5 do Begin write(mat[i,j],' '); End; writeln; End; readkey; End. -
Pascal problema de matrizes em pascal envolvendo diagonal
CarinhaDoTI postou um tópico em Programação - outros
Preciso criar um programa que só aceite múltiplos de 5,11 e 13 em uma matriz. Os múltiplos de 5 devem estar na diagonal principal, os de 11 acima da diagonal principal, e os de 13 abaixo da diagonal principal. Por favor me ajudem, é um trabalho de faculdade
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