Çözüldü C++ [0,100] aralığında rastgele üretilen 5 tane reel sayıyı hesaplama

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

umitoznehir

Femtopat
Katılım
8 Haziran 2022
Mesajlar
8
Daha fazla  
Cinsiyet
Erkek
[0,100] aralığında rastgele üretilen 5 tane reel sayının aritmetik, harmonik, geometrik ortalamasını ve varyansını hesaplayan programı yazınız.

Arkadaşlar, ödevim bu şekilde örneğini de bulamadım. Nasıl yapabilirim bilen varsa yardımcı olabilir mi?
 
Son düzenleyen: Moderatör:
Çözüm
C++:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <tuple>

using namespace std;

tuple<float, float, float, float, float> hesapla(float arr[], int size);

int main()
{
    srand(time(NULL));
    float arr [5];
    int size = sizeof(arr)/sizeof(arr[0]);
    
    for (int i = 0; i < size; i++) {;
        arr[i] = ((float)rand() / (float)RAND_MAX)*100;
    }
    
    auto [aritmetik, harmonik, geometrik, varyans, standart_sapma] = hesapla(arr, size);
    for (auto& num : arr) {
        cout<<num<<endl;
    }
    
    cout << "aritmetik ortalama: " << aritmetik << endl;
    cout << "harmonik ortalama: " << harmonik << endl;
    cout << "geometrik ortalama: " << geometrik << endl;
    cout << "varyans: " << varyans << endl;
    cout << "standart sapma: " << standart_sapma << endl;
    return 0;
}

tuple<float, float, float, float, float> hesapla(float arr[], int size)
{
    float aritmetik = 0, harmonik = 0, geometrik = 1, varyans = 0, standart_sapma = 0;

    for(int i = 0; i < size; i++) {
        aritmetik += arr[i];
        harmonik += (1 / arr[i]);
        geometrik *= arr[i];
    }
    
    aritmetik /= size;
    harmonik = size / harmonik;
    geometrik = pow(geometrik, (float)1 / size);
    
    for(int i = 0; i < size; i++) {
        varyans += (arr[i] - aritmetik) * (arr[i] - aritmetik);
    }
    
    varyans /= size;
    standart_sapma = sqrt(varyans);
    
    return make_tuple(aritmetik, harmonik, geometrik, varyans, standart_sapma);
}
[0,100] aralığındaki sonsuz reel sayıyı 101 tane değere sınırlamak akıllıcaysa haklısınız.
5 tane reel sayı ile hesaplama yapılırken, sonsuz aralıktan mutlaka 5 tane reel sayı seçmek gerekir. Yazılan kod da aynen bunu yapıyor. İster sınırla ister sınırlama, soruda bununla ilgili hiçbir bilgi geçmezken element uydurmanın anlamı yok. Yazılan kod her seferinde farklı 5 adet reel sayı oluşturuyor. Soruda istenilen de her seferinde 5 farklı reel sayı. Gerisi matematiksel işlemler için yazılacak olan kodlar.
 
5 tane reel sayı ile hesaplama yapılırken, sonsuz aralıktan mutlaka 5 tane reel sayı seçmek gerekir. Yazılan kod da aynen bunu yapıyor. İster sınırla ister sınırlama, soruda bununla ilgili hiçbir bilgi geçmezken element uydurmanın anlamı yok. Yazılan kod her seferinde farklı 5 adet reel sayı oluşturuyor. Soruda istenilen de her seferinde 5 farklı reel sayı. Gerisi matematiksel işlemler için yazılacak olan kodlar.

Allah rızası için konunun 3. ve 5. cevaplarına bak.
 
C++:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <tuple>

using namespace std;

tuple<float, float, float, float, float> hesapla(float arr[], int size);

int main()
{
    srand(time(NULL));
    float arr [5];
    int size = sizeof(arr)/sizeof(arr[0]);
    
    for (int i = 0; i < size; i++) {;
        arr[i] = ((float)rand() / (float)RAND_MAX)*100;
    }
    
    auto [aritmetik, harmonik, geometrik, varyans, standart_sapma] = hesapla(arr, size);
    for (auto& num : arr) {
        cout<<num<<endl;
    }
    
    cout << "aritmetik ortalama: " << aritmetik << endl;
    cout << "harmonik ortalama: " << harmonik << endl;
    cout << "geometrik ortalama: " << geometrik << endl;
    cout << "varyans: " << varyans << endl;
    cout << "standart sapma: " << standart_sapma << endl;
    return 0;
}

tuple<float, float, float, float, float> hesapla(float arr[], int size)
{
    float aritmetik = 0, harmonik = 0, geometrik = 1, varyans = 0, standart_sapma = 0;

    for(int i = 0; i < size; i++) {
        aritmetik += arr[i];
        harmonik += (1 / arr[i]);
        geometrik *= arr[i];
    }
    
    aritmetik /= size;
    harmonik = size / harmonik;
    geometrik = pow(geometrik, (float)1 / size);
    
    for(int i = 0; i < size; i++) {
        varyans += (arr[i] - aritmetik) * (arr[i] - aritmetik);
    }
    
    varyans /= size;
    standart_sapma = sqrt(varyans);
    
    return make_tuple(aritmetik, harmonik, geometrik, varyans, standart_sapma);
}
 
Çözüm
Srand ve rand fonksiyonlarını araştırabilirsin C programlada random sayı seçmeye yarıyordu. C++ içinde çalışıyor olabilir.

C++:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <tuple>

using namespace std;

tuple<float, float, float, float, float> hesapla(float arr[], int size);

int main()
{
    srand(time(NULL));
    float arr [5];
    int size = sizeof(arr)/sizeof(arr[0]);
  
    for (int i = 0; i < size; i++) {;
        arr[i] = ((float)rand() / (float)RAND_MAX)*100;
    }
  
    auto [aritmetik, harmonik, geometrik, varyans, standart_sapma] = hesapla(arr, size);
    for (auto& num : arr) {
        cout<<num<<endl;
    }
  
    cout << "aritmetik ortalama: " << aritmetik << endl;
    cout << "harmonik ortalama: " << harmonik << endl;
    cout << "geometrik ortalama: " << geometrik << endl;
    cout << "varyans: " << varyans << endl;
    cout << "standart sapma: " << standart_sapma << endl;
    return 0;
}

tuple<float, float, float, float, float> hesapla(float arr[], int size)
{
    float aritmetik = 0, harmonik = 0, geometrik = 1, varyans = 0, standart_sapma = 0;

    for(int i = 0; i < size; i++) {
        aritmetik += arr[i];
        harmonik += (1 / arr[i]);
        geometrik *= arr[i];
    }
  
    aritmetik /= size;
    harmonik = size / harmonik;
    geometrik = pow(geometrik, (float)1 / size);
  
    for(int i = 0; i < size; i++) {
        varyans += (arr[i] - aritmetik) * (arr[i] - aritmetik);
    }
  
    varyans /= size;
    standart_sapma = sqrt(varyans);
  
    return make_tuple(aritmetik, harmonik, geometrik, varyans, standart_sapma);
}
Yardımcı olduğunuz için çok teşekkür ederim c++ da denedim kodları çalışıyor. Vakit ayıran herkesin emeğine sağlık konu çözülmüştür.
 
Son düzenleyen: Moderatör:

Yeni konular

Geri
Yukarı