Şimdi Ara

Bir C++ Sorusu

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
7
Cevap
0
Favori
690
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Soru kısa şöyle;

    Soru bizden bir sayı istiyor biz bu rakamın her bir basamağına bakıp eğer içerisinde 2 varsa o basamağı değiştirmeden 2 olarak bırakıcaz olmayanları 0 a çeviricez.
    Örn;
    Girilen sayı=21435

    Programın vericeği sayı=20000

    veya

    Girilen sayı=820


    Programın vericeği sayı=20.


    biz programı yazarken belli bir basamak sayısı için yer ayırıcaz mesela array[5] olabilir ondan sonra her basamağın 2 olup olmadığını karşılaştırıcaz ama işte ben o rakamın basamaklarını tek tek karşılaştırma olayını yapamadım.( Zaten asıl mesele de bu sanırım )

    Yardımcı olursanız çok sevinirim...

    Not:Soru fonksiyon olarak yazılacak.



    < Bu mesaj bu kişi tarafından değiştirildi xlor -- 12 Ocak 2009; 1:15:58 >



  • C++ bilmiyorum ama sayıyı basamaklarına ayırmak işinize yararsa yardımcı olabilirim.

    Düzenleme, şöyle bir C kodu yazdım. Belki bundan faydalanabilirsiniz.

    Biraz uzun yoldan oldu tabi, şu anki bilgim ile ancak bu kadar oluyor.

     
    #include <stdio.h>
    #include <conio.h>

    int main ()
    {
    int m;
    int bsmk1,bsmk2,bsmk3,bsmk4; //birler, onlar, yuzler ve binler basamaginin tanitilmasi

    printf("Bir sayi giriniz:\n");
    scanf("%d",&m);

    if(m>9 && m<100){//sayinin 2 basamakli olmasi durumu
    bsmk2=m/10;
    bsmk1=m-(bsmk2*10);
    if(bsmk1!=2)
    bsmk1=0;
    if(bsmk2!=2)
    bsmk2=0;
    printf("%d%d",bsmk2,bsmk1);
    }//basamak esitlikleri ile ilgili if kontrolunun sonu

    if(m>99 && m<1000){ //sayinin 3 basamakli olmasi durumu
    bsmk3=m/100;
    bsmk2=(m-(bsmk3*100))/10;
    bsmk1=m%10;
    if(bsmk1!=2)
    bsmk1=0;
    if(bsmk2!=2)
    bsmk2=0;
    if(bsmk3!=2)
    bsmk3=0;
    printf("%d%d%d",bsmk3,bsmk2,bsmk1);
    }//basamak esitlikleri ile ilgili if kontrolunun sonu


    if(m>999 && m<10000){//sayinin 4 basamakli olmasi durumu
    bsmk4=m/1000;
    bsmk3=(m-bsmk4*1000)/100;
    bsmk2=(m-(bsmk4*1000)-(bsmk3*100))/10;
    bsmk1=m%10;
    if(bsmk1!=2)
    bsmk1=0;
    if(bsmk2!=2)
    bsmk2=0;
    if(bsmk3!=2)
    bsmk3=0;
    if(bsmk4!=2)
    bsmk4=0;
    printf("%d%d%d%d",bsmk4,bsmk3,bsmk2,bsmk1);
    }//basamak esitlikleri ile ilgili if kontrolunun sonu
    getch();
    return 0;
    }


    C derleyiciniz yoksa derlenmiş hali burada.

    http://200kirkbir.googlepages.com/2--0.exe



    < Bu mesaj bu kişi tarafından değiştirildi 241 -- 12 Ocak 2009; 1:41:04 >




  • quote:

    Orjinalden alıntı: 241

    C++ bilmiyorum ama sayıyı basamaklarına ayırmak işinize yararsa yardımcı olabilirim.

    Düzenleme, şöyle bir C kodu yazdım. Belki bundan faydalanabilirsiniz.

    Biraz uzun yoldan oldu tabi, şu anki bilgim ile ancak bu kadar oluyor.

     
    #include <stdio.h>
    #include <conio.h>

    int main ()
    {
    int m;
    int bsmk1,bsmk2,bsmk3,bsmk4; //birler, onlar, yuzler ve binler basamaginin tanitilmasi

    printf("Bir sayi giriniz:\n");
    scanf("%d",&m);

    if(m>9 && m<100){//sayinin 2 basamakli olmasi durumu
    bsmk2=m/10;
    bsmk1=m-(bsmk2*10);
    if(bsmk1!=2)
    bsmk1=0;
    if(bsmk2!=2)
    bsmk2=0;
    printf("%d%d",bsmk2,bsmk1);
    }//basamak esitlikleri ile ilgili if kontrolunun sonu

    if(m>99 && m<1000){ //sayinin 3 basamakli olmasi durumu
    bsmk3=m/100;
    bsmk2=(m-(bsmk3*100))/10;
    bsmk1=m%10;
    if(bsmk1!=2)
    bsmk1=0;
    if(bsmk2!=2)
    bsmk2=0;
    if(bsmk3!=2)
    bsmk3=0;
    printf("%d%d%d",bsmk3,bsmk2,bsmk1);
    }//basamak esitlikleri ile ilgili if kontrolunun sonu


    if(m>999 && m<10000){//sayinin 4 basamakli olmasi durumu
    bsmk4=m/1000;
    bsmk3=(m-bsmk4*1000)/100;
    bsmk2=(m-(bsmk4*1000)-(bsmk3*100))/10;
    bsmk1=m%10;
    if(bsmk1!=2)
    bsmk1=0;
    if(bsmk2!=2)
    bsmk2=0;
    if(bsmk3!=2)
    bsmk3=0;
    if(bsmk4!=2)
    bsmk4=0;
    printf("%d%d%d%d",bsmk4,bsmk3,bsmk2,bsmk1);
    }//basamak esitlikleri ile ilgili if kontrolunun sonu
    getch();
    return 0;
    }


    C derleyiciniz yoksa derlenmiş hali burada.

    http://200kirkbir.googlepages.com/2--0.exe



    Çok teşekkürler bir kaç ufak düzeltmeyle c++ kodu haline geldi.




  • 5 basamak için de lazımsa ekleme yapabilirim. Ama mantığını anladıysanız önce siz deneyin, bir sorun olursa yardımcı olayım. Amacımız verilen projeyi yapmak değil zaten, projeyi yaparken kendimizi biraz daha geliştirmek.
  • .



    < Bu mesaj bu kişi tarafından değiştirildi xlor -- 12 Ocak 2009; 3:20:46 >
  • tüm sayılar için çalışır :

    #include <string> 
    #include <iostream>
    #include <cmath>
    using namespace std;

    int to_int(string st) {
    int sonuc=0;
    for(int k=st.length()-1 ; k>-1 ; k--)
    sonuc+= pow(10,k)*(st[st.length()-k-1]-'0');

    return sonuc;

    }

    int cevir(string st){
    for(int k=0; k<st.length() ; k++)
    if(st[k] != '2') st[k]='0';

    return to_int(st);

    }


    int main()
    {
    string st;
    cin>>st;
    cout<<cevir(st)<<endl;

    return 0;
    }
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.