C ile ilgili yardım!

fdyonur3
12-11-2011, 13:03   |  #1  
OP Taze Üye
Teşekkür Sayısı: 0
9 mesaj
Kayıt Tarihi:Kayıt: Kas 2011

Merhabalar;

Benim sorunum şu,1 ile 8 arasında random sayı seçip bunları bir array'e attım ama sayılar birbirinden farklı olmadı,bu yüzden ben de array içinde bir sayıdan birden fazla bulduğunda seçme işlemini tekrar yapması için de kod ekledim ama yinede bir sonuç alamadım...

İkinci sorunum ise bu seçme olayını yapıyor ama programı tekrar çalıştırdığımda sayılar hep aynı kalıyor yani bir kere seçiyor,ben kodda değiştirme yapmadığım sürece hep aynı sayılar karşıma çıkıyor,<time.h>'ı da eklememe rağmen...

Şimdiden teşekkürler...

censez41
12-11-2011, 13:50   |  #2  
censez41 avatarı
Yıllanmış Üye
Teşekkür Sayısı: 3
1,705 mesaj
Kayıt Tarihi:Kayıt: Nis 2009

#include <cstdlib>
#include <iostream>
#include <windows.h>
using namespace std;

int main(int argc, char *argv[])
{
     srand(GetTickCount ());
    int sayi = rand()%7+1;
       printf("sayi %d \n",sayi);
    system("PAUSE");
    return EXIT_SUCCESS;
}
1-8 arasında rasgele sayı üretir.

fdyonur3
12-11-2011, 14:06   |  #3  
OP Taze Üye
Teşekkür Sayısı: 0
9 mesaj
Kayıt Tarihi:Kayıt: Kas 2011
Alıntı: censez41  
#include
#include
#include
using namespace std;

int main(int argc, char *argv[])
{
     srand(GetTickCount ());
    int sayi = rand()%7+1;
       printf("sayi %d \n",sayi);
    system("PAUSE");
    return EXIT_SUCCESS;
}
1-8 arasında rasgele sayı üretir.

Teşekkür ederim,"srand(GetTickCount ()); " koyunca programı her çalıştırdığımda farklı sayılar üretti ama hala bir sayıdan birden fazla üretme sorununa çözüm bulamadım.

censez41
12-11-2011, 14:24   |  #4  
censez41 avatarı
Yıllanmış Üye
Teşekkür Sayısı: 3
1,705 mesaj
Kayıt Tarihi:Kayıt: Nis 2009

farklı bir sayı üretmesi için bir komut yok onun programlamak sana kalmış
her defasında  sayı ürettikten sonra döngü içinde daha önce bu sayının üretilip üretilmediğine bakıp eğer üretilmişse başka sayı üretmesi için programı geri döndür

fdyonur3
12-11-2011, 14:40   |  #5  
OP Taze Üye
Teşekkür Sayısı: 0
9 mesaj
Kayıt Tarihi:Kayıt: Kas 2011
Alıntı: censez41  
farklı bir sayı üretmesi için bir komut yok onun programlamak sana kalmış
her defasında  sayı ürettikten sonra döngü içinde daha önce bu sayının üretilip üretilmediğine bakıp eğer üretilmişse başka sayı üretmesi için programı geri döndü
İşte sorunum bu zaten,o kodlamayı yaptıktan sonra bile hala aynı sayıdan birden fazla üretiyor...

Hatta kodun o kısmını yazayım;

for(i=0;i<8;i++)
    {
                    srand(GetTickCount ());
                    a=rand()%8+1;

                    for(n=0;n<i;n++)
                    {
                                    if(a==a[n])
                                    {
                                                          a=rand()%8+1;
                                    }  
                    }
    }

censez41
12-11-2011, 14:44   |  #6  
censez41 avatarı
Yıllanmış Üye
Teşekkür Sayısı: 3
1,705 mesaj
Kayıt Tarihi:Kayıt: Nis 2009

