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.
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.
Bu koddaki tek sıkıntının orası olduğunu düşünmüyorum. Attığınız kodun genel olarak ne yapması gerektiğini anlayamadım. Attığınız kod düzgün çalışıyor mu? Ne yapması gerekiyor bu kodun?
Bu koddaki tek sıkıntının orası olduğunu düşünmüyorum. Attığınız kodun genel olarak ne yapması gerektiğini anlayamadım. Attığınız kod düzgün çalışıyor mu? Ne yapması gerekiyor bu kodun?
Sorunda o zaten ben de anlayamadım o satırda ne yaptığını anlasam anlayacağım aslında. 2010205074 girdiğimde output False oluyor. Kod bana ait olmadığı için bilmiyorum.
Paylaştığınız kod girdiğiniz sayının her basamağındaki rakamı tek tek kontrol ediyor. Eğer herhangi bir sonraki rakam öncekinden büyükse False döndürüyor. Eğer her bir sonraki rakam öncekinden küçük ise sonuc değeri 0 olarak kalıyor ve True dönüyor. Belirtilen satırda da bu kontrol ediliyor.
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.
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.
@await Hocam sırf sorum için hesap açmış gibi duruyorsunuz valla Allah razı olsun. Çok da güzel anlatmışsınız. Sabahtan beri kafamda bunu çözmeye çalışıyorum. Bıraktım başka şeye geçtim ama hala kafamın kenarındaydı. Bir bakayım bir şey yazan olmuş mu dedim ve yanıtınızı gördüm çok teşekkürler.
Yalnız kodu bu şekilde yazdığımda bir output alamıyorum. Sorun nerede acaba?
Kod:
#include <stdio.h>
int main(int argc, char *argv[])
{
int number=0, digit=0, preDigit=0, result=0;
printf("enter your student number:");
scanf("%d",&number);
while(number>0)
{
digit=number%10;
if (result==0)
{
if (result=digit<preDigit)
{
return 1;
}
else
{
return 0;
}
}
else
{
return 0;
}
preDigit = digit;
number = number / 10;
}
printf(result==0?"True":"False");
}
@await Hocam sırf sorum için hesap açmış gibi duruyorsunuz valla Allah razı olsun. Çok da güzel anlatmışsınız. Sabahtan beri kafamda bunu çözmeye çalışıyorum. Bıraktım başka şeye geçtim ama hala kafamın kenarındaydı. Bir bakayım bir şey yazan olmuş mu dedim ve yanıtınızı gördüm çok teşekkürler.
Yalnız kodu bu şekilde yazdığımda bir output alamıyorum. Sorun nerede acaba?
Kod:
#include <stdio.h>
int main(int argc, char *argv[])
{
int number=0, digit=0, preDigit=0, result=0;
printf("enter your student number:");
scanf("%d",&number);
while(number>0)
{
digit=number%10;
if (result==0)
{
if (result=digit<preDigit)
{
return 1;
}
else
{
return 0;
}
}
else
{
return 0;
}
preDigit = digit;
number = number / 10;
}
printf(result==0?"True":"False");
}
Çünkü benim yazdığım kodun içindeki return 0 ve return 1'ler int main() fonksiyonundan çıkıyor. Ben orada sadece ternary işleminin ne döndürdüğünü ifade etmek istemiştim.
Bahsettiğimiz sorguda aslında yapılan tek işlem şu:
C:
if (result == 0 && digit < preDigit) {
result = digit<predigit // If'in içinde zaten digit < preDigit'in dogrulugunu kontrol ettigimizden her zaman true dönecektir, yani eğer if'in koşulu doğruysa result her zaman 1(true)'ya eşitlenecektir.
}
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.
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.