Tam Sınav Puan Hesaplama 2025 - TYT, AYT, LGS, DGS, KPSS | UzmanPDR body { background: linear-gradient(135deg, #e0f7fa, #b2ebf2, #80deea); font-family: 'Poppins', sans-serif; } .card { aspect-ratio: 1 / 1; display: flex; align-items: center; justify-content: center; text-align: center; background: linear-gradient(145deg, #ffffff, #f0f4f8); border-radius: 15px; box-shadow: 0 6px 12px rgba(0, 0, 0, 0.1); transition: transform 0.3s ease, box-shadow 0.3s ease, background 0.3s ease; cursor: pointer; } .card:hover { transform: translateY(-5px) scale(1.05); box-shadow: 0 12px 24px rgba(0, 0, 0, 0.2); background: linear-gradient(145deg, #e3f2fd, #bbdefb); } .card:active { transform: scale(0.98); } #calcForm { background: #ffffff; border-radius: 20px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15); transition: opacity 0.3s ease, transform 0.3s ease; } #calcForm.hidden { opacity: 0; transform: translateY(20px); pointer-events: none; } #calcForm:not(.hidden) { opacity: 1; transform: translateY(0); } .input-field input { transition: all 0.3s ease; border: 2px solid #e0e0e0; } .input-field input:focus { border-color: #42a5f5; box-shadow: 0 0 8px rgba(66, 165, 245, 0.3); } #calculateBtn { background: linear-gradient(90deg, #1e88e5, #42a5f5); transition: all 0.3s ease; } #calculateBtn:hover { background: linear-gradient(90deg, #1976d2, #2196f3); transform: translateY(-2px); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2); } #result { transition: opacity 0.3s ease; } footer { background: rgba(255, 255, 255, 0.9); border-top: 1px solid #e0e0e0; padding: 1rem 0; text-align: center; font-size: 0.9rem; color: #555; position: relative; bottom: 0; width: 100%; box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.05); } { "@context": "https://schema.org", "@type": "WebApplication", "name": "Tam Sınav Puan Hesaplama", "description": "Türkiye'deki tüm sınavlar için puan hesaplama aracı: TYT, AYT, LGS, DGS, KPSS ve daha fazlası.", "url": "https://uzmanpdr.com.tr/puan-hesaplama", "author": { "@type": "Person", "name": "Onur ULUSOY" }, "datePublished": "2025-04-09", "applicationCategory": "Eğitim" } 📚 UzmanPDR Puan Hesaplama 📐 AKS 🎓 ALES ✍️ AYT 📈 DGS 🕌 DİB MBSTS 🦷 DUS 🚗 Ehliyet ♿ EKPSS 💊 EUS ⚠️ İSG ✈️ JANA 👩🏫 KPSS 🏫 LGS 🎖️ MSÜ 🏫 OBP 👮 PMYO 🚔 POMEM 📝 TYT Hesapla Geri Dön Hazırlayan: Onur ULUSOY - UzmanPDR 2025 // --- DÜZENLEME NOTU --- // Sınav katsayıları ve hesaplama formülleri, her yıl ÖSYM ve MEB tarafından açıklanan kılavuzlara göre // değişiklik gösterebilir. Buradaki katsayılar, en son verilere dayalı yaklaşık değerlerdir ve // bilgilendirme amaçlıdır. Özellikle YKS, LGS, DGS gibi sınavlarda puanlar, o yılki sınavın // standart sapma ve ortalama değerlerine göre hesaplandığından, netler üzerinden yapılan bu hesaplama // %100 doğrulukta olmayabilir. const examSections = { 'AKS': [{ name: 'Genel Kültür ve Yetenek', questions: 100 }], 'ALES': [ { name: 'Sayısal', questions: 50 }, { name: 'Sözel', questions: 50 } ], // DÜZENLEME: AYT bölüm isimleri, puan türlerine göre daha anlaşılır olacak şekilde güncellendi. // Katsayılar, güncel verilere göre yaklaştırıldı. 'AYT': [ { name: 'Matematik', questions: 40 }, { name: 'Fen Bilimleri', questions: 40 }, // Fizik(14), Kimya(13), Biyoloji(13) { name: 'Edebiyat-Sosyal-1', questions: 40 }, // TDE(24), Tarih-1(10), Coğrafya-1(6) { name: 'Sosyal-2', questions: 40 } // Tarih-2(11), Coğrafya-2(11), Felsefe(12), Din Kültürü(6) ], 'DGS': [ { name: 'Sayısal', questions: 50 }, { name: 'Sözel', questions: 50 } ], 'DIB_MBSTS': [{ name: 'Genel', questions: 60 }], 'DUS': [{ name: 'Klinik Bilimler', questions: 80 }], 'Ehliyet': [{ name: 'Genel', questions: 50, netRule: 'none' }], // Ehliyette yanlış doğruyu götürmez 'EKPSS': [ { name: 'Genel Yetenek', questions: 30 }, { name: 'Genel Kültür', questions: 30 } ], 'EUS': [{ name: 'Genel', questions: 80 }], 'ISG': [{ name: 'Genel', questions: 50 }], 'JANA': [ { name: 'Genel Yetenek', questions: 50 }, { name: 'Genel Kültür', questions: 50 } ], 'KPSS': [ { name: 'Genel Yetenek', questions: 60 }, { name: 'Genel Kültür', questions: 60 } ], // DÜZENLEME: LGS'de 3 yanlış 1 doğruyu götürür kuralı eklendi (netRule). // Sosyal Bilimler, dersleri daha iyi yansıtacak şekilde isimlendirildi. 'LGS': [ { name: 'Türkçe', questions: 20, netRule: 3 }, { name: 'Matematik', questions: 20, netRule: 3 }, { name: 'Fen Bilimleri', questions: 20, netRule: 3 }, { name: 'İnkılap Tarihi, Din Kültürü, Yabancı Dil', questions: 30, netRule: 3 } // Toplam 10'ar soru ], 'MSU': [ { name: 'Türkçe', questions: 40 }, { name: 'Temel Matematik', questions: 40 }, { name: 'Sosyal Bilimler', questions: 20 }, { name: 'Fen Bilimleri', questions: 20 } ], // DÜZENLEME: OBP hesaplama mantığı düzeltildi. Sadece diploma notu istenir. 'OBP': [{ name: 'Diploma Notu (100 üzerinden)', questions: 100, isGrade: true }], 'PMYO': [{ name: 'TYT Puanı', questions: 500, isScore: true }], 'POMEM': [{ name: 'KPSS Puanı', questions: 100, isScore: true }], 'TYT': [ { name: 'Türkçe', questions: 40 }, { name: 'Sosyal Bilimler', questions: 20 }, { name: 'Temel Matematik', questions: 40 }, { name: 'Fen Bilimleri', questions: 20 } ] }; const cards = document.querySelectorAll('.card'); const cardGrid = document.getElementById('cardGrid'); const calcForm = document.getElementById('calcForm'); const examTitle = document.getElementById('examTitle'); const inputFields = document.getElementById('inputFields'); const extraFields = document.getElementById('extraFields'); const calculateBtn = document.getElementById('calculateBtn'); const backBtn = document.getElementById('backBtn'); const result = document.getElementById('result'); // --- Fonksiyonlar --- function getNet(correct, incorrect, section) { const rule = section.netRule || 4; // Varsayılan: 4 yanlış 1 doğruyu götürür if (rule === 'none' || section.isGrade || section.isScore) { return correct; } if (correct + incorrect > section.questions) { return 'error'; // Hatalı giriş kontrolü } return correct - (incorrect / rule); } function generateInputs(exam) { const sections = examSections[exam]; inputFields.innerHTML = ''; sections.forEach(section => { const div = document.createElement('div'); div.className = 'input-field mb-4'; // DÜZENLEME: OBP ve diğer puan girişleri için arayüz basitleştirildi. if (section.isGrade || section.isScore) { div.innerHTML = ` ${section.name} `; } else { div.innerHTML = ` ${section.name} (${section.questions} Soru) Doğru: Yanlış: `; } inputFields.appendChild(div); }); extraFields.innerHTML = ''; if (['TYT', 'AYT', 'MSU', 'DGS'].includes(exam)) { const obpDiv = document.createElement('div'); obpDiv.className = 'input-field'; // DÜZENLEME: OBP yerine Diploma Notu istenerek daha anlaşılır hale getirildi. obpDiv.innerHTML = ` Diploma Notu (100 üzerinden): `; extraFields.appendChild(obpDiv); } if (exam === 'AYT') { const tytDiv = document.createElement('div'); tytDiv.className = 'mt-6 border-t pt-6 border-gray-200'; tytDiv.innerHTML = 'TYT Netleriniz'; examSections['TYT'].forEach(section => { tytDiv.innerHTML += ` ${section.name} Doğru: Yanlış: `; }); extraFields.appendChild(tytDiv); } } function showResult(htmlContent) { result.innerHTML = htmlContent; result.style.opacity = '1'; } function showError(message) { result.innerHTML = `${message}`; result.style.opacity = '1'; } // --- Olay Dinleyicileri --- cards.forEach(card => { card.addEventListener('click', () => { const exam = card.getAttribute('data-exam'); examTitle.textContent = card.textContent; generateInputs(exam); cardGrid.classList.add('hidden'); calcForm.classList.remove('hidden'); result.style.opacity = '0'; result.innerHTML = ''; }); }); backBtn.addEventListener('click', () => { cardGrid.classList.remove('hidden'); calcForm.classList.add('hidden'); }); // --- ANA HESAPLAMA MANTIĞI --- calculateBtn.addEventListener('click', () => { const exam = document.querySelector(`#cardGrid .card[data-exam]:not([data-exam=""])[data-exam="${examTitle.textContent.split(' ').pop()}"]`).dataset.exam; const sections = examSections[exam]; const nets = {}; let hasError = false; sections.forEach(section => { const correctInput = document.querySelector(`.correct[data-section="${section.name}"]`); const incorrectInput = document.querySelector(`.incorrect[data-section="${section.name}"]`); const correct = parseFloat(correctInput.value) || 0; const incorrect = section.isGrade || section.isScore ? 0 : (parseFloat(incorrectInput.value) || 0); const net = getNet(correct, incorrect, section); if (net === 'error') { showError(`'${section.name}' bölümünde doğru ve yanlış sayısı toplamı soru sayısını geçemez.`); hasError = true; } nets[section.name] = net; }); if (hasError) return; const diplomaGrade = parseFloat(document.getElementById('diplomaGrade')?.value) || 0; const obpContribution = diplomaGrade * 0.6; // OBP Puanı = Not * 5, Yerleştirme Katkısı = OBP * 0.12 => Not * 5 * 0.12 = Not * 0.6 let resultHTML = ''; // --- Sınav Özel Hesaplamaları --- if (exam === 'OBP') { const diplomaNotu = nets['Diploma Notu (100 üzerinden)']; resultHTML = `Okul Başarı Puanınız (OBP): ${(diplomaNotu * 5).toFixed(3)}`; } else if (exam === 'LGS') { // DÜZENLEME: LGS formülü güncellendi. OBP eklenmez, taban puan 100'dür. const katsayi = { 'Türkçe': 4, 'Matematik': 4, 'Fen Bilimleri': 4, 'İnkılap Tarihi, Din Kültürü, Yabancı Dil': 1.66 }; // Yaklaşık katsayılar let totalScore = 0; for (const sectionName in nets) { totalScore += nets[sectionName] * katsayi[sectionName]; } const finalScore = 100 + totalScore; resultHTML = `LGS Puanınız (Tahmini): ${finalScore.toFixed(3)}`; } else if (exam === 'TYT') { const katsayi = { 'Türkçe': 3.3, 'Sosyal Bilimler': 3.4, 'Temel Matematik': 3.3, 'Fen Bilimleri': 3.4 }; let hamPuan = 100; for (const sectionName in nets) { hamPuan += nets[sectionName] * katsayi[sectionName]; } const yerlestirmePuani = hamPuan + obpContribution; resultHTML = `TYT Ham Puan: ${hamPuan.toFixed(3)} TYT Yerleştirme Puanı: ${yerlestirmePuani.toFixed(3)}`; } else if (exam === 'AYT') { // TYT Puanı Hesaplama const tytNets = {}; examSections['TYT'].forEach(section => { const correct = parseFloat(document.querySelector(`.tyt-correct[data-section="${section.name}"]`).value) || 0; const incorrect = parseFloat(document.querySelector(`.tyt-incorrect[data-section="${section.name}"]`).value) || 0; tytNets[section.name] = getNet(correct, incorrect, section); }); const tytKatsayi = { 'Türkçe': 3.3, 'Sosyal Bilimler': 3.4, 'Temel Matematik': 3.3, 'Fen Bilimleri': 3.4 }; let tytHamPuan = 100; for (const sectionName in tytNets) { tytHamPuan += tytNets[sectionName] * tytKatsayi[sectionName]; } // AYT Puanları Hesaplama const aytKatsayi = { SAY: { 'Matematik': 3.0, 'Fen Bilimleri': 3.0 }, // Ortalama katsayı EA: { 'Matematik': 3.0, 'Edebiyat-Sosyal-1': 3.0 }, SOZ: { 'Edebiyat-Sosyal-1': 3.0, 'Sosyal-2': 2.9 } }; const aytHamPuan = { SAY: 100 + (nets['Matematik'] * aytKatsayi.SAY['Matematik']) + (nets['Fen Bilimleri'] * aytKatsayi.SAY['Fen Bilimleri']), EA: 100 + (nets['Matematik'] * aytKatsayi.EA['Matematik']) + (nets['Edebiyat-Sosyal-1'] * aytKatsayi.EA['Edebiyat-Sosyal-1']), SOZ: 100 + (nets['Edebiyat-Sosyal-1'] * aytKatsayi.SOZ['Edebiyat-Sosyal-1']) + (nets['Sosyal-2'] * aytKatsayi.SOZ['Sosyal-2']), }; const yerlestirme = { SAY: (tytHamPuan * 0.4) + (aytHamPuan.SAY * 0.6) + obpContribution, EA: (tytHamPuan * 0.4) + (aytHamPuan.EA * 0.6) + obpContribution, SOZ: (tytHamPuan * 0.4) + (aytHamPuan.SOZ * 0.6) + obpContribution, }; resultHTML = ` TYT Yerleştirme Puanı Katkısı: ${(tytHamPuan * 0.4).toFixed(3)} SAY Yerleştirme Puanı: ${yerlestirme.SAY.toFixed(3)} EA Yerleştirme Puanı: ${yerlestirme.EA.toFixed(3)} SÖZ Yerleştirme Puanı: ${yerlestirme.SOZ.toFixed(3)} `; } else if (exam === 'DGS') { const katsayi = { SAY: { 'Sayısal': 3, 'Sözel': 0.6 }, EA: { 'Sayısal': 1.8, 'Sözel': 1.8 }, SOZ: { 'Sayısal': 0.6, 'Sözel': 3 } }; const onlisansPuani = diplomaGrade * 0.8; // ÖBP = Not * 0.8 const hamPuan = { SAY: 100 + (nets['Sayısal'] * katsayi.SAY['Sayısal']) + (nets['Sözel'] * katsayi.SAY['Sözel']), EA: 100 + (nets['Sayısal'] * katsayi.EA['Sayısal']) + (nets['Sözel'] * katsayi.EA['Sözel']), SOZ: 100 + (nets['Sayısal'] * katsayi.SOZ['Sayısal']) + (nets['Sözel'] * katsayi.SOZ['Sözel']) }; const yerlestirme = { SAY: hamPuan.SAY + onlisansPuani, EA: hamPuan.EA + onlisansPuani, SOZ: hamPuan.SOZ + onlisansPuani, } resultHTML = ` Ön Lisans Başarı Puanı Katkısı: ${onlisansPuani.toFixed(3)} DGS SAY Puanı: ${yerlestirme.SAY.toFixed(3)} DGS EA Puanı: ${yerlestirme.EA.toFixed(3)} DGS SÖZ Puanı: ${yerlestirme.SOZ.toFixed(3)} `; } else if (exam === 'ALES') { const katsayi = { SAY: { 'Sayısal': 0.75, 'Sözel': 0.25 }, EA: { 'Sayısal': 0.5, 'Sözel': 0.5 }, SOZ: { 'Sayısal': 0.25, 'Sözel': 0.75 } }; const puan = { SAY: 50 + (nets['Sayısal'] * katsayi.SAY['Sayısal'] + nets['Sözel'] * katsayi.SAY['Sözel']) * 50, EA: 50 + (nets['Sayısal'] * katsayi.EA['Sayısal'] + nets['Sözel'] * katsayi.EA['Sözel']) * 50, SOZ: 50 + (nets['Sayısal'] * katsayi.SOZ['Sayısal'] + nets['Sözel'] * katsayi.SOZ['Sözel']) * 50 }; resultHTML = ` ALES SAY Puanı: ${puan.SAY.toFixed(3)} ALES EA Puanı: ${puan.EA.toFixed(3)} ALES SÖZ Puanı: ${puan.SOZ.toFixed(3)} `; } else if (exam === 'Ehliyet') { const score = nets['Genel'] * 2; resultHTML = `Ehliyet Sınav Puanınız: ${score} ${score >= 70 ? 'Tebrikler, geçtiniz!' : 'Maalesef, geçemediniz.'}`; } else { // Diğer basit hesaplamalar için genel bir yapı let totalScore = 0; sections.forEach(section => { totalScore += nets[section.name] || 0; }); resultHTML = `Tahmini Puanınız: ${totalScore.toFixed(3)}`; } showResult(resultHTML); });