Arkadaslar öncelikle 1 haftadır uğraştığım bir sorum var.1den girilen n sayısına kadar n farklı rastgele sayıları ekrana C++'da nasıl yazdırabilirim. örneğin kullanıcı 5 girdi. çıktısı 2 1 5 3 4 veya 3 1 5 4 2 vb gibi sonuçlar istiyorum. iki sayı aynı ise değiştirene kadar döndürsün işlemi. Aşagıdaki yaptığım da bazen farklı bazen ise iki sayı aynı olabiliyor. Lütfen yardımmmmmmmmmm
#include "stdafx.h" #include <iostream> #include <time.h> using namespace std;
int _tmain(int argc, _TCHAR* argv[]) { srand((unsigned int) time(0)); int random,sayi; xx: int sayi_dizisi[10000]={};
cout<<endl<<endl<<" BU PROGRAM GIRDIGINIZ SAYIYA KADAR FARKLI SAYILAR URETECEKTIR"<<endl<<endl; cout<<" Lutfen istediginiz sayiyi giriniz."<<endl; cin>>sayi; cout<<endl<<endl<<"Girdiginiz Sayiya Kadar Farkli Olan Sayilar"<<endl;
for(int k=1;k<=sayi;k++) // 1'den girdiğiniz sayıya kadar döngü {
if(sayi_dizisi[k]==0){sayi_dizisi[k]=1+rand()%sayi;} // Sonuç 0 olduğunda 0'dan farklı bir sonuç elde etmek için. cout<<k<<". Sayi = "; cout<<sayi_dizisi[k]<<endl;
for(int i=1;i<=sayi;i++) { for(int j=i+1;j<=sayi;j++) // Sonucları diğerleriyle karşılaştırıp aynı olanı değiştirmek için { if(sayi_dizisi==sayi_dizisi[j]) { sayi_dizisi[j]=1+rand()%sayi;
} } } } goto xx;
////////////////////////
system("pause"); return 0; }
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
Kodun tamamını yazmayacağım ama söyleyeyim çözüm yollarından bir tanesini. N klavyeden girilecek galiba, N i klavyeden okuduktan sonra int a[N] = {0}; diye tanımlama yaptın. a dizisini bayrak dizisi olarak tutacağız. while (a[index = rand() % N]) ; a[index] = 1; cout << a[index];
Mantığına gelirsek dizinin bütün elemanlarını sıfırladık. Bunun anlamı bütün sayılar daha hiç çıkmamış. While döngüsüyle a nın herhangi bir elemanı 1 olduğu sürece dönüyor. Yani 1 ler çıkmış sayılar olduğuna göre ilk sıfır görünce çıkacak. O sıfırı döngü çıkışında 1 yapıp ekrana basıyorsun. Dediğim gibi kod tam değil yazdığım while ın kaç kere çalışacağını sen halledersin.
Edit : While ın gövdesinde boş deyim var, bilerek yazdım yani sadece noktalı virgülü.
< Bu mesaj bu kişi tarafından değiştirildi 4kalan -- 24 Aralık 2013; 23:33:13 >
örneğin kullanıcı 5 girdi. çıktısı 2 1 5 3 4 veya 3 1 5 4 2 vb gibi sonuçlar istiyorum. iki sayı aynı ise değiştirene kadar döndürsün işlemi.
Aşagıdaki yaptığım da bazen farklı bazen ise iki sayı aynı olabiliyor.
Lütfen yardımmmmmmmmmm
#include "stdafx.h"
#include <iostream>
#include <time.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
srand((unsigned int) time(0));
int random,sayi;
xx: int sayi_dizisi[10000]={};
cout<<endl<<endl<<" BU PROGRAM GIRDIGINIZ SAYIYA KADAR FARKLI SAYILAR URETECEKTIR"<<endl<<endl;
cout<<" Lutfen istediginiz sayiyi giriniz."<<endl;
cin>>sayi;
cout<<endl<<endl<<"Girdiginiz Sayiya Kadar Farkli Olan Sayilar"<<endl;
////////////////////////////////////////////////////////////////////////////////
for(int k=1;k<=sayi;k++) // 1'den girdiğiniz sayıya kadar döngü
{
if(sayi_dizisi[k]==0){sayi_dizisi[k]=1+rand()%sayi;} // Sonuç 0 olduğunda 0'dan farklı bir sonuç elde etmek için.
cout<<k<<". Sayi = ";
cout<<sayi_dizisi[k]<<endl;
for(int i=1;i<=sayi;i++)
{
for(int j=i+1;j<=sayi;j++) // Sonucları diğerleriyle karşılaştırıp aynı olanı değiştirmek için
{
if(sayi_dizisi==sayi_dizisi[j])
{
sayi_dizisi[j]=1+rand()%sayi;
}
}
}
}
goto xx;
////////////////////////
system("pause");
return 0;
}
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.