Şimdi Ara

Sayıyı rakamlara ayırmak ?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
11
Cevap
0
Favori
12.242
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Elimizde 10011101 sayısı olsun. Bu sayının sağdan 4. basamağındaki rakamı ekrana yazdırmak istiyorum, binler basamağındaki sayıyı yani. Nasıl yapabilirim ? (C programlama dili ile)



    _____________________________
  • int sayi = 10011101;
    while(sayi)
    {
    int kalan = sayi % 10;
    sayi = sayi / 10;
    printf("%d ", kalan);
    }

    bu kafa ile bu kadar cevap... çalışır umaırm..
    _____________________________
    Yanmışsam, külümden doğacak bir hisar vardır.
  • @qamyoncu, teşekkürler. Bu şekilde tüm rakamları ayırabiliyoruz. Ama mesela sadece sağdan 4. rakamı ekrana basmam gerekiyor. Bunu nasıl yapabilirim ?
    _____________________________
  • quote:

    Orijinalden alıntı: SLiM_BoY

    @qamyoncu, teşekkürler. Bu şekilde tüm rakamları ayırabiliyoruz. Ama mesela sadece sağdan 4. rakamı ekrana basmam gerekiyor. Bunu nasıl yapabilirim ?

     
    #include <stdio.h>
    #include "string.h"

    int main (int argc, const char * argv[])
    {
    int i = 10011101;
    char buffer[9];
    char* output;
    sprintf(buffer, "%d",i);
    output = buffer;
    char *singleBit;
    singleBit = strndup(output+4,1);
    printf("%s", singleBit);
    return 0;
    }


    Çok kötü kodlama yaptım ama şöyleki girilen integer sayısına göre buffer size ve strndup() function için index ler farklılık gösterebilir. Yani bu kod tamamen 8 haneli bir sayının binler basamığını bulmaya yönelik. 10 haneli bir rakam girilirse mesela buffer ın size ı ve strndup() için indexleri değiştirmek gerekli.
    _____________________________




  • @leventg, teşekkür ederim. Lakin 'strndup' undeclared (first use this function) hatası verdi Dev-C++.

    Daha kolay yoldan, int sayi; değişkenini diziye atayıp dizinin tek bir karakterini yazdıramaz mıyız acaba ?
    _____________________________
  • quote:

    Orijinalden alıntı: SLiM_BoY

    Elimizde 10011101 sayısı olsun. Bu sayının sağdan 4. basamağındaki rakamı ekrana yazdırmak istiyorum, binler basamağındaki sayıyı yani. Nasıl yapabilirim ? (C programlama dili ile)

    Bu sayı ikilik mi onluk mu?
  • İkilik de olur, onluk da. Bir önceki bellek adres biti soruma farklı bir mantık üretmeye çalışıyorum. Bellekteki değeri onluk tabanda alıp ikilik tabana çevirip daha sonra 4. basamağındaki sayıya ulaşmak istiyorum.
    _____________________________
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • quote:

    Orijinalden alıntı: SLiM_BoY

    @leventg, teşekkür ederim. Lakin 'strndup' undeclared (first use this function) hatası verdi Dev-C++.

    Daha kolay yoldan, int sayi; değişkenini diziye atayıp dizinin tek bir karakterini yazdıramaz mıyız acaba ?

    Hatanın sebebi belki şurdan kaynaklanıyor olabilir:

    #include <stdio.h>
    #include "string.h"

    Bunlar yazılmadıysa hata veriyor olabilir.

    Diğer türlü yapamayız mağlesef çünkü;

    int x = 123456; // olsun

    int y[6] = x; // böyle bir şey yapmamız mümkün değil

    int y[6];
    int y[0] = i; // böyle yaparsakta, gene sayıyı bütün şekilde almış olacağız ( 123456 diye )

    Sayıyı tek tek bölmemiz lazım. Ben string e atayarak bölmeye çalıştım, başka türlü yollarıda olabilir tabi.
    _____________________________




  • quote:

    Orijinalden alıntı: SLiM_BoY

    İkilik de olur, onluk da. Bir önceki bellek adres biti soruma farklı bir mantık üretmeye çalışıyorum. Bellekteki değeri onluk tabanda alıp ikilik tabana çevirip daha sonra 4. basamağındaki sayıya ulaşmak istiyorum.

    İyide ikilik bir sayının 4. basamağı ile onluk bir sayının 4. basamağı birbirinden farklı.Aslında cevabı belli, onluk olmalı. Ama senin fikir tutmaz gibi.

    qamyoncu cevabı vermiş, ona 1-2 satır daha ekleyerek istediğin sonucu alabilirsin. Biraz uğraşsan iyi olur.
  • Cevaplar için çok teşekkür ederim arkadaşlar.
    _____________________________
  • 4 bit sağa kaydırıp 1 ile AND işlemi uygulayabilirsin.

    (0x9D >> 4) & 1


    veya doğrudan 4.biti al.

    ( ( (0x9D) & 8) == 8) //8= (2^(4-1))
    _____________________________
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.