Çözüldü C dilinde kod bloğunda belirtilen satırın anlamı nedir?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
21 Ocak 2014
Mesajlar
1.564
Makaleler
19
Çözümler
5
Yer
Karabük
Daha fazla  
Cinsiyet
Erkek
Selamlar, aşağıdaki kod bloğunda 13.satırın meali nedir? Ne yapıyor? Güzelce anlatabilirseniz çok mutlu olurum.

[CODE highlight="13"]#include <stdio.h>

int main(int argc, char *argv[])
{
int number=0, basamak=0, oncekiBasamak=0, sonuc=0;

printf("enter your student number:");
scanf("%d",&number);

while(number>0)
{
basamak=number%10;
sonuc==0?sonuc=basamak<oncekiBasamak?1:0:0;
oncekiBasamak = basamak;
number = number / 10;
}
printf(sonuc==0?"True":"False");
return 0;
}[/CODE]
 
Son düzenleyen: Moderatör:
Çözüm
13. satırda aşağıdaki formatla ifade edilen "ternary operator" denilen operatör kullanılıyor.
"Doğru veya yanlış bir ifade" ? "Doğruysa dönmesi gereken ifade" : "Yanlışsa dönmesi gereken ifade"
Burada iç içe 2 ternary operator kullanıldığı için okuması gerçekten zor olabilir. Bu yüzden geleneksel ıf else ifadeleri ile bu satırı aşağıdaki gibi ifade edebiliriz.

C:
if (sonuc==0){
 if ( sonuc = basamak < oncekiBasamak ){
 return 1;
 }
 else {
 return 0;
 }
}
else {
 return 0;
}

Burada sonuç = basamak < oncekibasamak kısmı hala kafanı karıştırıyor olabilir. Kısaca açıklayayım soru işareti kalmasın.

Sonuç değişkeni bir integer.
basamak < oncekiBasamak
Sorgusu true veya false gibi bir değer döndürür. C dilinde bunlar compiler düzeyinde ınteger'lar ile ifade edilir. Yani true 1, false 0 olacaktır. Bu sebeple basamak değişkeninin, onceki basamak değişkeninden küçük olması durumunda sonuç değişkeni 1 değerini alacaktır. Bu değer de doğru olarak görüldüğünden if bloğunun içine girilecektir.
Evet şimdi taşlar yerine oturdu. Teşekkürler <3
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…