The solution to this problem is fairly elegant.
Realize that if a rope takes an hour to burn from end to end, we can reduce that time to half an hour by lighting up both ends simultaneously. (This will work, even though the rope burns unevenly.)
So, we light up one rope from both ends, and the other rope from just one end. At the point that the first rope is completely consumed, we know that half an hour has elapsed.
At this moment, the second rope still has half an hour to burn.
But we can reduce that to 15 minutes by lighting the second end of the second rope now, and when that rope is gone, we know that it's been 30 + 15 = 45 minutes.