Şimdi Ara

C İle İlgili

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
5
Cevap
0
Favori
486
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba, kafama takılan bir şeyler var.

    Birincisi getche komutu. Googledan da baktım ama tam olarak ne işe yaradığını anlamadım.

    Diğeri bir sayı giriyorum ve bu sayıdaki 1leri bulmak istiyorum. C ile nasıl yazabilirim?(100110111 sayısında 6 tane gibi)

    Takıldığım şeyleri soracağım ama yardımcı olabilirseniz çok sevinirim teşekkürler.



  • getche() fonksiyonu klavyeden basılan karakteri almanı sağlar.

    void main() 
    {
    char ch;
    ch = getche();
    printf("Girdiğiniz karakter :%c",ch);
    }



    Dediğin gibi 1 leri bulmak konusunda ise sayıyı bir char yada string değişkene alıp bir for döngüsü yardımıyla her karakteri tek tek 1 mi diye kontrol ettirebilirsin.

    int birsayisi = 0; 
    for(int i = 0; i<deger.length; i++)
    {
    if(deger[i] == "1") birsayisi++;
    }
    printf("Girdiğiniz değerde %d adet 1 sayısı mevcut.",birsayisi);


    tabi değeri sayısal(int) olarak alırsan metinsel karaktere çevirmeyi unutma.
  • quote:

    Orijinalden alıntı: Ephésus

    Dediğin gibi 1 leri bulmak konusunda ise sayıyı bir char yada string değişkene alıp bir for döngüsü yardımıyla her karakteri tek tek 1 mi diye kontrol ettirebilirsin.

    int birsayisi = 0; 
    for(int i = 0; i<deger.length; i++)
    {
    if(deger[i] == "1") birsayisi++;
    }
    printf("Girdiğiniz değerde %d adet 1 sayısı mevcut.",birsayisi);


    tabi değeri sayısal(int) olarak alırsan metinsel karaktere çevirmeyi unutma.

    Hocam izninizle 1-2 yanlışınızı düzeltmek istiyorum. Öncelikle deger.length şeklinde bir kullanım maalesef C'de mevcut değil. Bu yüzden sayıyı string olarak aldıysak, döngüde string sonu karakterine ('\0') ulaşıp ulaşmadığımızı kontrol edebiliriz. Bir diğer sorun C'de çift tırnak (") string, tek tırnak (') karakter belirtir. yani deger[ı] == "1" ifadesi bir pointer ve bir char karşılaştırmaya çalışır. Doğrusu deger[ı] == '1' olmalı. Son eklemek istediğim şey ise C99 standardından önce for döngüsünün içinde değişken tanımlayamazsınız. Muhtemelen tüm güncel derleyiciler C99 ve C11 standartlarını destekliyordur fakat bazı derleyicilerde kullanmak istediğiniz stardartı özellikle belirtmezseniz hata ile karşılaşırsınız.

     
    #include <stdio.h>

    int main(void) {
    char sayi[11];
    unsigned short i, birsayisi = 0;

    printf("Bir sayı giriniz: ");
    scanf("%s", sayi);

    for(i = 0; sayi[i] != '\0'; i++) {
    if(sayi[i] == '1')
    birsayisi++;
    }

    printf("Girdiğiniz sayıda %hu adet 1 rakamı mevcut.\n", birsayisi);

    return 0;
    }


    Bu da benim yazdığım programcık. Program sayıyı string olarak alıp 1 rakamı için teker teker bakıyor (işin kolayına kaçıyor kısaca ). Eğer string olarak değil de sayı olarak alıp sayı üzerinden 1 rakamlarını bulmak isterseniz biraz daha farklı aşamalar uygulamalısınız. Ya da int olarak alıp sonra string'e dönüştürmek isterseniz atoi() fonksiyonunu kullanabilirsiniz (#include <stdlib.h> eklemeniz gerekir).



    < Bu mesaj bu kişi tarafından değiştirildi Bl00dyHell -- 26 Ağustos 2014; 7:47:56 >




  • Bl00dyHell kullanıcısına yanıt
    C++, C# kafası ile yazmıştım uyarlamaya çalıştım anca bu kadar oldu. Düzeltmeler için teşekkürler.
  • İlk soru için ekranda yazdığın karakterleri tutmanı sağlıyodu sanırım kullanmadım hiç.
    İkinci için de aşağıdaki kod
    #include <stdio.h>
    main()
    {
    char a[100000];
    int x,i,tut=0;
    scanf("%s",a);
    x=strlen(a);
    for(i=0;i<x;i++)
    {
    if(a=='1')tut++;

    }
    printf("%d",tut);
    getch();
    return 0;
    }
  • Yapay Zeka’dan İlgili Konular
    0 sayısı ile ilgili
    17 yıl önce açıldı
    Ekol es 66 ile ilgili yardım
    10 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.