C - Diziler Hakkında Ufak Bir Soru
-
#include <cstdlib>
#include <iostream>
//#include <ctime>
using namespace std;int main(int argc, char *argv[])
{
int es,i;
int s[999];
int r[999];
int eleman,ou,kes,d,rasgel,j;
float dag;
cout<<"eleman saysısını giriniz"<<endl;
cin>>es;
printf(" bu program %d elemanli karisik bir dizi olusturacak \n",es);
// sıralı dizi oluştur
for (i=0;i<=es-1;i++)
{
s[i]=i+1;//sıralı dizi
}
// sıralı dizi
for (i=0;i<=es-1;i++)
{
cout<<i<<","<<s[i]<<endl;
}
cout<<"xxxxxxxxxxxxxxx"<<endl;
kes=es-1; //kes s dizisinde kalan eleman sayısının o anki maks indisi bu indis ilk başta es-1 e eşittir "es" eleman sayısı sabit kes "kalan eleman sayısı" değişir
for (i=0;i<=es-1;i++) // dizi yerleştirme döngüsü
{
srand(time(0));
ou=kes+1;// rand anahtarına kes verirsek mod alacağı için 0 - (kes-1) aralığında sayı üretir o yüzden kes+1 yapıyoruz
rasgel=rand()%ou;
r[i]=s[rasgel];
dag=100*rasgel/ou;
cout<<"sira "<<i<<" secilen eleman "<<rasgel<<" uzay,"<<kes+1<<" dagilim"<<dag<<endl;//monitör
for (d=rasgel;d<=kes;d++)//elemanları sola kaydırma döngüsü
{
s[d]=s[d+1];
}
kes=kes-1;
}
cout<<"xxxxxxx"<<endl;
yazdir:
for (i=0;i<=es-1;i++)
{
cout<<i<<","<<r[i]<<endl;
}
saglama:
// tekrarlanan eleman var mı diye bakalım
for(i=0;i<=es-2;i++)
{
for (j=i+1;j<=es-1;j++)
{
if(r[i]==r[j])
{
cout<<"z2 tuttun algoritma yanlış";
}
}
}
system("PAUSE");
return EXIT_SUCCESS;
} -
Gece oturup cok benzerini yazdim ama yine de tekrar cok sagol hocam
-
aslında dün 1130 gibi yazmıştım ama siteye erişimde problem vardı..
-
ltcelik bunu yazdı:
-----------------------------seretide'ın yönteminde ise zaten var olan elemanların ( bir türlü üretilmeyen "27" ve "63" de dizinin elemnaları olarak mevcut) yerlerini şansa bağlı olarak değiştirdiğimizden döngünün sonsuz ıraksaması gibi bir sorunda ortaya çıkmayacaktır.. ancak bu sefer de seçmesi gereken eleman indislerini seçerken aynı sorun ortaya çıkıyor..
-----------------------------ne demek istediğini pek anlayamadım ne diye 2 dizi kullanıyosunki
dizideki her elemanı dizideki rastgele başka bi elemanla değiştiriyosun sadece mesela
1 2 3 4 5 dizisi
1. sayı için random 3 çıktı
3 2 1 4 5 oldu
2. sayı için 3 çıktı
3 1 2 4 5 oldu
3.sayı için 5 çıktı
3 1 5 4 2 oldu
bu şekilde bunu dizideki her eleman içinde yapıyosun elinde rastgele bi dizi oluyo.Kaç sayı olursa olsun toplam n adımda bitiyo herşey
-
Haklısın tam anlamışım yöntemi...
