Bueno, la verdad es que es bastante mas sencillo...
semanadelaño = (mes-1)*4 + numerosemanames
...mas o menos...
esto seria mas correcto :
Código Delphi
[-]
function SemanadelAño(n,m : integer) : integer;
const
diaspormes = [31,28,31,30,31,30,31,31,30,31,30,31]
begin
result := 0;
while m > 0 do
begin
result := result + diaspormes[m];
dec(m);
end;
result := result div 7 + n;
end;
aunque tambien daria fallos segun bisiesto, 1 de enero domingo, etc...