Şimdi Ara

C'de rakamlarının eşliğini kontrol etme

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
8
Cevap
0
Favori
377
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 100'den başlayarak kullanıcının girdiği sayıya kadar olan aralıkta tersi alındığında kendisine eşit olan sayıları yazdırmam lazım.Mesela 121 gibi.Ama 777 gibi tüm rakamları aynı olan sayılar olmamalı.Sadece bu kısımda takıldım.Dizinin içine atmayı denedim ama kullanıcının kaç basamaklı bir sayı gireceğini bilmiyorum ve 4 basamaklı bir sayı giriniz tarzı bir komut veremem.Neler yapılabilir?



  • Wepawet hocam yardım edermisiniz aynı sorun bende de var
  • Örnek olarak şöyle mi? 190 girdim.

    output:
    101, 121, 131, 141, 151, 161, 171, 181

    Asıl sıkıntınız basamak sayısı arttığında galiba. Önce bundan emin olmak için soruyorum da.
  • Requizm kullanıcısına yanıt
    Evet hocam.Kullanıcı giricek ve rakamları aynı olanları yazdırmıcak.111,222,....,1111 gibi eğer kullanıcı 1111'den büyük değer girerse.
  • quote:

    Orijinalden alıntı: arkasokaklar12634

    Evet hocam.Kullanıcı giricek ve rakamları aynı olanları yazdırmıcak.111,222,....,1111 gibi eğer kullanıcı 1111'den büyük değer girerse.
    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <functional>

    int main(int argc, char** argv)
    {
    int n, sayi, reversedNumber, remainder, numberofdigits = 0;
    std::vector<int> dizi;

    do
    {
    std::cout << "Sayi giriniz: " << std::endl;
    std::cin >> n;
    } while (n <= 100);

    for (int i = 101; i < n; i++)
    {
    //rakamları kontrol ediyoruz
    int number = i;
    std::vector<int> digits;
    while (number)
    {
    int digit = number % 10;
    digits.push_back(digit);
    number /= 10;
    }

    if (std::all_of(digits.begin() + 1, digits.end(), std::bind(std::equal_to<int>(),
    std::placeholders::_1, digits.front()))) {
    continue; //tüm rakamlar aynı!
    }

    //tersini alıyoruz ve kontrol ediyoruz
    sayi = i;
    reversedNumber = 0;

    while (sayi != 0)
    {
    remainder = sayi % 10;
    reversedNumber = reversedNumber * 10 + remainder;
    sayi /= 10;
    }

    if (reversedNumber == i)
    dizi.push_back(i); //tersi ile aynı!
    }

    for (auto &b : dizi) {
    std::cout << b << std::endl;
    }

    return 0;
    }



    < Bu mesaj bu kişi tarafından değiştirildi requizm -- 8 Aralık 2018; 16:37:49 >




  • C/C++ değil fakat Lisp ile gece 12'den sonra birşeyler yaptım. 100'den büyük ve rakamları eş sayıları basan "bul100" adında bir fonksiyon:

    C'de rakamlarının eşliğini kontrol etme


    200, 1000, 10000 ve 100000 gibi çeşitli sayılarla denedim çalıştı. Kodu temel Lisp ile yazdığım için biraz uzun oldu; yardımcı fonksiyon kullansam cok daha kısa yazabilirdim. Ve kodlara comment ekleyemedim fakat Lisp ifadelerden oluştuğu için kod kendi kendini açıklıyor olmalı :)
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.