Jump to content

Recommended Posts

Posted

  Sendo o primeiro tópico no forum deixo uma pequena apresentação pessoal. Tenho 22 anos sou do porto e estou a estudar Tecnologias de Comunicação e multimédia e tenho pouca experiencia em programação. A minha dúvida é esta: Tenho de elaborar um programa que leia duas matrizes A e B, cada uma de duas dimensões com cinco linhas e três coluna. Construir uma matriz C de mesma dimensão, que seja formada pela soma do elementos da matriz A com os elementos da matriz B. Apresentar os elementos da matriz C.

Em portugues estruturado ficaria algo do genêro:

Var

  A, B, C : Conjunto[1..5,1..3] de Inteiro

  I, J : Inteiro

Início

  Para I de 1 até 5 Passo 1 Faça

    Para J de 1 até 3 Passo 1 Faça

      Leia A[i,J]

    Fim_para

  Fim_para

  Para I de 1 até 5 Passo 1 Faça

    Para J de 1 até 3 Passo 1 Faça

      Leia B[i,J]

    Fim_para

  Fim_para

  Para I de 1 até 5 Passo 1 Faça

    Para J de 1 até 3 Passo 1 Faça

      C[i,J] ← A[i,J] = B[i,J]

    Fim_para

  Fim_para

  Para I de 1 até 5 Passo 1 Faça

    Para J de 1 até 3 Passo 1 Faça

      Escreva C[i,J]

    Fim_para

  Fim_para

Fim

  Não consigo traduzir para linguagem python, a minha grande duvida é como se cria uma matriz de duas dimensões em python, principalmente esta parte:

  Para I de 1 até 5 Passo 1 Faça

    Para J de 1 até 3 Passo 1 Faça

      Leia B[i,J]

Agradeço desde já qualquer atenção a este problema!

Posted

Ok percebe primeiro o algoritmo antes de o tentar traduzir. Uma vez percebido o algoritmo tenta implementa-lo.

Mas para responder à tua pergunta, de como se cria uma matriz bidimensional...

uma forma simples é uma lista de listas

Olha neste exemplo como eu crio uma matriz e lhe saco o elemnto (0,0)

>>> matriz=[[1,2],[3,4]]
>>> 
>>> matriz
[[1, 2], [3, 4]]
>>> 
>>> (matriz[0])[0]
1

eu nesse pseudo-código (é mesmo o nome, não é sarcasmo) não entendo o que quer dizer 'passo 1' aí a seguir a 'para de 1 até 5'. Mas isso são ciclos.

O que querem é

algo tipo

for i in range(5):
     #fazer aqui o que há a fazer....

Agora, eu estou a atalhar muito. Começa por ler estes dois links, são um bom começo:

http://docs.python.org/tutorial/introduction.html

http://docs.python.org/tutorial/controlflow.html

Posted

Talvez seja mais facil de perceber o que pretendo com linguagem python:

Matriz : Tabela 5x3

A = []

for i in range(1, 5, 1): # Posição indice

    for j in range(1, 3, 1): # Posição coluna / elemento

        a.append(input[i,j]) # Esta parte está errada! Preciso do "j" e do "i" para que o input coloque os "valores" corretamente na tabela atraves dos 2 ciclos incodicionais(for).

Posted

Ok... não estou a perceber o que queres fazer. O que queres dizer com "colocar os valores correctamente na tabela"?

O que é o input? Um objecto de que tipo?

coloca aí um

print input

e afixa aqui o resultado.

Essa linha tem um erro de sintaxe.

a[b,c] <--- não é python válido

Posted

Obrigado pela ajuda pedrotuga.

Solução:

a = []
tabela1 = []
for i in range(5):
    for j in range(3):
        a.append(input())
for i in range(0, 15, 3):
    tabela1.append(a[i: i+3])

b = []
tabela2 = []
for i in range(5):
    for j in range(3):
        b.append(input())
for i in range(0, 15, 3):
    tabela2.append(b[i: i+3])

c = []
tabela3 = []
for i in range(15):
    soma = a[i] + b[i]
    c.append(soma)
for i in range(0, 15, 3):
    tabela3.append(c[i: i+3])
    
print tabela3




Ainda sou um novato em programação não liguem a forma como esta escrito o algoritmo em python...  😄 Se existir uma solução mais facil é postar pf!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.