Şimdi Ara

C++ da sayı okuma

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
7
Cevap
0
Favori
703
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • daha 4-5 gündür çalışıyorum. bildiklerimle kasarak böle bi program yazdım. sizden ricam yaptığım hamallıkları düzeltebilir misiniz. şimdiden teşekkürler.
    #include <iostream> // cin,cout,endl 
    #include <stdlib.h> // EXIT_SUCCESS
    #include <stdio.h> // gets
    #include <string.h> // strlen kelime uzunluğu

    using namespace std;

    #define MAXLENGTH 15

    int main(void)
    {
    char sentence[MAXLENGTH]; //15 elemanlı bir dizi yarattım.
    int length, i;
    char tmp;
    cout << "Bir Sayi Giriniz(0-1000000000000)";
    gets(sentence); //Sayıyı girmek için bastığım her rakamı dizinin 1 elemanı olarak aldı
    length = strlen(sentence); //Dizinin uzunluğu

    for (i = 0; i < length / 2; i++) //Bu for döngüsünü diziyi ters çevirmek için kullandım. Böylece son eleman ilk, ilk eleman son oldu.
    { //Sonradan yaptığım bir modifikasyondu. Niçin yaptığımı hatırlamıyorum.
    tmp = sentence[i];
    sentence[i] = sentence[length - 1 - i];
    sentence[length - 1 - i] = tmp;
    }

    if(length!=0) //Eğer bir sayı girdiysem yani dizi oluştuysa if e giriyor.
    {
    switch(sentence[12]) //Diziyi ters çevirdiğim için girdiğim sayının ilk en soldaki rakamı dizinin en son rakamı.
    {
    case 49: cout << "Bir "; break; //Eğer sayının en ilk rakamı 1 ise Bir yazması gerekiyor.
    case 50: cout << "Iki "; break; //Ama case 1 veya case 2 yazdığımda olmuyor. cout<<sentence[1] deyince 49 veriyor.
    case 51: cout << "Uc "; break; //!!!!En büyük sorunum da bu.!!!!
    case 52: cout << "Dort "; break;
    case 53: cout << "Bes "; break;
    case 54: cout << "Alti "; break;
    case 55: cout << "Yedi "; break;
    case 56: cout << "Sekiz "; break;
    case 57: cout << "Dokuz "; break;
    default: break;
    }
    if (sentence[12]=='1'||sentence[12]=='2'||sentence[12]=='3'||sentence[12]=='4'||sentence[12]=='5'||sentence[12]=='6'||sentence[12]=='7'||sentence[12]=='8'||sentence[12]=='9') cout <<" trilyon ";

    switch(sentence[11])
    {
    case 49: cout << " yuz "; break;
    case 50: cout << " iki yuz "; break;
    case 51: cout << " uc yuz "; break;
    case 52: cout << " dort yuz "; break;
    case 53: cout << " bes yuz "; break;
    case 54: cout << " alti yuz "; break;
    case 55: cout << " yedi yuz "; break;
    case 56: cout << " sekiz yuz "; break;
    case 57: cout << " dokuz yuz "; break;
    default: break;
    }
    switch(sentence[10])
    {
    case 49: cout << " on "; break;
    case 50: cout << " yirmi "; break;
    case 51: cout << " otuz "; break;
    case 52: cout << " kirk "; break;
    case 53: cout << " elli "; break;
    case 54: cout << " altmis "; break;
    case 55: cout << " yetmis "; break;
    case 56: cout << " seksen "; break;
    case 57: cout << " doksan "; break;
    default: break;

    }
    switch(sentence[9])
    {
    case 49: cout << "bir "; break;
    case 50: cout << "iki "; break;
    case 51: cout << "uc "; break;
    case 52: cout << "dort "; break;
    case 53: cout << "bes "; break;
    case 54: cout << "alti "; break;
    case 55: cout << "yedi "; break;
    case 56: cout << "sekiz "; break;
    case 57: cout << "dokuz "; break;
    default: break;

    }//if cümlelerini sadeleştirecek bi yöntem bulamadım. bir for döngüsü bulabilir miyiz??
    if (sentence[11]=='1'||sentence[11]=='2'||sentence[11]=='3'||sentence[11]=='4'||sentence[11]=='5'||sentence[11]=='6'||sentence[11]=='7'||sentence[11]=='8'||sentence[11]=='9'||
    sentence[10]=='1'||sentence[10]=='2'||sentence[10]=='3'||sentence[10]=='4'||sentence[10]=='5'||sentence[10]=='6'||sentence[10]=='7'||sentence[10]=='8'||sentence[10]=='9'||
    sentence[9]=='1'||sentence[9]=='2'||sentence[9]=='3'||sentence[9]=='4'||sentence[9]=='5'||sentence[9]=='6'||sentence[9]=='7'||sentence[9]=='8'||sentence[9]=='9')cout<<" milyar ";

    switch(sentence[8])
    {
    case 49: cout << " yuz "; break;
    case 50: cout << " iki yuz "; break;
    case 51: cout << " uc yuz "; break;
    case 52: cout << " dort yuz "; break;
    case 53: cout << " bes yuz "; break;
    case 54: cout << " alti yuz "; break;
    case 55: cout << " yedi yuz "; break;
    case 56: cout << " sekiz yuz "; break;
    case 57: cout << " dokuz yuz "; break;
    default: break;
    }
    switch(sentence[7])
    {
    case 49: cout << " on "; break;
    case 50: cout << " yirmi "; break;
    case 51: cout << " otuz "; break;
    case 52: cout << " kirk "; break;
    case 53: cout << " elli "; break;
    case 54: cout << " altmis "; break;
    case 55: cout << " yetmis "; break;
    case 56: cout << " seksen "; break;
    case 57: cout << " doksan "; break;
    default: break;

    }
    switch(sentence[6])
    {
    case 49: cout << "bir "; break;
    case 50: cout << "iki "; break;
    case 51: cout << "uc "; break;
    case 52: cout << "dort "; break;
    case 53: cout << "bes "; break;
    case 54: cout << "alti "; break;
    case 55: cout << "yedi "; break;
    case 56: cout << "sekiz "; break;
    case 57: cout << "dokuz "; break;
    default: break;

    }
    if (sentence[8]=='1'||sentence[8]=='2'||sentence[8]=='3'||sentence[8]=='4'||sentence[8]=='5'||sentence[8]=='6'||sentence[8]=='7'||sentence[8]=='8'||sentence[8]=='9'||
    sentence[7]=='1'||sentence[7]=='2'||sentence[7]=='3'||sentence[7]=='4'||sentence[7]=='5'||sentence[7]=='6'||sentence[7]=='7'||sentence[7]=='8'||sentence[7]=='9'||
    sentence[6]=='1'||sentence[6]=='2'||sentence[6]=='3'||sentence[6]=='4'||sentence[6]=='5'||sentence[6]=='6'||sentence[6]=='7'||sentence[6]=='8'||sentence[6]=='9')cout<<" milyon ";

    switch(sentence[5])
    {
    case 49: cout << " yuz "; break;
    case 50: cout << " iki yuz "; break;
    case 51: cout << " uc yuz "; break;
    case 52: cout << " dort yuz "; break;
    case 53: cout << " bes yuz "; break;
    case 54: cout << " alti yuz "; break;
    case 55: cout << " yedi yuz "; break;
    case 56: cout << " sekiz yuz "; break;
    case 57: cout << " dokuz yuz "; break;
    default: break;
    }
    switch(sentence[4])
    {
    case 49: cout << " on "; break;
    case 50: cout << " yirmi "; break;
    case 51: cout << " otuz "; break;
    case 52: cout << " kirk "; break;
    case 53: cout << " elli "; break;
    case 54: cout << " altmis "; break;
    case 55: cout << " yetmis "; break;
    case 56: cout << " seksen "; break;
    case 57: cout << " doksan "; break;
    default: break;

    }
    switch(sentence[3])
    {
    case 49: cout << "bir "; break;
    case 50: cout << "iki "; break;
    case 51: cout << "uc "; break;
    case 52: cout << "dort "; break;
    case 53: cout << "bes "; break;
    case 54: cout << "alti "; break;
    case 55: cout << "yedi "; break;
    case 56: cout << "sekiz "; break;
    case 57: cout << "dokuz "; break;
    default: break;

    }
    if (sentence[5]=='1'||sentence[5]=='2'||sentence[5]=='3'||sentence[5]=='4'||sentence[5]=='5'||sentence[5]=='6'||sentence[5]=='7'||sentence[5]=='8'||sentence[5]=='9'||
    sentence[4]=='1'||sentence[4]=='2'||sentence[4]=='3'||sentence[4]=='4'||sentence[4]=='5'||sentence[4]=='6'||sentence[4]=='7'||sentence[4]=='8'||sentence[4]=='9'||
    sentence[3]=='1'||sentence[3]=='2'||sentence[3]=='3'||sentence[3]=='4'||sentence[3]=='5'||sentence[3]=='6'||sentence[3]=='7'||sentence[3]=='8'||sentence[3]=='9')cout<<" bin ";
    switch(sentence[2])
    {
    case 49: cout << " yuz "; break;
    case 50: cout << " iki yuz "; break;
    case 51: cout << " uc yuz "; break;
    case 52: cout << " dort yuz "; break;
    case 53: cout << " bes yuz "; break;
    case 54: cout << " alti yuz "; break;
    case 55: cout << " yedi yuz "; break;
    case 56: cout << " sekiz yuz "; break;
    case 57: cout << " dokuz yuz "; break;
    default: break;
    }
    switch(sentence[1])
    {
    case 49: cout << " on "; break;
    case 50: cout << " yirmi "; break;
    case 51: cout << " otuz "; break;
    case 52: cout << " kirk "; break;
    case 53: cout << " elli "; break;
    case 54: cout << " altmis "; break;
    case 55: cout << " yetmis "; break;
    case 56: cout << " seksen "; break;
    case 57: cout << " doksan "; break;
    default: break;

    }
    switch(sentence[0])
    {
    case 49: cout << "bir "; break;
    case 50: cout << "iki "; break;
    case 51: cout << "uc "; break;
    case 52: cout << "dort "; break;
    case 53: cout << "bes "; break;
    case 54: cout << "alti "; break;
    case 55: cout << "yedi "; break;
    case 56: cout << "sekiz "; break;
    case 57: cout << "dokuz "; break;
    default: break;

    }
    }
    system("pause");
    return EXIT_SUCCESS;
    }







  • Ben başka bir yerde görmüştüm buna benzerdi sana onun mantığını söyleyim daha kısa olur belki.

    Kullanıcıdan iki haneli sayı girmesini istiyor.
    Bir komut ile 1 haneyi ve 2 haneyi ayırıyor...(left komutu )

    1 hanedekileri case ile 1 ise bir , 2 ise iki diye değişkene atıyor(c)
    2 hanedekileri ise yine case ile 1 on, 2 ise yirmi diye bir değişkene atıyor (d)


    enson c+d ile ekrana yazıyor...

    Böyle birşey de olabilir...



    < Bu mesaj bu kişi tarafından değiştirildi yusufpb -- 16 Mayıs 2006; 9:34:30 >
  • ben de ilk ordan başladım düşünmeye. girilen sayıyı diziye atamakla sayıların hepsini kolayca ayırmış oluyorum. böylelikle int gibi tip sorunlarım da olmuyo.(trilyon a kadar yazdım). ama switch lerdeki sorunu galiba anladım ama nası çözeceğimi bulamıyorum. sanırsam benim yarattığım dizi char cinsinden oluyor. bu yüzden 2 rakamının karşılığı char tipinde 50 ye denk geliyor. bunu nası çözebilirim. bi de if leri kısaltmam lazım öyle if ifadesi mi olur...

    teşekkürler.
  • #include <iostream>
    using namespace std;
    int main()
    {
    void nb(char,char,char,int);
    char a[15],c;
    int count=0,i=0,k=0;
    for(int i=0;i<15;i++)
    a[ i ] = '0';
    while((c=getchar()) !='\n')
    { a[ i ]=c;
    i++;
    count+=1;
    }
    char list[15];
    for(i=0;i<15;i++)
    list[ i ]='0';
    for(i=0;i<count;i++)
    list[ i ]=a[count-1-i];
    printf("yazıyla::\n");
    for(i=14;i>=2;i-=3)
    {
    nb(list[ i ],list[i-1],list[i-2],k);
    k+=1;
    }
    return 0;
    }
    void nb(char x,char y,char z,int k)
    {
    char* yuz[]={"","yuz","ikiyuz","ucyuz","dortyuz","besyuz","altiyuz","yediyuz","sekizyuz","dokuzyuz"};
    char* on[]={"","on","yirmi","otuz","kirk","elli","altmis","yetmis","seksen","doksan"};
    char* bir[]={"","bir","iki","uc","dort","bes","alti","yedi","sekiz","dokuz"};
    char* sp[]={"trilyon","milyar","milyon","bin",""};
    if((x=='0') && (z=='0') && (y=='0'))
    k=4;
    else if((x=='0') && (z=='1') && (y=='0') && (k==3))
    z='0'; else ;
    printf ("%s %s %s %s ",yuz[x-48],on[y-48],bir[z-48],sp[k]);
    };



    < Bu mesaj bu kişi tarafından değiştirildi nneverr -- 16 Mayıs 2006; 21:34:41 >




  • abi aceleyle yazdım kod biraz kötü oldu ama biraz incelersen mantığı anlarsın... eğer anlamadığın yer olursa söyle açıklarım..Malum final zamanı...
    kolay gelsin..
  • teşekkürler. bi bakıyım sora dönerim.
  • arkadaşlar bana bi yol gösterin ders olarak bunu görüyoz ünide ve ben bunun mantığını hala anlamadım hocanın dediklerini yazabiliyom ama bunlar çok basit şeyler a+b çevre alan hacim falan ve ben bu c++ öğrenmek istiyorum sizce ne yapayım nerden başlayayım
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.