IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   C ve C++ (https://www.ircforumlari.net/c-ve-c/)
-   -   Floyd Üçgeni (Floyd’s Triangle) (https://www.ircforumlari.net/c-ve-c/457034-floyd-ucgeni-floyd-s-triangle.html)

aSi 27 Şubat 2012 18:18

Floyd Üçgeni (Floyd’s Triangle)
 
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Robert Floyd tarafından tasarlanan bir sayı üçgenidir. Üçgen, her satırda, o satır kadar elemandan oluşan ve ardışık sayma sayılarının satırlara dağıtılması ile şekillenen, sağa yaslı bir dik üçgen olarak tanımlanabilir: Floyd üçgeninin ilk sütununda bulunan sayılara, merkezi poligon sayıları (central polygon numbers) veya tembel pizzacı serileri (lazy caterer’s sequence) isimleri verilir. Bu ikinci isimlendirme, bir pizzacının, pizzasını en az bıçak darbesi ile en çok parçaya ayırma hevesinden gelmektedir.Floyd üçgeninin ilk sütununu oluşturan seri, aşağıdaki formül ile hesaplanabilir: k = (n2 + n + 2) / 2 , bu denklemdeki n satır sayısı, k ise bu satırdaki ilk elemandır (veya aynı formül merkezi poligon sayılarını bulmak için de kullanılır)
Floyd üçgeninin diğer bir özelliği ise, herhangi bir satırdaki sayıların toplamının aşağıdaki formül ile bulunabilmesidir:
n(n2 + 1)/2

Kod:

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

int main()
{
  int satir, i, j ,deger=1,sayac1=0,satir_sayi,k,eleman_toplami;//
  printf("Ucgenin yuksekligini giriniz:");
  scanf("%d", &satir);/*aslında burada kaç satırdan oluşacağını soruyoruz.*/
  printf("hangi satirde islem yapmak istiyorsunuz:");
  scanf("%d",&satir_sayi);
 
  for(i=0; i<satir; i++)//sutun için for
  {
      sayac1++;
      if(deger<=10)
      {
        for(j=0; j<=i;j++)//2. satır ie 2 sayi  yaz demektir:
        {
            printf("%d  ",deger);
            deger++;
        }
        printf("\n\n");
        if(satir_sayi+1==sayac1)
        {
            k=( (satir_sayi*satir_sayi) + satir_sayi+2 )/2;//satirin ilk elemanını bulmak için  k o satırın ilk elemanıdır...
            eleman_toplami=( (satir_sayi+1)*((( satir_sayi+1)*(satir_sayi+1))+1 ) )/2;
            //satir sayisini 1 arttırarak işlem yapmamın sebebi satir sayisini 0 dan başlamasıdır..
           
        }
      }
     
      else
      {
        sayac1=0;
        for(j=0; j<=i;j++)
        { sayac1++;
            printf("%d ",deger);
            deger++;
        }
        printf("\n\n");
      }
      if(satir_sayi==sayac1)
      {
        k=( (satir_sayi*satir_sayi) + satir_sayi+2 )/2;//burada k o satırın ilk elemanını verir bizlere...
        eleman_toplami=( (satir_sayi+1)*( (satir_sayi+1)*(satir_sayi+1)+1 ) )/2;
      }
  }
  printf("\n");
  printf("satir sayisi %d\n\n",sayac1-1);
  printf("satirin ilk elemani k= (n*n+n+2)/2 fomulunden %d \n\n",k);
  printf("secilen satirin elemanlari toplami n(n*n+1)/2 formulunden  %d\n\n",eleman_toplami);
  //buradaki n satir_sayisini ifade etmektedir
  getch();
 
}





Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 06:23.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk