Şimdi Ara

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

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
5
Cevap
0
Favori
5.595
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
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 >







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



    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.
  • 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.
  • 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 Cryomancer -- 4 Ocak 2016; 19:41:14 >




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