Çözüldü Üstel ve Ondalıklı Sayılar - Basamak Analizi - Programlama

Konusu 'Rasyonel ve Ondalıklı Sayılar, Üslü Sayılar, Köklü Sayılar, Mutlak Değer, Taban Aritmetiği' forumundadır ve Honore tarafından 30 Haziran 2026 18:59 başlatılmıştır.

Yüklüyor...
  1. Honore

    Honore Yönetici Yönetici

    Mesajlar:
    11.220
    Beğenileri:
    652
    Cinsiyet:
    Bay
    Meslek:
    Müh. (Elk./Bilg.)
    GRE Hazırlık sorularından birinin fen lisesi için klasik sınav uyarlaması:

    1 / (2^11·5^17) sayısının ondalıklı formda yazılması halinde sıfırdan farklı basamakların sayısının kaç olduğunu cebirsel çözümle bulunuz ve bildiğiniz bir programlama dilinde sonucu veren programı yazınız.

    2^(-11)·5^(-17) şeklinde yazılıp 2^17·5^17 ile çarpılıp bölününce sonuç 2^6·1·10^(-17) = 64·10^(-17) olduğundan sıfırdan farklı basamaklar 6 ve 4 olarak iki tanedir.

    Fortran Çözümü:
    [​IMG]
    https://i.ibb.co/h5bN7MC/nonzero-digits-Fortran.png

    Program:
    Kod:
    ! Write a Fortran program to find and print the number of nonzero digits
    ! of the exponential number 2**(-11) * 5**(-17) after converting it
    ! to a terminating decimal number.
    !
    ! Original question:
    ! https://images.shiksha.com/mediadata/pdf/1634022775phpLJ12JF.pdf
    ! Page 29, Question 16 with quite a long solution
    !
    ! Program written by the AI at
    ! https://www.tutorialspoint.com/compilers/online-fortran-compiler.htm
    ! and slightly modified by me.
    !
    ! Quick algebra solution: Multiply and divide by the number 2^17·5^17
    ! The result is 2^6·1·10^(-17) = 64·10^(-17), so the nonzero digits are
    ! 8 and 4, so the the number of the digits that are not zero is 2.
    
    program nonzero_digits
    implicit none
    integer, parameter :: dp = selected_real_kind(15)
    integer :: a, b, k, i
    integer(kind=8) :: n = 1_8, digit, count = 0
    
    ! The number is 2.0**(-11) * 5.0**(-17) = 2^a * 5^b
      a = -11
      b = -17
    
    ! To convert to a terminating decimal, multiply by 10^k so that
    ! both exponents become non-negative (k = max(-a, -b)).
    k = max(-a, -b)
    
    ! N = 2^(a+k) * 5^(b+k)  is an integer; the number = N / 10^k
    do i = 1, a + k
       n = n * 2_8
    end do
     
    do i = 1, b + k
       n = n * 5_8
    end do
    
    write(6, 10)'The Number: 2^(-11) * 5^(-17) = N / 10^k'
    write(6, 10)'k = ', k
    write(6, 10)'N = ', n
     
    ! The decimal expansion is the digits of N padded with leading zeros
    ! to k decimal places. Count nonzero digits of N.
    do while (n > 0)
       digit = mod(n, 10_8)
       if (digit /= 0) count = count + 1
       n = n / 10_8
    end do
    
    ! Edge case: if N == 0, the number is 0 (one nonzero digit? conventionally 0)
    if (count == 0) count = 0
    
    write(6, 10)'Number of nonzero digits = ', count
    
    10 format(/,2x,a,i3)
    
    end program nonzero_digits
    Sorunun Aslı ve Çözümü:
    [​IMG]
    https://i.ibb.co/HLQTLMjT/nonzero-digits.png
    https://images.shiksha.com/mediadata/pdf/1634022775phpLJ12JF.pdf
    Sayfa 29 - 30, Soru 16
     
    : Fortran

  2. Benzer Konular: Üstel Ondalıklı
    Forum Başlık Tarih
    Ivır Zıvır Sorular - Sohbet (Trivial Questions - Chat) İkinci Derece Denklemde Yarım Formül - Üstel ve Ondalıklı Sayılar 14 Aralık 2024
    FİZİK Sıvılarda Boşalma Oranı - Dairede Alan - Hız - Üstel ve Ondalıklı Sayılar 15 Ocak 2022
    Trigonometri,Karmaşık Sayılar,Logaritma,Parabol Karmaşık Sayılarda Esas Argüman (Principal Argument) ve Euler Notasyonu - Üstel Sayılar 16 Haziran 2026
    Limit ve Süreklilik,Türev,İntegral Cebirsel İntegralde Fantezi Trigonometrik Dönüşüm - Üstel Sayılar 9 Haziran 2026
    FİZİK Enerji Dönüşümü ve Elektriksel Güç - Üstel Sayılar 5 Haziran 2026

Sayfayı Paylaş