Javascript Koşul Oluşturma

YILSUK11

Kilopat
Katılım
26 Temmuz 2016
Mesajlar
862
Makaleler
1
Çözümler
3
Selamlar arkadaşlar algoritma yeteneğimi geliştirmek için bir ödev aldım. Ödevim üçgenin açılarını yazarak türünü bulmak. Örneğin prompt aracılığı ile 3 tane "60" değeri girdiğim zaman konsolda "Eşit kenar üçgen" çıktısı almam gerekiyor, buraya kadar her şey tamam. Ama asıl sıkıntı şu bir üçgenin iç açısı 180 derecedir değil mi ?
Ben 3 tane "60" değil de 3 tane "40" değerini girersem yine "Eşit kenar üçgen" çıktısı alıyorum. Yani girdiğim 3 adet değerin toplamı 180 olmalı. Bu koşulu nasıl sağlayabilirim.
Ekran görüntüsü 2021-02-09 203330.png
 
500 tane if kullanma. Çok daha güzel yollarla yapılabilir.
İlk kontrolün iç açılar toplamı olsun.
JavaScript'ten anlamam ama şöyle yaptım. Syntax vb. hata olabilir ama yaptığım sitede çalıştı.

Kodda kenar diyorsunuz. Sonra niyeyse 4, 5 ve 3 yazmışsınız, onu otomatik olarak yazıyor.
Mesajınızda ise açı dediniz ve hesaplar ona göre yapıldı. Kenar olursa geçerli üçgen kontrolü değişiyor.

Kod:
let ilkKenar = parseInt(prompt("İlk kenarı giriniz", "4"));
let ikinciKenar = parseInt(prompt("İkinci kenarı giriniz", "5"));
let ucuncuKenar = parseInt(prompt("Üçüncü kenarı giriniz", "3"));

if (ilkKenar + ikinciKenar + ucuncuKenar != 180){
    alert("Üçgen hatalı.");
}
else if (ilkKenar == ikinciKenar && ilkKenar == ucuncuKenar){
    alert("Eşkenar üçgen.");
}
    
else if(ilkKenar == ikinciKenar || ilkKenar == ucuncuKenar || ikinciKenar == ucuncuKenar){
    alert("İkizkenar üçgen.");
}
else{
    alert("Çeşitkenar üçgen.");
}
 
Son düzenleme:
500 tane if kullanma. Çok daha güzel yollarla yapılabilir.
İlk kontrolün iç açılar toplamı olsun.
JavaScript'ten anlamam ama şöyle yaptım. Syntax vb. hata olabilir ama yaptığım sitede çalıştı.

Kodda kenar diyorsunuz. Sonra niyeyse 4, 5 ve 3 yazmışsınız, onu otomatik olarak yazıyor.
Mesajınızda ise açı dediniz ve hesaplar ona göre yapıldı. Kenar olursa geçerli üçgen kontrolü değişiyor.

Kod:
let ilkKenar = parseInt(prompt("İlk kenarı giriniz", "4"));
let ikinciKenar = parseInt(prompt("İkinci kenarı giriniz", "5"));
let ucuncuKenar = parseInt(prompt("Üçüncü kenarı giriniz", "3"));

if (ilkKenar + ikinciKenar + ucuncuKenar != 180){
    alert("Üçgen hatalı.");
}
else if (ilkKenar == ikinciKenar && ilkKenar == ucuncuKenar){
    alert("Eşkenar üçgen.");
}
   
else if(ilkKenar == ikinciKenar || ilkKenar == ucuncuKenar || ikinciKenar == ucuncuKenar){
    alert("İkizkenar üçgen.");
}
else{
    alert("Çeşitkenar üçgen.");
}
Default olarak 3,4,5 'i kodlar çalışıyor mu diye kontrol etmek için yazdım. Çok gerekli bir hareket değildi ama o an aklıma öyle geldi.
 
algoritma yeteneğimi geliştirmek için bir ödev aldım
Bir problemin farklı kodlama yöntemleriyle çözümüne bir örnek aşağıda. İnceleyebilirsiniz.
JavaScript:
let a1 = parseInt(prompt("1. açıyı giriniz"))
let a2 = parseInt(prompt("2. açıyı giriniz"))
let a3 = parseInt(prompt("3. açıyı giriniz"))
let acilar = [a1, a2, a3]

let hataMesajlari = [
    "Üçgenin iç açıları toplamı 180 olmalıdır!",
    "Üçgenin herhangi bir açısı sıfırdan büyük olmalıdır!"
]
let hatalar = [
    a1 + a2 + a3 !== 180, //hataMesajlari[0] koşulu
    a1 <= 0 || a2 <= 0 || a3 <= 0 //hataMesajlari[1] koşulu
]

let ucgenAdi = ["ikizkenar", "eşkenar", "çeşitkenar"]
let ucgenKosullari = [   
    a1 == a2 || a2 == a3 || a1 == a3, //ikizkenar koşulu
    a1 == a2 && a2 == a3, //eşkenar koşulu
    a1 != a2 && a1 != a3 && a2 != a3 //çeşitkenar koşulu
]

var hata = false;
var hataMsj = ""
for(let i = 0; i < hatalar.length; i++){
    if(hatalar[i]){
        hata = true
        hataMsj += "hata: " + hataMesajlari[i] + "\n"
    }
}

if(hata){
    alert(hataMsj)
}else{
    for(let i = 0; i < ucgenKosullari.length; i++){
        if(ucgenKosullari[i]){
            alert("Girdiğiniz üçgen " + ucgenAdi[i] + " üçgendir. " + acilar.toString())
        }
    }     
}
 
Aci demissin ama kodda kenar yazmissin.
Odevin ne kadar detayli olduguna gore degisir bu.
1. aciyi sordugunda adam 180 yazdigi an 2. aciyi sormadan hata vermen gerekir.
Once aciyi, sonra ucgeni validate etmelisin.
Eger sofistike gereksinimleri varsa odevin design pattern kullanmalisin, 300 tane if yazacaksin yoksa.
 
Aci demissin ama kodda kenar yazmissin.
Odevin ne kadar detayli olduguna gore degisir bu.
1. aciyi sordugunda adam 180 yazdigi an 2. aciyi sormadan hata vermen gerekir.
Once aciyi, sonra ucgeni validate etmelisin.
Eger sofistike gereksinimleri varsa odevin design pattern kullanmalisin, 300 tane if yazacaksin yoksa.
Ödev çok detaylı değil yaptıklarım ödev için yeterliydi. Sadece merakımdan dolayı açıların toplamının 180 e eşit olmasını istiyorum. Dediklerinizi dikkate alacağım.
 

Yeni konular

Geri
Yukarı