function TrainsCalculator() { const [problemType, setProblemType] = useState('meeting'); const [speed1, setSpeed1] = useState(''); const [speed2, setSpeed2] = useState(''); const [length1, setLength1] = useState(''); const [length2, setLength2] = useState(''); const [distance, setDistance] = useState(''); const [result, setResult] = useState(null); const calculate = () => { const s1 = parseFloat(speed1); const s2 = parseFloat(speed2); const l1 = parseFloat(length1) || 0; const l2 = parseFloat(length2) || 0; const d = parseFloat(distance); let calculated = {}; if (problemType === 'meeting') { // Trains meeting (opposite direction) const relativeSpeed = s1 + s2; const timeToMeet = d / relativeSpeed; const dist1 = s1 * timeToMeet; const dist2 = s2 * timeToMeet; calculated = { relativeSpeed: relativeSpeed.toFixed(2), timeToMeet: timeToMeet.toFixed(2), distance1: dist1.toFixed(2), distance2: dist2.toFixed(2), formula: 'Relative Speed = Speed₁ + Speed₂ (opposite direction)', calculation: `Time to meet = ${d} / (${s1} + ${s2}) = ${timeToMeet.toFixed(2)} hours` }; } else if (problemType === 'crossing') { // Trains crossing (same direction) const relativeSpeed = Math.abs(s1 - s2); const totalLength = l1 + l2; const timeToCross = (totalLength / 1000) / relativeSpeed; // Convert m to km calculated = { relativeSpeed: relativeSpeed.toFixed(2), totalLength: totalLength, timeToCross: timeToCross.toFixed(2), timeInMinutes: (timeToCross * 60).toFixed(2), formula: 'Relative Speed = |Speed₁ - Speed₂| (same direction)', calculation: `Time = (${l1} + ${l2}) m / ${relativeSpeed} km/h = ${timeToCross.toFixed(2)} hours` }; } else if (problemType === 'platform') { // Train crossing platform const totalLength = l1 + (l2 || 0); const timeToCross = (totalLength / 1000) / s1; // Convert m to km calculated = { totalLength: totalLength, timeToCross: timeToCross.toFixed(2), timeInSeconds: (timeToCross * 3600).toFixed(2), formula: 'Time = (Train Length + Platform Length) / Speed', calculation: `Time = ${totalLength} m / ${s1} km/h = ${timeToCross.toFixed(2)} hours = ${(timeToCross * 3600).toFixed(2)} seconds` }; } setResult(calculated); }; return (