Çözüldü C kodu, 1.5 in 2 ile 100 arasındaki asal üstlerini print yapma

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

yup

Femtopat
Katılım
22 Ocak 2022
Mesajlar
8
Merhaba C yazmaya daha 3-4 gun once başladım bir turlu doğrular cevabi alamıyorum, şimdiden tessekkur ederim
asal sayılar doğru cikiyor ama üstlerini almaya calisinca hersey karisiyor.


C:
#include <stdio.h>
int main () {

  float base = 1.5;
  int i, number, count;

  for(number = 2; number <= 100; number++)

  {
   
    count = 0;
    for (i = 2; i < number/2; i++)  
    {
    if(number%i == 0)      /*  herhangi bir sayi boluyorsa*/
    {
      count++;
      break;
    }
    }

    if(count == 0  ){     /* hic bolen yoksa */
   
    float power = 1;

 
    for(int j=1; j<i; j++)       /* Multiply the base, exponent times*/
    {
        power = power * base;

    }
    printf("pi =%d, %.4f^%d = %f \n",number, base, number, power );
  }
  }
  return 0;
  }
 

Dosya Ekleri

  • Screen Shot 2022-01-22 at 04.42.34.png
    Screen Shot 2022-01-22 at 04.42.34.png
    261,3 KB · Görüntüleme: 24
Son düzenleyen: Moderatör:
Çözüm
Kod leş. Özellikle de tip olarak. Daha modüler olması çok daha iyi olur.

Hataya gelecek olursak sayınız number iken niyeyse i ile muhatap oluyorsunuz. 26. satırdaki for(int j=1; j<i; j++) kodunuzu for(int j = 0; j < number; ++j) şeklinde hem doğru başlangıç değeri, hem de doğru kıyas değeri ile düzeltirseniz doğru çalışır. Başlangıç değerini 1 olarak bırakmak isterseniz 23. satırdaki atamada 1 değerini değil, base değerini vermelisiniz.

Üs almak için math.h kütüphanesinde fonksiyon var. Kendiniz de fonksiyon yazabilirsiniz. Ama orada döngü yerine fonksiyon olmasını tercih ederim ben.

Döngülerde i ve j artırımına laf eden arkadaşa gelecek olursak i++ sizin için yeterli bir artırım değil herhalde.

60993

Hectopat
Katılım
25 Nisan 2015
Mesajlar
257
Makaleler
2
Çözümler
1
Bu kodları nereden aldınız acaba? Yapılmak isteneni tam anlayamadım. Fakat i ve j değişkenlerinde arttırım sorunu var. 29.satırda j değerini ekrana yazdıran kodu yazarak j değerinin artmadığını görebilirsiniz. Aynı şekilde 25.satıra da i değerini ekrana yazdıran kodu yazın.
 

Vavien.

Petapat
Katılım
20 Aralık 2014
Mesajlar
14.888
Makaleler
6
Çözümler
343
Yer
İstanbul
Kod leş. Özellikle de tip olarak. Daha modüler olması çok daha iyi olur.

Hataya gelecek olursak sayınız number iken niyeyse i ile muhatap oluyorsunuz. 26. satırdaki for(int j=1; j<i; j++) kodunuzu for(int j = 0; j < number; ++j) şeklinde hem doğru başlangıç değeri, hem de doğru kıyas değeri ile düzeltirseniz doğru çalışır. Başlangıç değerini 1 olarak bırakmak isterseniz 23. satırdaki atamada 1 değerini değil, base değerini vermelisiniz.

Üs almak için math.h kütüphanesinde fonksiyon var. Kendiniz de fonksiyon yazabilirsiniz. Ama orada döngü yerine fonksiyon olmasını tercih ederim ben.

Döngülerde i ve j artırımına laf eden arkadaşa gelecek olursak i++ sizin için yeterli bir artırım değil herhalde.
 
Çözüm

60993

Hectopat
Katılım
25 Nisan 2015
Mesajlar
257
Makaleler
2
Çözümler
1
Döngülerde I ve J artırımına laf eden arkadaşa gelecek olursak i++ sizin için yeterli bir artırım değil herhalde.

Hocam yeterli bir artırım fakat kontrol edildiğinde artırım yapılmıyor. Çok iyi kod bilgim yok fakat i değerinin bir süre artmayıp daha sonra arttığını gördüm ondan böyle bir şey yazdım ayrıca "kod leş" demek isterdim fakat bilgime güvenemediğimden bir yorumda bulunmadım. Arkadaş hem internet hem kendi bilgisiyle kodu çorba haline getirmiş galiba.
 

