Klavyeden girilen sayının pozitif tam bölenlerini yazan program (C)

omrumbakitmz

Hectopat
Katılım
28 Ekim 2012
Mesajlar
289
Daha fazla  
Cinsiyet
Erkek
Merhaba, Bilgisayar Mühendisliği 1. sınıf öğrencisiyim. Bilgisayar Laboratuvarı’nda çözemediğim bir soruyu size sormak istiyorum. Soru “girilen sayının pozitif tam bölenleri ekrana yazdıran programı yazın” şeklinde. Soru aşağıda detaylı olarak yazıldı. Benim yazdığım çözüm ise onun altında. Yazdığım kod kısmen çalışıyor. Asal olmayan sayılarda çalışıyor fakat asal sayılarda çalışmıyor. Kodu ve soruyu inceleyip bana yardımcı olursanız sevinirim.



Konu:C’de While döngüsü
Soru: Girilen sayıların pozitif tam bölenlerini ekrana yazdıran ve sayıların asal olup olmadığını yazan programı yazınız.

Örnek Girdi-Çıktı:

sayi girin:12

bolenler:

2
3
4
6


12 sayisi asal değildir.

——————————————


sayi girin:5

bolenler:

5 sayisi asaldir.

——————————————


sayi girin:2

bolenler:


2 sayisi asaldir.

——————————————


Benim yazdığım kod.

Screen Shot 2014-11-03 at 10.48.27 AM.png
 
Merhabalar,
Kod:
bolum=2;

bool isAsal=true;

while(sayi>bolum)
{
   if(sayi%bolum==0)
  {
     printf("%d \n",bolum);
      isAsal=false;
   }
    bolum++;
}

//2'den küçük asal sayı olmaz. 
if(isAsal && sayi>1)
  printf("%d sayısı asal\n",sayi);
 
Son düzenleme:
Merhabalar,
Kod:
bolum=2;

bool isAsal=true;

while(sayi>bolum)
{
   if(sayi%bolum==0)
  {
     printf("%d \n",bolum);
      isAsal=false;
   }
    bolum++;
}

//2'den küçük asal sayı olmaz.
if(isAsal && sayi>1)
  printf("%d sayısı asal\n",sayi);
Cevap için teşekkürler. Fakat daha bool değişken tipini görmediğimiz için cevapta kullanılmaması gerekiyor sanırım. :)
 
Bool değişken yerine isAsalı int (tamsayı) olarak tanımlarız. Son if şartında isAsal=1 ve sayi değişkeninin 1'den büyük olması durumunda kullanıcının girdiği sayı asal olur.
Kod:
bolum=2;

//bool isAsal=true;
int isAsal=1;

while(sayi>bolum)
{
   if(sayi%bolum==0)
  {
     printf("%d \n",bolum);
      //isAsal=false;
       isAsal=0;
   }
    bolum++;
}

//2'den küçük asal sayı olmaz.
//if(isAsal && sayi>1)
if(isAsal==1 && sayi>1)
  printf("%d sayısı asal\n",sayi);
 
Bool değişken yerine isAsalı int (tamsayı) olarak tanımlarız. Son if şartında isAsal=1 ve sayi değişkeninin 1'den büyük olması durumunda kullanıcının girdiği sayı asal olur.
Kod:
bolum=2;

//bool isAsal=true;
int isAsal=1;

while(sayi>bolum)
{
   if(sayi%bolum==0)
  {
     printf("%d \n",bolum);
      //isAsal=false;
       isAsal=0;
   }
    bolum++;
}

//2'den küçük asal sayı olmaz.
//if(isAsal && sayi>1)
if(isAsal==1 && sayi>1)
  printf("%d sayısı asal\n",sayi);
isAsal'ın işlevini biraz daha açıklar mısınız?
 
isAsal=1 demek sayının asal olduğunu, isAsal=0 ise sayının asal olmadığını gösteriyor.
Yani isAsal değişkenini sayının asal olup olmadığını belirlemek için kullanıyoruz.

Kod:
//En başta isAsal=1 ataması yaparak kullanıcının girdiği sayının asal olduğu varsayımı ile başlıyoruz.
int isAsal=1;

while(sayi>bolum)
{
   //Sayıdan farklı olan bir bolum değeri, sayıyı bölerse o sayı asal olmamalı.
  //Sayının asal olarak kalabilmesi için hiçbir zaman hemen aşağıdaki if şartı bloğuna giriş yapmamalı.
   if(sayi%bolum==0)
  {
     printf("%d \n",bolum);
      //Madem sayı, bolum tarafından bölünüyor. Sayı asal değil ve isAsal=0 ataması yapmalıyız.
       isAsal=0;
   }
    bolum++;
}

//Sayı asal ise  "... sayısı asal" mesajını göstereceğiz.
if(isAsal==1 && sayi>1)
  printf("%d sayısı asal\n",sayi);
 
Son düzenleme:
Uyarı! Bu konu 10 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Yeni konular

Geri
Yukarı