JavaScript ile girilen 10 çift ve tek sayının ayrı ayrı ortalamasını bulmak

deleraxino

Hectopat
Katılım
28 Eylül 2020
Mesajlar
159
JavaScript ile klavyeden girilen 10 sayının önce tek mi çift mi olduğunu bulup ortalamalarını almak istiyorum, nasıl yapabilirim?

Tek sayıların ortalaması: 56.

Çift sayıların ortalaması: 79.

Gibi.
 
Çift olup olmadığını mod alarak if koşulu içinde kontrol edebilir ve ayrı ayrı dizilere aktarabilirsiniz. Daha sonra iki dizideki sayıların eleman sayılarına (length) göre hesaplamasını yapıp ortalamasını bulursunuz.
 
Sayilarin tum_sayilar arrayinde tutuldugunu var sayarsak:

JavaScript:
var cift_sayilarin_sayisi = 0;
var tek_sayilarin_sayisi = 0;
var cift_sayilarin_toplami = 0;
var tek_sayilarin_toplami = 0;

tum_sayilar.forEach(function (siradaki_sayi) {
    if (siradaki_sayi % 2 === 0) {
        cift_sayilarin_toplami += siradaki_sayi;
        ++cift_sayilarin_sayisi;
    } else {
        tek_sayilarin_toplami += siradaki_sayi;
        ++tek_sayilarin_sayisi;
    }
});

console.log('Cift sayilarin ortalamasi = ' + cift_sayilarin_toplami / cift_sayilarin_sayisi);
console.log('Tek sayilarin ortalamasi = ' + tek_sayilarin_toplami / tek_sayilarin_sayisi);
 
Fonksiyon kullanarak yapmak istersen:


[CODE lang="javascript" title="JS"]//Verilerimizi tanımlıyoruz
var sayilar = [23,65,12,88,90,6,4,39,27,17];
var tekSayilar = [];
var ciftSayilar = [];

//Tek ve çift sayıları farklı dizilere ayırıyoruz
sayilar.forEach(sayi =>{

if(sayi % 2 === 0){
ciftSayilar.push(sayi);
} else {
tekSayilar.push(sayi);
}
});

//Tek sayıların toplamını hesaplayacak fonksiyon
tekSayilarToplam = function(){

let tekSayilarToplam = 0;

tekSayilar.forEach(sayi=>{
tekSayilarToplam += sayi;
});

return tekSayilarToplam;
}

//Çift sayıların toplamını hesaplayacak fonksiyon
ciftSayilarToplam = function(){

let ciftSayilarToplam = 0;

ciftSayilar.forEach(sayi=>{
ciftSayilarToplam += sayi;
});

return ciftSayilarToplam;
}

//Tek sayıların ortalamasını hesaplayacak fonksiyon
tekSayilarOrt = function(){

let tekSayilarOrt = tekSayilarToplam() / tekSayilar.length;

return tekSayilarOrt;
};

//Çift sayıların toplamını hesaplayacak fonksiyon
ciftSayilarOrt = function(){

let ciftSayilarOrt = ciftSayilarToplam() / ciftSayilar.length;

return ciftSayilarOrt;
};

//Tek sayılar ile ilgili bilgiler
console.log('Tek sayılar: ' + tekSayilar);
console.log('Tek Sayıların Toplamı: ' + tekSayilarToplam());
console.log('Tek sayıların ortalaması: ' + tekSayilarOrt());

//Çift sayılar ile ilgili bilgiler
console.log('Çift sayılar: ' + ciftSayilar);
console.log('Çift Sayıların Toplamı: ' + ciftSayilarToplam());
console.log('Çift sayıların ortalaması: ' + ciftSayilarOrt());[/CODE]

Çıktısı F12 konsolda şu şekilde olacaktır. Daha sonra istediğiniz dataları dizilerden alıp DOM kullanarak web sayfasında görsel olarak kullanabilirsiniz.
cikti.png
 
JavaScript:
const getRandomInt = (min, max) => ~~(min + Math.random() * (max - min));
const numbers = [...Array(10)].map(_ => getRandomInt(0, 100));
const avg = (arr) => arr.reduce((acc, v) => acc + v, 0) / arr.length || 0;

const oddNumbers = numbers.filter(x => x & 0x1);
const evenNumbers = numbers.filter(x => (x & 0x1) == 0);
const oddMean = avg(oddNumbers);
const evenMean = avg(evenNumbers);

console.log("Odd Numbers:", oddNumbers);
console.log("Mean of Odd Numbers:", oddMean);
console.log("Even Numbers:", evenNumbers);
console.log("Mean of EvenNumbers:", evenMean);

Sayıları random çektim. "numbers" dizisi içerisinde number tipinde değerler olduğu sürece isterseniz fetch API ile NASA'nın sunucusundan çekin fark etmeyecektir.
 
