Şimdi Ara

While döngüsü

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
10
Cevap
0
Favori
607
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhabalar. Sorunum, C programlama dilinde while döngüsü içerisinde bazı işlemler yapıyorum. Öklid algoritması ile ilgili, ebob bulmak için. Ama "a" 'yı bastırdığımda while döngüsü içerisindeki değiştirilmiş halini bastırmıyor. Sebebi nedir? Kodlar:

     
    #include<stdio.h>
    #include<conio.h>
    #include<locale.h>
    int main() {
    setlocale(LC_ALL, "Turkish");

    printf("EBOB-EKOK Programı\n\n\n1-EBOB\n2-EKOK");
    while(1){
    int secim;
    printf("\nHangi işlemi gerçekleştirmek istiyorsunuz: ");
    scanf("%d", &secim);

    if(secim==1){
    int ebob1, ebob2, a, b, b1;

    printf("\nEbob'unu almak istediğiniz ilk sayıyı giriniz: ");
    scanf("%d", &ebob1);
    printf("İkinci sayıyı giriniz: ");
    scanf("%d", &ebob2);

    a=ebob1;
    b=ebob2;
    while(b1>0) {
    b1=b;
    b=a % b;
    a=b1;


    }
    printf("\n%d", a);

    }

    else if(secim==2){printf("\nHazırlanma aşamasında...");}

    else{printf("1 veya 2 gir!"); }
    }





    getch();
    return 0;
    }



    < Bu mesaj bu kişi tarafından değiştirildi PsLıcks -- 13 Eylül 2018; 17:32:23 >







  • Kodları resim şeklinde değil, kod olarak foruma atarsan yardımcı oluruz.



    < Bu mesaj bu kişi tarafından değiştirildi Iqtam -- 13 Eylül 2018; 2:51:9 >
  • Düzenledim. Kusura bakma forumda kodlara girinti bırakmayı yeni ogrendim.
    Printf'i while'ın içine yazınca basıyor her döngüde. Ama dışarı niye basmıyor printf?@Iqtam



    < Bu mesaj bu kişi tarafından değiştirildi PsLıcks -- 14 Eylül 2018; 0:48:1 >
  • İçteki while döngüsü'nü b1>0 şartına bağlamışsın ve b1' e başlangıç değeri vermemişsin. Program da bu değişkene rastgele bir sayı atayacak. Birinci hatan burda.



    İkinci hatanda gelirsek while döngüsü içerisinde b=a%b yazmışsın. Bu satır a'nın b'ye bölümünden kalanı verir. b1 de b'ye bağladığı için sürekli pozitif tamsayı verecek ve while döngüsü de şart hep pozitif olacağından program sonsuz döngüye girip döngü dışındaki print satırını basmayacak.
  • Burdan mantık yürütüp algoritmayı yazmaya çalış.

    While döngüsü
  • Iqtam I kullanıcısına yanıt
    While döngüsü

    Bu şekilde yapmaya çalıştım. Okek üzerinden değil de direk obeb bulmak için. O yüzden % kullandım.



    < Bu mesaj bu kişi tarafından değiştirildi PsLıcks -- 15 Eylül 2018; 12:4:13 >
  • C++'da yaptığım OBEB OKEK bulma algoritması.Belki fikir verir :

     
    #include "stdafx.h"

    int ekok(int sayi1, int sayi2)
    {
    bool kontrol = true;
    int sonuc = 1;
    int i = 2;
    while (kontrol)
    {
    if (sayi1%i == 0 && sayi2%i == 0)
    {
    sonuc = sonuc * i;
    sayi1 = sayi1 / i;
    sayi2 = sayi2 / i;
    }
    else if (sayi1%i == 0 && sayi2%i != 0)
    {
    sonuc = sonuc * i;
    sayi1 = sayi1 / i;
    }
    else if (sayi1%i != 0 && sayi2%i == 0)
    {
    sonuc = sonuc * i;
    sayi2 = sayi2 / i;
    }
    if (sayi1%i != 0 && sayi2%i != 0)
    {
    i++;
    }
    if (sayi1 == 1 && sayi2 == 1)
    {
    kontrol = false;
    }
    }
    return sonuc;
    }

    int ebob(int sayi1, int sayi2)
    {
    bool kontrol = true;
    int sonuc = 1;
    int i = 2;
    while (kontrol)
    {
    if (sayi1%i == 0 && sayi2%i == 0)
    {
    sonuc = sonuc * i;
    sayi1 = sayi1 / i;
    sayi2 = sayi2 / i;
    }
    else if (sayi1%i == 0 && sayi2%i != 0)
    {
    sayi1 = sayi1 / i;
    }
    else if (sayi1%i != 0 && sayi2%i == 0)
    {
    sayi2 = sayi2 / i;
    }
    if (sayi1%i != 0 && sayi2%i != 0)
    {
    i++;
    }
    if (sayi1 == 1 && sayi2 == 1)
    {
    kontrol = false;
    }
    }
    return sonuc;
    }

    int main()
    {
    int sayi1, sayi2;
    printf("EKOK EBOB'unu almak için 2 sayı giriniz:\n");
    printf("1. sayı:");
    scanf_s("%d",&sayi1);
    printf("2. sayı:");
    scanf_s("%d", &sayi2);
    printf("Ekok:%d\n", ekok(sayi1,sayi2));
    printf("Ebob:%d\n", ebob(sayi1, sayi2));
    getchar();
    getchar();
    return 0;
    }




  • Iqtam I kullanıcısına yanıt
    Tamamdır sağolasın
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.