Çözüldü Yazılan kod nasıl geliştirilebilir?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

SubhanXd

Centipat
Katılım
5 Kasım 2022
Mesajlar
186
Çözümler
1
Merhaba. Soru: Dört pozitif tam sayı A, B, C, D verilmiştir. Verilen kenar uzunluklarıyla bir kare oluşturulabiliyorsa herhangi bir sayının karesini bulun. Aksi takdirde "no" yazdırın.
Yazdığım kod:

C++:
#include <iostream>
using namespace std;

int main() {
 int a, b, c, d;
 cin >> a >> b >> c >> d;
 if (a>0 && b >0 && c>0 && d >0) {
 if (a == b && b == c && c == d)
 {
 cout << a *a << endl;
 }
 else
 {
 cout << "No" << endl;
 }
 }
}

Kod doğru ama site nedense 90 puan veriyor. Kacırdığım veya hatamın olduğu kısım neresi?
 
Çözüm

(long long)(a*a) değil de tam gösterdiğim gibi (long long)a*a yazmanız gerekiyor. Sizin yazdığınız halinde ilk overflow meydana gelip (çarpımın sonucu int sınırını aşıyorsa) sonra long long'a dönüştürme yapılıyor. Parantezsizken ilk a long long'a dönüşüyor, bu sayede işlem güvenli oluyor.
Kenar uzunlugu hepsi sifirdan buyuk degilse No yazdirmiyorsun. ( ilk if blogu )
Bir de soruda "no" demissin kodda "No" yaziyorsun ama bu sorun olsaydi 90 dan dusuk alirdin
 
Kenar uzunlugu birbirlerine esit degilse No yazdirmiyorsun.
Bir de soruda "no" demissin kodda "No" yaziyorsun ama bu sorun olsaydi 90 dan dusuk alirdin
Çeviride hata olmuş.

Sorunun ekran görüntüsünü paylaşır mısın? Soru tam olarak ne istiyor onu göreyim, gereksinimlerini.
Paylaşamıyorum.Sunucu hatası oluşuyor.

Kenar uzunlugu hepsi sifirdan buyuk degilse No yazdirmiyorsun. ( ilk if blogu )
Bir de soruda "no" demissin kodda "No" yaziyorsun ama bu sorun olsaydi 90 dan dusuk alirdin
Aslında o ilk if bloguna gerek yok.Bundan onceki sorularda da pozitif olmasini istiyordu ama ben oyle bir sart yazmiyordum.
 

(long long)(a*a) değil de tam gösterdiğim gibi (long long)a*a yazmanız gerekiyor. Sizin yazdığınız halinde ilk overflow meydana gelip (çarpımın sonucu int sınırını aşıyorsa) sonra long long'a dönüştürme yapılıyor. Parantezsizken ilk a long long'a dönüşüyor, bu sayede işlem güvenli oluyor.
 
Çözüm
Sorun çözüldü.Çok teşekkürler.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…