Son düzenleme:
Fonksiyon kullanarak yapmak istersen:
JavaScript:
 //Verilerimizi tanımlıyoruz
    for(i=1;i<11;i++){
        var sayilar = window.prompt("sayi girin" + i ) + [];
    }

var tekSayilar = [];
var ciftSayilar = [];

//Tek ve çift sayıları farklı dizilere ayırıyoruz
sayilar.forEach(sayi =>{

    if(sayi % 2 === 0){
        ciftSayilar.push(sayi);
    } else {
        tekSayilar.push(sayi);
    }
});

//Tek sayıların toplamını hesaplayacak fonksiyon
tekSayilarToplam = function(){

    let tekSayilarToplam = 0;
    
    tekSayilar.forEach(sayi=>{
        tekSayilarToplam += sayi;
    });
    
    return tekSayilarToplam;
}

//Çift sayıların toplamını hesaplayacak fonksiyon
ciftSayilarToplam = function(){

    let ciftSayilarToplam = 0;
    
    ciftSayilar.forEach(sayi=>{
        ciftSayilarToplam += sayi;
    });
    
    return ciftSayilarToplam;
}

//Tek sayıların ortalamasını hesaplayacak fonksiyon
tekSayilarOrt = function(){

    let tekSayilarOrt = tekSayilarToplam() / tekSayilar.length;

    return tekSayilarOrt;
};

//Çift sayıların toplamını hesaplayacak fonksiyon
ciftSayilarOrt = function(){

    let ciftSayilarOrt = ciftSayilarToplam() / ciftSayilar.length;

    return ciftSayilarOrt;
};

//Tek sayılar ile ilgili bilgiler
window.alert('Tek sayılar: ' + tekSayilar);
window.alert('Tek Sayıların Toplamı: ' + tekSayilarToplam());
window.alert('Tek sayıların ortalaması: ' + tekSayilarOrt());

//Çift sayılar ile ilgili bilgiler
window.alert('Çift sayılar: ' + ciftSayilar);
window.alert('Çift Sayıların Toplamı: ' + ciftSayilarToplam());
window.alert('Çift sayıların ortalaması: ' + ciftSayilarOrt())


Sayıları kullanıcının girmesi için şöyle bir şey yaptım hata nerede anlayamadım birde sonucu console yerine bir etiketin içerisine yada alert olarak vermek istiyorum.
 
Sayıları kullanıcının girmesi için şöyle bir şey yaptım hata nerede anlayamadım birde sonucu console yerine bir etiketin içerisine yada alert olarak vermek istiyorum.

Gerekli düzenlemeyi yaptım. Etiket içinde kullanmak için DOM kullanabilirsiniz ben alert ile gösterdim. "sayiAdet" değişkeni ile istediğiniz kadar sayı girecek şekilde ayarlayabilirsiniz.


[CODE lang="javascript" title="JS"]//Verilerimizi tanımlıyoruz
var sayiAdet = 10;
var sayilar = new Array(sayiAdet);

for(let i=0;i<sayilar.length;i++){
sayilar = parseInt(prompt((i+1) + '. sayıyı girin:'));
}

var tekSayilar = [];
var ciftSayilar = [];

//Tek ve çift sayıları farklı dizilere ayırıyoruz
sayilar.forEach(sayi =>{

if(sayi % 2 === 0){
ciftSayilar.push(sayi);
} else {
tekSayilar.push(sayi);
}
});

//Tek sayıların toplamını hesaplayacak fonksiyon
tekSayilarToplam = function(){

let tekSayilarToplam = 0;

tekSayilar.forEach(sayi=>{
tekSayilarToplam += sayi;
});

return tekSayilarToplam;
}

//Çift sayıların toplamını hesaplayacak fonksiyon
ciftSayilarToplam = function(){

let ciftSayilarToplam = 0;

ciftSayilar.forEach(sayi=>{
ciftSayilarToplam += sayi;
});

return ciftSayilarToplam;
}

//Tek sayıların ortalamasını hesaplayacak fonksiyon
tekSayilarOrt = function(){

let tekSayilarOrt = tekSayilarToplam() / tekSayilar.length;

return tekSayilarOrt;
};

//Çift sayıların toplamını hesaplayacak fonksiyon
ciftSayilarOrt = function(){

let ciftSayilarOrt = ciftSayilarToplam() / ciftSayilar.length;

return ciftSayilarOrt;
};

//Sayı ile ilgili çıktılar
alert(`
Tek Sayılar : ${tekSayilar}\n
Tek Sayıların Toplamı : ${tekSayilarToplam()}\n
Tek Sayıların Ortalaması : ${tekSayilarOrt()}\n
-----------------------------------------------\n
Çift Sayılar: ${ciftSayilar}\n
Çift Sayıların Toplamı : ${ciftSayilarToplam()}\n
Çift Sayıların Ortalaması : ${ciftSayilarOrt()}
`);[/CODE]
 

Geri
Yukarı