Permutasyon-Kombinasyon?

M.Aksoy
16-04-2011, 18:53   |  #1  
OP Taze Üye
Teşekkür Sayısı: 0
11 mesaj
Kayıt Tarihi:Kayıt: Nis 2011

Arkadaşlar Hocamızın 25 Puanlık Bir C Sorusu Sordu Birtürlü Yapamadım.
Soru Şu :

Klavyeden Girilen Sayının A Permutasyonunu B Kombinasyonunu Hesaplayan Hesaplayan Kulanıcının İsteğine Bağlı Olarak Programı Sollandıran Kulanıcı Sollandırmak İstemeyip Aynı Pencerede Yapılan Bir C Programı Yazınız.

Şimdiden Teşekür Ederim.

£l£ssar
16-04-2011, 19:13   |  #2  
Üye
Teşekkür Sayısı: 0
72 mesaj
Kayıt Tarihi:Kayıt: Nis 2011

bana permutasyon kombinasyonu anlat sana programı anlatıyım Ağzı kulaklarına varıyor yada anlatmaya çalışıyim. çok uzun zamandır görmüyorum c nin yüzünü. bu arada komut istemi ile çalışan c değil mi? yani turbo c??

M.Aksoy
16-04-2011, 19:25   |  #3  
OP Taze Üye
Teşekkür Sayısı: 0
11 mesaj
Kayıt Tarihi:Kayıt: Nis 2011
Alıntı: £l£ssar  
bana permutasyon kombinasyonu anlat sana programı anlatıyım Ağzı kulaklarına varıyor yada anlatmaya çalışıyim. çok uzun zamandır görmüyorum c nin yüzünü. bu arada komut istemi ile çalışan c değil mi? yani turbo c??
Benim Kulandıgım Derleyeci Dev C++ Ama Dediğin'de Doğru :) Matematiğim Allaha Çok Şükür İyi Ama Hocamız Sağolsun Bize "A" Harfini Öğretip Okumamızı Bekliyor! Yeni Öğrenim Sistemi Bu Olsa Gerek Birde 25 Puan Koyuyor Bulmasan Sınıfta Kalacan..

£l£ssar
16-04-2011, 19:35   |  #4  
Üye
Teşekkür Sayısı: 0
72 mesaj
Kayıt Tarihi:Kayıt: Nis 2011

aynı durumda kaldım emin ol. sınavda hocam ben bu matematik işlemini bilmiyorum siz söyleyin yapiim dedim ama söylemedi. bende sınavı boş geçirdim. nette yok mu böyle bi program. olur diye tahmin ediyorum. yapmışlardır buna benzer programlar..

M.Aksoy
16-04-2011, 19:49   |  #5  
OP Taze Üye
Teşekkür Sayısı: 0
11 mesaj
Kayıt Tarihi:Kayıt: Nis 2011

İnancın Olsun 3 Gündür Türk Ve Yabancı Forumları Geziniyorum Birtane Bile Bulamadım. Bulduklarım C++ Dilinde Yazılmış Programlardır. C'den İstiyor İşte Son Umudum Burası İnşallah Yardımı Dokunan Arkadaşlarım Olur.

alp_tug
17-04-2011, 03:42   |  #6  
Taze Üye
Teşekkür Sayısı: 0
5 mesaj
Kayıt Tarihi:Kayıt: Nis 2011

Merhaba!

Yanılmıyorsam permutasyon ve kombinasyon tanımları aşağıdaki gibi olacak:

P(n,r)= n! / (n-r)!
C(n,r)= n! / ((n-r)! * r!)

Tabi buradaki ilk girilen sayı, permutasyondaki ve kombinasyondaki n değerine tekabül ediyor.
İkinci girilen A sayısı, permutasyondaki r değerine,
Üçüncü girilen B sayısı, permutasyondaki r değerine tekabül ediyor diye düşündüm.


