Ir ao conteúdo
  • Cadastre-se

CarinhaDoTI

Membro Júnior
  • Posts

    13
  • Cadastrado em

  • Última visita

Reputação

12
  1. @Simon Viegas Só uma pequena dúvida, pra que serve esse "uses CRT"?
  2. 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.
  3. E quando for [5,5] ? Beleza, até isso eu entendi, então como ficaria o código dessa primeira parte?
  4. Mas como assim a anterior mais 1? Se fosse isso, daria uma posição em [6,6] por exemplo. Eu ainda não entendi
  5. 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).
  6. Sim, e nesse caso como continuamos? (Eu ainda não aprendi esse Random)
  7. 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.
  8. 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
  9. 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
  10. 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]?
  11. 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"
  12. 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.
  13. 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

×
×
  • Criar novo...