Ficha 2 
Elementos de Programação
LMAC,MEBM  2012/13

10 minutos

Enunciado A (1 valor)
Não é permitido o uso de máquina de calcular nem de qualquer  tipo de consulta. 

Número:                                       Nome:

(a) Defina imperativamente em Mathematica uma função lzero que recebe uma matriz quadrada m e devolve a lista dos índices das linhas da matriz em que ocorre pelo menos um zero. 
Nomeadamente, deverá ter-se lzero[{{0,4,3},{1,2,1},{1,4,0}}]={1,3} pois 0 ocorre precisamente nas linhas 1 e 3.

lzero=Function[m,Module[{i,j,ls,oc},
i=1;
ls={};
While[i≤Length[m],
j=1;
oc=False;
While[j≤Length[m]&&!oc,
If[m[[i,j]]==0,oc=True,j=j+1]
];
If[oc,ls=Append[ls,i]];
i=i+1
];
ls]];

Ficha 2 
Elementos de Programação
LMAC,MEBM  2012/13

10 minutos

Enunciado B (1valor)
Não é permitido o uso de máquina de calcular nem de qualquer  tipo de consulta. 

Número:                                       Nome:

(a) Defina imperativamente em Mathematica uma função mins que recebe uma matriz m e devolve a lista dos valores mínimos de cada linha da matriz. Nomeadamente, deverá ter-se mins[{{4,4,3},{1,2,0},{1,4,1}}]={3,0,1} pois o mínimo da primeira linha é 3, o mínimo da segunda linha é 0, e o mínimo da terceira linha é 1.

mins=Function[m,Module[{i,j,r,min},
i=1;
r={};
While[i≤Length[m],
min=Infinity;
j=1;
While[j≤Length[m[[1]]],
If[m[[i,j]]<min,min=m[[i,j]]];
j=j+1
];
r=Append[r,min];
i=i+1
];
r]];

Ficha 2 
Elementos de Programação
LMAC,MEBM  2012/13

10 minutos

Enunciado C (1 valor)
Não é permitido o uso de máquina de calcular nem de qualquer  tipo de consulta. 

Número:                                       Nome:

(a) Defina imperativamente em Mathematica uma função lsomaz que recebe uma matriz m e devolve a lista dos índices das linhas da matriz cuja soma é zero. 
Nomeadamente, deverá ter-se lsomaz[{{0,4,-3},{-1,0,1},{0,0,0}}]={2,3} pois a primeira linha soma 0+4-3=1, mas as linhas 2 e 3 somam -1+0+1=0 e 0+0+0=0, respectivamente.

lsomaz=Function[m,Module[{i,j,ls,s},
i=1;
ls={};
While[i≤Length[m],
j=1;
s=0;
While[j≤Length[m[[1]]],
s=s+m[[i,j]];
j=j+1
];
If[s==0,ls=Append[ls,i]];
i=i+1
];
ls]];

Ficha 2 
Elementos de Programação
LMAC,MEBM  2012/13

10 minutos

Enunciado D (1 valor)
Não é permitido o uso de máquina de calcular nem de qualquer  tipo de consulta. 

Número:                                       Nome:

(a) Defina imperativamente em Mathematica uma função smax que recebe uma matriz quadrada m e devolve a soma dos valores máximos de cada linha da matriz. Nomeadamente, deverá ter-se smax[{{1,4,3},{1,2,0},{1,4,5}}]=4+2+5=11 pois os valores máximos das linhas da matriz são 4, 2 e 5, respectivamente.

smax=Function[m,Module[{i,j,s,max},
i=1;
s=0;
While[i≤Length[m],
max=-Infinity;
j=1;
While[j≤Length[m],
If[m[[i,j]]>max,max=m[[i,j]]];
j=j+1
];
s=s+max;
i=i+1
];
s]];