60993

Hectopat
Katılım
25 Nisan 2015
Mesajlar
257
Makaleler
2
Çözümler
1
Değer bir süre artıp sonra artmıyor çünkü arkadaş C90 standartdı kullanıyormuş gibi döngü dışında döngü değişkeni tanımlıyor.

Bahsetmiş olduğunuz değişken i değişkeni değil mi? i değişkeni 12. satırdaki for döngüsünde değer tanımlanıyor fakat for döngüsü içerisinde olduğundan 26.satırdaki for döngüsünde i'nin herhangi bir değeri olmadığı için j<i anlamsız oluyor diye düşünüyorum.
 
KS
KS
yup

yup

Femtopat
Katılım
22 Ocak 2022
Mesajlar
8
Hocam yeterli bir artırım fakat kontrol edildiğinde artırım yapılmıyor. Çok iyi kod bilgim yok fakat i değerinin bir süre artmayıp daha sonra arttığını gördüm ondan böyle bir şey yazdım ayrıca "kod leş" demek isterdim fakat bilgime güvenemediğimden bir yorumda bulunmadım. Arkadaş hem internet hem kendi bilgisiyle kodu çorba haline getirmiş galiba.
evet biraz öyle oldu
Kod leş. Özellikle de tip olarak. Daha modüler olması çok daha iyi olur.

Hataya gelecek olursak sayınız number iken niyeyse i ile muhatap oluyorsunuz. 26. satırdaki for(int j=1; j<i; j++) kodunuzu for(int j = 0; j < number; ++j) şeklinde hem doğru başlangıç değeri, hem de doğru kıyas değeri ile düzeltirseniz doğru çalışır. Başlangıç değerini 1 olarak bırakmak isterseniz 23. satırdaki atamada 1 değerini değil, base değerini vermelisiniz.

Üs almak için math.h kütüphanesinde fonksiyon var. Kendiniz de fonksiyon yazabilirsiniz. Ama orada döngü yerine fonksiyon olmasını tercih ederim ben.

Döngülerde i ve j artırımına laf eden arkadaşa gelecek olursak i++ sizin için yeterli bir artırım değil herhalde.
C:
#include <stdio.h>
int main () {

  float base = 1.5;
  int i, number, count; 

  for(number = 2; number <= 100; number++){

    count = 0;
    for (i = 2; i < number; i++){
        
    if(number%i == 0)   {   /*  herhangi bir sayi boluyorsa*/
    
      count++;
      break;
    }
    }

    if(count == 0  ){     /* hic bolen yoksa */
    
    float power = 1;

  
    for(int j = 0; j < number; ++j)       /* Multiply the base, exponent times*/
    {
        power = power * base;

    }
    printf("pi =%d, %.4f^%d = %f \n",number, base, number, power );
  } 
  }
  return 0;
  }

dediğiniz gibi bir kaç degisiklik yaptım suan calisyor, en azından doğru output veriyor, kod göze baya daginik gözüküyor daha guzellestirilabilir mi? Birde c calisabilcegim tavsiye edeceğiniz kaynak varmi, bundan once 5 aylık python tecrübem var c ye alışmaya calisiyorum. çok saolun bu arada
 
Son düzenleme:

60993

Hectopat
Katılım
25 Nisan 2015
Mesajlar
257
Makaleler
2
Çözümler
1
Eğer yazılıma yeni başlayan biriyseniz size tavsiyem değişken isimlerini anlamlı ve Türkçe oluşturmanız. Çünkü koddaki sorunları mantığı ve daha sonra dönüp baktığınızda ne yaptığınızı daha iyi anlarsınız. Belirli bir seviyeden sonra tabii ki İngilizce ve hatta yapabilirseniz bu işin jargonuna göre değişken isimleri belirlerseniz daha iyi olacaktır. Aynı şekilde yazdığınız kodlara şu an için Türkçe yorum satırları eklemekte iyi olacaktır.
 

RaSGooL

Decapat
Katılım
26 Mart 2020
Mesajlar
723
Çözümler
24
Yer
Ankara
Eğer yazılıma yeni başlayan biriyseniz size tavsiyem değişken isimlerini anlamlı ve Türkçe oluşturmanız. Çünkü koddaki sorunları mantığı ve daha sonra dönüp baktığınızda ne yaptığınızı daha iyi anlarsınız.
Nasıl başlarsan öyle gidiyor. Ağaç yaşken eğilir. İngilizce olarak devam edin.
 
Yukarı