void main()
{
int n,deger,j,w,m;
do
{
printf("KAC KOLON OYNAMAK ISTERSINIZ?\n");
scanf("%d",&n);
if(n<=0)
printf("KOLON SAYISI 0 veya Daha Kucuk OLAMAZ\n");
}
while(n<=0);

srand(time(NULL));
for(int i=0;i
{
for(j=0;j<6;j++)
{

deger=rand()%49+1;
for(m=0;m<=j;m++);
if(kolon[m]==deger)
deger=rand()%49+1;
else
kolon[j]=deger;


}
goster();
printf("%d.kolon\n",i+1);

for(w=0;w<6;w++)
{
printf("=>%d\t",kolon[w]);
}
printf("\n");
printf("*******************\n");
}
}

void goster()

{
int gec,i,j;
for(i=0;i<5;i++)
{
for(j=i+1;j<6;j++)
{
if(kolon[j]
{
gec=kolon;
kolon=kolon[j];
kolon[j]=gec;
}
}
}
}

http://www.genckafe.net/forum/c- ... -loto-programi.html

sayısal loto programı aradığın cevapları bu kodların içnden bulabilirsin

fdyonur3
12-11-2011, 14:57   |  #7  
OP Taze Üye
Teşekkür Sayısı: 0
9 mesaj
Kayıt Tarihi:Kayıt: Kas 2011
Alıntı: censez41  
void main()
{
int n,deger,j,w,m;
do
{
printf("KAC KOLON OYNAMAK ISTERSINIZ?\n");
scanf("%d",&n);
if(n<=0)
printf("KOLON SAYISI 0 veya Daha Kucuk OLAMAZ\n");
}
while(n<=0);

srand(time(NULL));
for(int i=0;i
{
for(j=0;j<6;j++)
{

deger=rand()%49+1;
for(m=0;m<=j;m++);
if(kolon[m]==deger)
deger=rand()%49+1;
else
kolon[j]=deger;


}
goster();
printf("%d.kolon\n",i+1);

for(w=0;w<6;w++)
{
printf("=>%d\t",kolon[w]);
}
printf("\n");
printf("*******************\n");
}
}

void goster()

{
int gec,i,j;
for(i=0;i<5;i++)
{
for(j=i+1;j<6;j++)
{
if(kolon[j]
{
gec=kolon;
kolon=kolon[j];
kolon[j]=gec;
}
}
}
}

http://www.genckafe.net/forum/c- ... -loto-programi.html

sayısal loto programı aradığın cevapları bu kodların içnden

Tekrar teşekkür ederim ama bu kodda da benim yaptığımın bir benzeri yapılmış,neyse birkaç şey daha deniyeyim...

censez41
12-11-2011, 15:04   |  #8  
censez41 avatarı
Yıllanmış Üye
Teşekkür Sayısı: 3
1,705 mesaj
Kayıt Tarihi:Kayıt: Nis 2009

for(i=0;i<8;i++)
    {
                    srand(GetTickCount ());
                    a=rand()%8+1;
bas:
                    for(n=0;n
                    {
                                    if(a==a[n])
                                    {
                                                          a=rand()%8+1;
                                                         tekrar=1;
                                    }  


                    }

if (tekrar==1)

{

tekrar=0

goto bas;
}
    }
şeklinde dene çünkü sen aynı sayıdan olunca başka bir sayı türetiyorsun ama bu sayının kontrolu için döngüyü baştan başlatmıyorsun buda aynı rakamların olmasına neden oluyor

Son Düzenleme: censez41 ~ 12 Kasım 2011 15:05
fdyonur3
12-11-2011, 15:25   |  #9  
OP Taze Üye
Teşekkür Sayısı: 0
9 mesaj
Kayıt Tarihi:Kayıt: Kas 2011
Alıntı: censez41  
for(i=0;i<8;i++)
    {
                    srand(GetTickCount ());
                    a=rand()%8+1;
bas:
                    for(n=0;n
                    {
                                    if(a==a[n])
                                    {
                                                          a=rand()%8+1;
                                                         tekrar=1;
                                    }  


                    }

if (tekrar==1)

{

tekrar=0

goto bas;
}
    }
şeklinde dene çünkü sen aynı sayıdan olunca başka bir sayı türetiyorsun ama bu sayının kontrolu için döngüyü baştan başlatmıyorsun buda aynı rakamların olmasına neden oluyor
Hmm,evet döngü tekrar başlamıyormuş sizin yaptığınızı anladım da sizin yaptığınızı "go to" komutunu kullanmadan nasıl yapabilirm peki?