C++ kullanıcıdan alınan rakamdan kaç tane içerdiğini bulan program

Ozkang

Hectopat
Katılım
19 Haziran 2015
Mesajlar
23
Herkese iyi forumlar diliyorum. Ders notlarına bile bakmama rağmen bu soruyla alakalı hiçbir bilgi bulamadım.

Aşağıda ki sorunun kod satırını yazabilecek var mı? Lütfen kendin yap, kendin öğren gibi şeyler yazmayın zaten yeterince araştırdım bulamadığım için buraya yazıyorum umarım bilgili arkadaşlar yardımcı olur.

Soru şu şekilde;

Kullanıcıdan bir rakam alan ve bu rakamın öğrenci numaranızda kaç tane olduğunu bulan programı yazınız.

Öğrenci numarası: 164002020 olsun, kullanıcı da 2 girmiş olsun. Ekrana "2 adet 2 var" yazacaksınız.

Not: Her bir adımda öğrenci numarasını %10 yaparak son rakamını alabilirsiniz. 0 oluncaya kadar da 10'a bölerseniz, tüm rakamlarını elde edebilirsiniz.
 

LayThese

Kilopat
Katılım
2 Haziran 2016
Mesajlar
2.022
Çözümler
25
Verilen öğrenci numarasını bir loop içinde ayrıştırmanız gerekiyor bunun için % ve / operatörlerini kullanmanız gerekecek. Ardından bütün rakamlar için ilgili rakamın ne kadar geçtiğini az önce bahsettiğim döngü içinde buldukça arttırmanız gerekli. Ondan sonrası basit kullanıcıdan rakamı alıp switch-case ya da if-else döngüsünde verilen rakamın sayacını döndüreceksiniz.

Kod berbat oldu ama çalışıyor. Sadece Java , Python yazınca C++ kolay unutuluyor.

C++:
#include <iostream>

using namespace std;

int main()
{
    int numara = 164002020;

    int sifir = 0;
    int birler = 0;
    int ikiler = 0;
    int ucler = 0;
    int dortler = 0;
    int besler = 0;
    int altilar = 0;
    int yediler = 0;
    int sekizler = 0;
    int dokuzlar = 0;
    int scanner;

    while(numara > 0)
    {
        switch(numara%10)
        {
        case 0:
            sifir++;
            break;
        case 1:
            birler++;
            break;
        case 2:
            ikiler++;
            break;
        case 3:
            ucler++;
            break;
        case 4:
            dortler++;
            break;
        case 5:
            besler++;
            break;
        case 6:
            altilar++;
            break;
        case 7:
            yediler++;
            break;
        case 8:
            sekizler++;
            break;
        case 9:
            dokuzlar++;
            break;
        }
        numara = (numara / 10);
    }

    cout << "Bir rakam giriniz: ";
    cin >> scanner;

   switch(scanner)
        {
        case 0:
            cout << scanner << " rakamindan " << sifir << " kadar bulundu.";
            exit(0);
        case 1:
            cout << scanner << " rakamindan " << birler << " kadar bulundu.";
            exit(0);
        case 2:
            cout << scanner << " rakamindan " << ikiler << " kadar bulundu.";
            exit(0);
        case 3:
            cout << scanner << " rakamindan " << ucler << " kadar bulundu.";
            exit(0);
        case 4:
            cout << scanner << " rakamindan " << dortler << " kadar bulundu.";
            exit(0);
        case 5:
            cout << scanner << " rakamindan " << besler << " kadar bulundu.";
            exit(0);
        case 6:
            cout << scanner << " rakamindan " << altilar << " kadar bulundu.";
            exit(0);
        case 7:
            cout << scanner << " rakamindan " << yediler << " kadar bulundu.";
            exit(0);
        case 8:
            cout << scanner << " rakamindan " << sekizler << " kadar bulundu.";
            exit(0);
        case 9:
            cout << scanner << " rakamindan " << dokuzlar << " kadar bulundu.";
            exit(0);
        }
}
 
Son düzenleme:

Whakii

Femtopat
Katılım
6 Aralık 2020
Mesajlar
26
Soruda cevabı vermiş zaten, burada sıfırdan destek almaktansa, kodunu bir oluştur, ondan sonra destek iste.
Sonuçta bunu kopyala yapıştır olarak yapmak sana bir şey katmayacak.

Mantık olarak şöyle ilerleyebilirsin;

Ekranda girilen sayı 0 olsun;

İnt girilenRakam = 0
İnt sayac = 0
İnt OgrenciNo= 164002020

Döngü
{
-> Rakam = OgrenciNo% 10
Rakam = 0 oldu 1. döngü için
-> İf ( rakam == girilenRakam ) sayac++
-> OgrenciNo = 164002020 / 10
OgrenciNo = 16400202 oldu, döngü başına geri dön
}

Döngü bitince de Sayac'ı ekrana yazarsın
 
Son düzenleme:

Jelly Beanci

Kilopat
Katılım
2 Mart 2014
Mesajlar
4.253
Çözümler
62
Yer
Master Boot Record
Çok daha basiti var.

Numarayı String'e dönüştürün. Sonrasında linear bir arama yaparak içerisinde istenilen sayının charını arayın.

C++:
int countOccurrence(string input, string search)
{
    int count = 0;
    for(int i = 0; i < input.length(); i++)
        count += (input[i] == search[0] ? 1 : 0);
    return count;
}
 
Son düzenleme:

Yeni konular

Yukarı