Obtener mes mediante número de semana y año
Te voy a poner un pseudocodigo sencillo para que lo trabajes
boolean semanaEncontrada=falso
entero contadorSemana=.
entero semana=0
entero contadorMes=0
Algoritmo cuentaSemanas(entero mes)
Si mes = 1 entonces
cuentaSemanasEnero
si mes =2 entonces
cuentaSemanaFebrero
si mes = 3
.
.
.
fin cuentaSemana
Algoritmo cuentaSemanaEnero devuelve entero numerosSemanasEnero
String diaUno=0
entero primerDomingoMes
numerosSemanasEnero=1
diaUno = día de la semana que cae el 1/1 del año solicitado;
primerDomingoMes = CalcularPrimerDomingo (diaUno)
numeroSemanasEnero=numeroSemanasEnero+RedondeoHaciaArriba((31-primerDomingoMes)/4)
retornar numeroSemanasEnero
fin Algoritmo
Algoritmo cuentaSemanaFebrero devuelve entero numerosSemanasFebrero
String diaUno=0
entero primerDomingoMes
numerosSemanasFebrero=0
diaUno = día de la semana que cae el 1/1 del año solicitado; //lunes, martes,...
/*NO podemos inicializar la variable a 1 como antes porque depende si febrero empieza a mitad de semana, esa semana no se cuenta por estar en el mes anterior*/
si diaUno="lunes" entonces
numeroSemanasFebrero=1
sino
numeroSemanasFebrero=0
fin-si
primerDomingoMes = CalcularPrimerDomingo (diaUno)
numeroSemanasFebrero=numeroSemanasFebrero+(31-primerDomingoMes)/4
retornar numeroSemanasFebrero
fin Algoritmo
Programa Principal
mientras !semanaEncontrada do
contadorMes=contadorMes+1
contadorSemanas = ContadorSemanas + cuentaSemanas(contadorMes)
si contadorSemana>=Semana entonces //semana del mes encontrado
semanaEncontrada = Verdadero
fin si
fin mientras
escribir (El mes es, contadorMes)
Fin Programa
Espero que esta idea te ayude. NO está depurada, pero puedes trabajarla.
Un saludo