Arama butonu
Bu konudaki kullanıcılar: 1 misafir
4
Cevap
507
Tıklama
0
Öne Çıkarma
C İle İlgili
V
11 yıl
Onbaşı
Konu Sahibi

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.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



E
11 yıl
Yüzbaşı

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.


Bu mesaja 1 cevap geldi.
B
11 yıl
Yarbay

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 >
Bu mesaja 1 cevap geldi.
E
11 yıl
Yüzbaşı

C++, C# kafası ile yazmıştım uyarlamaya çalıştım anca bu kadar oldu. Düzeltmeler için teşekkürler.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Bl00dyHell
J
11 yıl
Yüzbaşı

İ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;
}



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.