Şimdi Ara

1'den N'e Kadar N farklı Sayılar

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
2
Cevap
0
Favori
564
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 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<PROGRAM GIRDIGINIZ SAYIYA KADAR FARKLI SAYILAR URETECEKTIR"< 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;
    }







  • 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 >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.