Algoritmasını ana hatlarıyla yazarsak:
1) Sayıları al.
2) Sayıları kontrol için ekrana yazdır.
3) Verilen sayılara göre permutasyon ve kombinasyon al.
- Önce n! i bul. Sonucu (n-r)! e böl. Sonucu permutasyon sonucu olarak yazdır.
- Önce n! i bul. Sonucu (n-r)! e böl. Çıkan sonucu r! e böl. Sonucu combinasyon olarak yazdır.

n! i bulmak için:

n=Sayı;
r=A;

soln_1=1;
i=1;
while(i<=n)

{

soln_1=soln_1*i;

i++;
} /* n! bulundu */


i=1;
while(i<=(n-r))

{

soln_1=soln_1/i;

i++;
} /* n! / (n-r)!  bulundu */


printf("P(Sayi,A) = %d",soln_1);

Bu kod dizisinin başına

r=A; yerine  r=B; yaz. soln_1 yerine de soln_2 eklersen

yazarsan B değeri için n! / (n-r)! ı hesaplamış olursun. Bir daha aşağıdaki yolla bu sonucu bölersen kombinasyonu da hesaplamış olursun:

while(i<=r)

{

soln_2=soln_2/i;

i++;
} /* n! / ((n-r)!*r!)   bulundu */

Bunda da soln_2 yu yazdır:
printf("C(Sayi,B) = %d",soln_2);

Bayağıdır bu permutasyon kombinasyon meselesine bakmamıştım. O yüzden kodu kontol etmeni tavsiye ederim.
Aynı ekranda tekrar tekrar hesap yaptırabilmek istiyorsan programın başında bütün programı kapsayacak şekilde do while yap. İşlemi bir kez tamamlayınca bir karakter aldır. Do while loopu bu karakteri istenilen karakterle karşılaştırsın. Koşul sağlanıyorsa devam etsin. Aksi halde dursun. Böyle yapabilirsin:

do
{
char devam="d"
...
scanf("%c",&a)
} while (a==devam) ;

Eğer alınan a değeri, loopun devamı için gerekli olan devam karakteriyle aynıysa (burada devam karakteri d) bir daha permutasyon ve kombinasyon hesabına devam et demek.


Benden bu kadar umarım işini görür.

M.Aksoy
17-04-2011, 10:54   |  #7  
OP Taze Üye
Teşekkür Sayısı: 0
11 mesaj
Kayıt Tarihi:Kayıt: Nis 2011

Allah Razı OLsun Kardesim'de Anlıyamadım Bu Yazdıklarından :(

Şöyle;

#include. ( ile başlayan Kod dizilimi lazım bana. Virgülü bile eksik olursa ben koyamam :( )

M.Aksoy
17-04-2011, 19:15   |  #8  
OP Taze Üye
Teşekkür Sayısı: 0
11 mesaj
Kayıt Tarihi:Kayıt: Nis 2011

