Şimdi Ara

c++ girilen değerlerin tamsayı olup olmadığı kontrolü

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir Kullanıcı, 2 Masaüstü Kullanıcı
4
Cevap
0
Favori
2.511
Tıklama
Tüm Forumlar >> Web Tasarım - Programlama >> Yazılım Geliştirme >> Delphi / C++ /Vb >> c++ girilen değerlerin tamsayı olup olmadığı kontrolü
Sayfaya Git:
Sayfa:
1
Giriş
Mesaj
  • Yüzbaşı
    352 Mesaj
    Burda x ve t ye tam sayı girmediğimizde hata uyarısı verip x ve t sayılarını tekrardan nasıl isteyebilirim


    #include<stdio.h>
    int getFactorial(int );
    int getBaseOfTwo(int );
    int getMultipleEquation(int , int );
    int getSumEquation(int , int );
    bool kontrol(int,int);
    void solveEquation(int , int );

    int main()
    {
    bool sonuc=false;
    int x;
    int t;
    while(!sonuc)
    {
    printf("x degerini giriniz.En az 3, en fazla 15 ==> ");
    scanf("%d",&x);
    printf("t degerini giriniz.En az 1, en fazla 10 ==> ");
    scanf("%d",&t);
    sonuc=kontrol(x,t);
    }
    solveEquation(x,t);
    }

    //faktoriyel
    int getFactorial(int x) {
    int result = 1;
    for (int i = 1; i <= x; i++) {
    result = result * i;
    }
    return result;
    }


    //2 ussu hesaplama
    int getBaseOfTwo(int t) {
    int result = 1;
    for (int i = 1; i <= t; i++) {
    result = result * 2;
    }
    return result;
    }

    //carpim fonksiyonu
    int getMultipleEquation(int n, int t) {
    int result = 1;
    for (int i = n; i <= t; i++) {
    result = result * getBaseOfTwo(i);
    }
    return result;
    }

    int getSumEquation(int x, int t) {
    int sum = 0;
    for (int i = 1; i <= t; i++) {
    sum = sum + getFactorial(x) + getMultipleEquation(i, t);
    }
    return sum;
    }

    bool kontrol(int x,int t)
    {
    if (x < 0 || t < 0) {
    printf("x ve/veya t degeri sıfırdan kucuk olamaz\n");
    return false;
    }

    if (x < 3 || x > 15) {
    printf("x 3'ten kucuk 15'ten buyuk olamaz\n");
    return false;
    }

    if (t < 1 || t > 10) {
    printf("t 1'den kucuk 10'dan buyuk olamaz\n");
    return false;
    }
    return true;

    }

    void solveEquation(int x, int t) {

    int result = getSumEquation(x, t);
    printf("Sonuc: %d\n",result);
    }



    < Bu mesaj bu kişi tarafından değiştirildi atakanredflag -- 20 Aralık 2015; 19:24:44 >



    |
    |




  • Teğmen
    115 Mesaj



    hata mesaji icin fonksiyon cagirip oradan devam edebilirsin
    simdi kontrol ederken aklima geldi, int degeri zaten tam sayi disinda deger alamayacagi icin program hata verecektir

    cozum: bence sayiyi bir char dizesine kaydedip yine for dongusuyle ayni denetimi yapmalisin, string degeri eger aradigin bir sayi cikarsa baska bir int sabite esitlersin.
    |
    |
    _____________________________
  • Yüzbaşı
    456 Mesaj
    Kullanicinin ekrana bir sayi girecegini varsayarsak, kullanicidan float ya da double tipinde bir sayi okuyup, bu sayinin tam sayi olup olmadigini kontrol etmen herhalde en kolay ve temiz yol olacaktir.

    Eger ondalikli bir sayiyi %d ile okursan, sayiyi her zaman duzgun okuyamayabilirsin.
    |
    |
    _____________________________
    Yanmışsam, külümden doğacak bir hisar vardır.
  • Yüzbaşı
    644 Mesaj
    Girilen bir sayının float ve integer olup olmadığını anlamak için aşağıdaki programın kodundaki is_float() ve is_int() fonksiyonlarını kullanabilirsiniz. Girilen karakter dizileri float veya integer ise fonksiyonlar true (1) değerine dönüyor, değilse false (0) değerine dönüyor.

    #include <iostream> 
    using namespace std;

    bool is_int(char *);
    bool is_float(char *);

    int main()
    {
    char sayi[50];
    cout << "Sayiyi giriniz: ";
    cin >> sayi;
    cout << "int : " << is_int(sayi) << endl;
    cout << "float: " << is_float(sayi);
    getchar(); getchar();
    return 0;
    }

    bool is_int(char *sayi)
    {
    if (!(sayi[0] - '0' >= 0 && '9' - sayi[0] >= 0) && sayi[0] != '+' && sayi[0] != '-' || ((sayi[0] == '-' || sayi[0] == '+') && sayi[1] == '\0'))
    return false;
    sayi++;
    for (;*sayi != '\0'; sayi++)
    if (!(*sayi - '0' >= 0 && '9' - *sayi >= 0))
    return false;
    return true;
    }

    bool is_float(char *sayi)
    {
    int dot = 0;
    if (!(sayi[0] - '0' >= 0 && '9' - sayi[0] >= 0) && sayi[0] != '+' && sayi[0] != '-' && sayi[0] != '.' || ((sayi[0] == '-' || sayi[0] == '+') && sayi[1] == '\0'))
    return false;
    if (sayi[0] == '.')
    dot++;
    sayi++;
    for (;*sayi != '\0'; sayi++)
    {
    if (*sayi == '.')
    dot++;
    if (!(*sayi - '0' >= 0 && '9' - *sayi >= 0) && *sayi != '.')
    return false;
    }
    if (dot > 1)
    return false;
    return true;
    }



    < Bu mesaj bu kişi tarafından değiştirildi Cyromancer -- 4 Ocak 2016; 19:41:14 >
    |
    |
    _____________________________




HızlıCevap
Sayfaya Git:
Sayfa:
1
Reklamlar
Mobilya Takımları
haberler
son dakika
Bey Azura
Bu sayfanın
Mobil sürümü
Mini Sürümü

BR2
0,281
1.2.165

Reklamlar
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.