Çözüldü C programlama dilinde Karekökler nasıl yazılır?

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

Hddju

Centipat
Katılım
8 Eylül 2020
Mesajlar
27
Daha fazla  
Cinsiyet
Kadın
1 Ve 9999 arasında olan mükemmel kakakök şartını sağlayan tüm şartları listeleyecek bir C kodu nasıl yazılır? Lütfen C++ değil yalnız C yazdıran kod lazım.
Resimdekini kodla kim ifade edebilir.

Adsız.png
 
Yazdığınız kodu paylaşır mısınız?
Arkadaşların sayesinde hepsine teşekkür ederim.1 ve 9999 arası sayıları yazıyorda bir kalan kısıım bulduğu sayıların karakökünü yanda çıkarmıyor
mesala böyle - 81 bir s sayısıdır.Karekökü 9 dur
Bu karekökü 9 yazdıran kod kalıyor geriye
#include <stdio.h>
#include <math.h>
int main() {
for(double i = 1; i <9999; ++i){
if((int)(sqrt(i)) == (sqrt(i)))
{
printf("%.f bir S-sayisidir.\n",i);


}

}
return 0;
}
Hocam ama bu şekilde yaparsak tam kareler de doğru oluyor.
Soruda hata var bence birisinde 9801'i 98+0+1 diye ayırmış diğerinde 1296'yı 1+29+6 diye ayırmış birisine göre kodu yazıyorum diğeri çalışmıyor bu sefer kafam karıştı.
Hocam yarıya kadar kod sonuç verdi bir kalan kısım bulduğu sayının karekökü çıkarması için gerekli olan kodlama.
Mesela 81 bir S sayısıdır yazıyor çıktıda ama böyle olması lazım sonucun
81 bir S sayısıdır. Karekökü 9 dur
Bu karekökü 9 nasıl yaza biliriz lütfen kodunu yaza bilirmisin.
 
Son düzenleme:
Son düzenleme:
Python:
for a in range(10000):
    b=a**(1/2)
    c=len(str(a))
    f=(a//1000)%10
    e=(a//100)%10
    d=(a//10)%10
    g=a%10
    fe=str(a)[0:2]
    ed=str(a)[1:3]
    edg=str(a)[1:4]
    fed=str(a)[0:3]
    dg=str(a)[2:4]
    if c==2:
        if d+g==b:
            print(str(a) + " Mükemmel Karekök Sayıdır! Karekök: " +str(int(b)) + " => " + str(d) + " + " + str(g))
    elif c==3:
        if e+d+g==b:
            print(str(a) + " Mükemmel Karekök Sayıdır! Karekök: " +str(int(b)) + " => " + str(e) + " + " + str(d) +  " + " + str(g))
        elif int(fe)+g==b:
            print(str(a) + " Mükemmel Karekök Sayıdır! Karekök: " +str(int(b)) + " => " + str(fe) + " + " + str(g))
        elif int(ed)+e==b:
            print(str(a) + " Mükemmel Karekök Sayıdır! Karekök: " +str(int(b)) + " => " + str(ed) + " + " + str(e))
    elif c==4:
        if f+e+d+g==b:
            print(str(a) + " Mükemmel Karekök Sayıdır! Karekök: " +str(int(b)) + " => " + str(f) + " + " + str(e) + " + " + str(d) + " + " + str(g))
        elif int(fe)+d+g==b:
            print(str(a) + " Mükemmel Karekök Sayıdır! Karekök: " +str(int(b)) + " => " + str(fe) + " + " + str(d) + " + " + str(g))
        elif int(fed)+g==b:
            print(str(a) + " Mükemmel Karekök Sayıdır! Karekök: " +str(int(b)) + " => " + str(fed) + " + " + str(g))
        elif int(fe)+int(dg)==b:
            print(str(a) + " Mükemmel Karekök Sayıdır! Karekök: " +str(int(b)) + " => " + str(fe) + " + " + str(dg))
        elif f+e+int(dg)==b:
            print(str(a) + " Mükemmel Karekök Sayıdır! Karekök: " +str(int(b)) + " => " + str(f) + " + " + str(e) + " + " + str(dg))
        elif f+int(edg)==b:
            print(str(a) + " Mükemmel Karekök Sayıdır! Karekök: " +str(int(b)) + " => " + str(f) + " + " + str(edg))
        elif f+int(ed)+g==b:
            print(str(a) + " Mükemmel Karekök Sayıdır! Karekök: " +str(int(b)) + " => " + str(f) + " + " + str(ed) + " + " + str(g))
Python ile yaptım ancak çok fazla kod karmaşası oldu, hangi mantıkla yapmak lazım? Kodları azaltmam lazım. C bilsem aynı kodu çevirir atardım, kusuruma bakmayın.
 
Son düzenleyen: Moderatör:
Python:
import math
asd=0
for i in range(1,10000):
    a = list(str(i))
    for l in range(len(a)):
        a[l] = int(a[l])
    while True:
        if len(a)==2:
            if (a[0]+a[1])**2==i:
                print(str(i) + " Mükemmel Karekök Sayıdır! Karekök: " + str(int(math.sqrt(i))))
                asd=1
        if len(a)==3:
            if asd!=1:
                if (a[0]+a[1]+a[2])**2==i:
                    print(str(i) + " Mükemmel Karekök Sayıdır! Karekök: " + str(int(math.sqrt(i))))
                    asd=1
                elif (a[0]*10+a[1]+a[2])**2==i:
                    print(str(i) + " Mükemmel Karekök Sayıdır! Karekök: " + str(int(math.sqrt(i))))
                    asd=1
                elif (a[0]+a[1]*10+a[2])**2==i:
                    print(str(i) + " Mükemmel Karekök Sayıdır! Karekök: " + str(int(math.sqrt(i))))
                    asd=1
        if len(a)==4:
            if asd!=1:
                if (a[0]+a[1]+a[2]+a[3])**2==i:
                    print(str(i) + " Mükemmel Karekök Sayıdır! Karekök: " + str(int(math.sqrt(i))))
                elif (a[0]*10+a[1]+a[2]+a[3])**2==i:
                    print(str(i) + " Mükemmel Karekök Sayıdır! Karekök: " + str(int(math.sqrt(i))))
                elif (a[0]+a[1]*10+a[2]+a[3])**2==i:
                    print(str(i) + " Mükemmel Karekök Sayıdır! Karekök: " + str(int(math.sqrt(i))))
                elif (a[0]+a[1]+a[2]*10+a[3])**2==i:
                    print(str(i) + " Mükemmel Karekök Sayıdır! Karekök: " + str(int(math.sqrt(i))))
                elif (a[0]*1000+a[1]*100+a[2]+a[3])**2==i:
                    print(str(i) + " Mükemmel Karekök Sayıdır! Karekök: " + str(int(math.sqrt(i))))
                elif (a[0]+a[1]*100+a[2]*10+a[3])**2==i:
                    print(str(i) + " Mükemmel Karekök Sayıdır! Karekök: " + str(int(math.sqrt(i))))
                elif (a[0]+a[1]+a[2]*10+a[3])**2==i:
                    print(str(i) + " Mükemmel Karekök Sayıdır! Karekök: " + str(int(math.sqrt(i))))
        asd=0
        break
Python ile yaptım ancak çok fazla kod karmaşası oldu, hangi mantıkla yapmak lazım? Kodları azaltmam lazım. C bilsem aynı kodu çevirir atardım, kusuruma bakmayın.
Herkese teşekkür ederim elinize kolunuza sağlık
 

Yeni konular

Geri
Yukarı