Güncel :(

M.Aksoy
18-04-2011, 11:19   |  #9  
OP Taze Üye
Teşekkür Sayısı: 0
11 mesaj
Kayıt Tarihi:Kayıt: Nis 2011

Yarın Teslim Etmem Gerekiyor Ödevi Arkadaslar Yapabilen Varsa Bir Zahmet Halletsin Şunu Ya :(

scallywag
19-04-2011, 05:29   |  #10  
Yıllanmış Üye
Teşekkür Sayısı: 0
379 mesaj
Kayıt Tarihi:Kayıt: Ara 2007

Umarım geç kalmamışımdır. kod çalışıyor kontrol ettim. başarılar ama ödevleri bu şekilde yapmaya devam edersen ilerde çok sıkıntı yaşarsın söyleyeyim :)

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>


int faktoriyel(int);
int permutasyon(int,int);
int kombinasyon(int,int);


int main()
{
    int sayi1, sayi2, sonuc, sonuc2;
s:    
printf("\nIlk sayiyi giriniz: \n");
scanf("%d", &sayi1);
printf("Ilk sayiyi giriniz: \n");
scanf("%d", &sayi2);

printf("Permutasyon: %d\n", permutasyon(sayi1, sayi2));
printf("Kombinasyon: %d\n", kombinasyon(sayi1, sayi2));
l:
printf("Baska bir islem yapmak istiyor musunuz? Evet(1), Hayir (2) ");

switch(getch()) {
case '1':


goto s;
case '2':
break;
default:
printf("Gecersiz secim!\\n");
goto l; 
break;
}

}
int faktoriyel(int sayi)
{
    int fakt=1;
    int i=1;
    while(i<=sayi)
    {
     fakt=fakt * i;
     i=i +1;          


    }
return i;
}

int permutasyon (int sayi1, int sayi2)
{
return faktoriyel(sayi1)/faktoriyel(sayi1-sayi2);
}
int kombinasyon (int sayi1, int sayi2)
{
return faktoriyel(sayi1)/(faktoriyel(sayi1-sayi2) * faktoriyel(sayi2));

}

Son Düzenleme: scallywag ~ 19 Nisan 2011 05:29
M.Aksoy
19-04-2011, 13:57   |  #11  
OP Taze Üye
Teşekkür Sayısı: 0
11 mesaj
Kayıt Tarihi:Kayıt: Nis 2011

Tam Zamanında Yetiştin Allah Razı Olsun. Stdafx te bende hata ama sildim orayı çallıştı. :) Dediğinde Haklısın Bu Şekil Gidersem İleri Zamanlarda Sorunlarla Karşılacağımı Biliyorum Ama Yemin Ediyorum Hayatım Boyunca Görebilecegin En Kötü Öğretim Görevlisi Baba Dersle Alakası Yok Slaytı Açıyor Düz Bize Okuyor Seste Çıkaramıyoruz Direk Tehtid. Ders Sonundada Böyle Ödevler Veriyor Birde 25 Puan Gelde Kafayı Yeme Neyse Fazla Uzattım :) Allah Razı Olsun Tekrardan.

Kapalı Hesap (101323)
19-04-2011, 14:47   |  #12  
Kapalı Hesap
Teşekkür Sayısı: 0
3,337 mesaj
Kayıt Tarihi:Kayıt: Ara 2008

c#  içinde böyle ödevler verilirse  c# ın  içindeki  Math  sınıfını öneririm  birde  kullanıcıya bu  illa bir kez   sorulacağı için do while döngüsü  tam  bu tür projeler içindir
koddan yok  denecek kadar az anlarım  ama şöyle bir örnek  verebilirim  
mesela konsol için
do  
char cevap = 'H'
Console.Write("mutlak değeri alınacak sayıyı girin ");
int mutlak ;
mutlak = Int32.Parse(Console.ReadLine());
While(int i = 0   i >= mutlak  );
char cevap = Console.KeyChar();
cevap = 'E';

(
  if(Math.Abs = mutlak )
(
Console.WriteLine("mutlak değer = " , mutlak);

else

)
Console.WritELine("yanlış ifade ");

   
)


// kodun anlamı  
// keychar kullanıcının gireceği değeri okur
// do while bu döngü en faz bir defa döneceği için kullanılır
// if else şart ifadeleridir  
// veri tiplerini zaten biliyor olmalısın

derleyici kullanmadan yazdığım  için tam olmadı  bunu dahada geliştirebilirsin   c#  için bir örnek

Son Düzenleme: Kapalı Hesap (212477) ~ 19 Nisan 2011 14:49
harun.ç
19-04-2011, 18:27   |  #13  
Taze Üye
Teşekkür Sayısı: 0
1 mesaj
Kayıt Tarihi:Kayıt: Nis 2011

aynı soruya farklı bir cevap bulabılirseniz çok sevinirim teşşekürler