Şimdi Ara

Cözüldü

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
410
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Sorun cözüldü teşekkürler ben alttaki kodu kendi programıma uyarlamaya calısacağımdan dolayı herkesle aynı olmaz gibime geliyor :)



    < Bu mesaj bu kişi tarafından değiştirildi RonaldGreer -- 6 Mayıs 2012; 20:47:46 >



  • Bu soruyla 3. karşılaşım sanırım umarım herkes aynı ödevi vermez
    Burada çembere benzetmek işi kolaylaştırıyor. Önce sayıları sırayla yazdırmayı dene. Mesela n = 5 girildiğinde 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 ... bu şekilde her n değeri için sayıları ard arda yazdırmaya çalış. Bunu yaptıktan sonra sayıları sırayla kontrol ediceksin. Eğer 0 olmayanla karşılaştıysan, bu sayıdan sonra gelen ilk 0 olmayan sayıyı 0 yapmalısın. Burada tabi loop kullanmalısın çünkü bir sonraki 0 olmayan sayıdan önce kaç tane 0 var bilinmiyor, bu yüzden 0 gördüğün sürece diğer sayıya atlamalısın. Sonunda 0 olmayan ilk sayıyı gördüğünde onu 0 yapıp diğerine geçiceksin, bu şekilde tek sayı kalana kadar devam edicek. Ben aşağıda veriyorum ama çoğunlukla deneme yanılma yoluyla yaptığımdan açıklamak biraz güç, kolay gelsin.

     
    #include <stdio.h>
    #include <conio.h>

    int main()
    {
    int a[2000];
    int i = 0, j = 0, k, n, islem = 0;

    printf("n = ");
    scanf("%d", &n);
    if(n < 1 || n > 2000)
    {
    printf("\nhata: n 1 ile 2000 arasinda olmalidir.\n");
    getch();
    return 0;
    }

    printf("\nBaslangic: ");
    while(j < n)
    {
    a[j] = j+1; //1 den baslayarak sayilari diziye yerlestiriyoruz
    printf("%2d ", a[j++]);
    }

    putchar('\n');


    while(1)
    {
    //printf("%d ", a[i]);

    if(a[i]) //a[i] 0 degilse, sonuc bulunduysa yaz ve cik, bulunmadiysa bir sonraki 0 olmayan sayiyi 0 yap
    {
    //a[i] den bir sonraki elemandan baslamaliyiz
    if(i == n-1) j = 0; //eger dizinin sonundaysak bir sonraki eleman dizinin basidakidir
    else j = i+1; //dizinin sonunda degilsek j yi bir sonraki elemana esitliyoruz

    while(!a[j]) //a[i] den sonra dizinin ilk 0 olmayan elemanini buluyoruz
    if(j++ == n-1) //dizinin sonuna geldiysek tekrar basina geciyoruz
    j = 0;

    if(j+1 == a[i]) //sonuca ulasildiysa sonucu yaz ve cik
    {
    printf("\nSonuc: %d\nislem sayisi: %d\n", a[i], islem);
    break;
    }

    a[j] = 0; //a[j], a[i] den sonra 0 olmayan ilk eleman. Onu 0 yapiyoruz
    printf("%2d. islem: ", ++islem);
    for(k = 0; k < n; ++k)
    printf("%2d ", a[k]);
    putchar('\n');
    }

    if(i++ == n-1) //dizinin sonuna geldiysek tekrar basina geciyoruz
    {
    i = 0;
    }
    }
    getch();
    return 0;
    }




  • teşekkürler
  • Yapay Zeka’dan İlgili Konular
    Çözüldü
    4 yıl önce açıldı
    [ ÇÖZÜLDÜ ]
    2 yıl önce açıldı
    Sorun çözüldu
    2 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.