Visual basic hk

ByPerPer

Uzman üye
23 Mar 2018
1,986
96
İstanbul
ben bir yarışma programı yapcamda şimdi 20 soru olcak ama 1 yarışmada 10 soru olcak şimdi diyelim 2 kişi yaptı bunları yani soruları bitirdi şimdi artık eski soruları tekrar sormasın yani random olarak atasın
Yani sizden istediğim;

Oyna tuşuna bastığında random bir form'a atasın
 

ShuJaira

Kıdemli Üye
26 Tem 2010
4,960
17
N-map
Kod:
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using FirebirdSql.Data.FirebirdClient; 

[COLOR="Red"]namespace SoruKaristirma[/COLOR] 
{ 

    public partial class Form1 : Form 
    { 
        public Form1() 
        { 
            InitializeComponent(); 
        } 

        private **** button1_Click(object sender, EventArgs e) 
        { 
            string baglanti = "Data Source= localhost;Database=D:\\Delphi 2010 Projeler\\Bares\\Data\\BARES.FDB;User=SYSDBA;password=masterkey;Dialect=1;Role=;Connection lifetime=15;Pooling=true;Packet Size=4096;"; 
            string sorgu = "Select SORU,SECENEK1,SECENEK2,SECENEK3,SECENEK4 from SORULAR"; 
             
            FbConnection fbc = new FbConnection(baglanti);           
            FbDataAdapter fbda = new FbDataAdapter(sorgu, fbc); 
            DataSet dt = new DataSet(); 

            fbda.Fill(dt); 
            List<string>[] sonuc = soruKaristir.Karistir 
            (dt.Tables[0].Rows); 

            fbc.Close(); 
        } 
    } 

    public static class soruKaristir 
    { 
        public static int cevapSayisi = 4; // sorular kaç şıklı 
        public static List<string>[] Karistir(DataRowCollection Alanlar) 
        { 
            // [COLOR="red"]Gelen veriyi cacheeyip dönüş değeri olarak kullanacağız [/COLOR]
            List<string>[] GidecekVeri = new List<string>[cevapSayisi + 1]; 
            // [COLOR="red"]her şık ve sorunun kendisi için dizi olarak oluşturduğumuz listenin her dizi elemanı için tanımlamasını yapıyoruz. [/COLOR]
            for (int sayac = 0; sayac < (cevapSayisi + 1); sayac++) GidecekVeri[sayac] = new List<string>(); 

            for (int sayac = 0; sayac < Alanlar.Count; sayac++) 
            { 
               for (int sayac2 = 0; sayac2 < (cevapSayisi + 1); sayac2++) 
               {   // Listeye verileri atıyoruz 
                    GidecekVeri[sayac2].Add(Alanlar[sayac].Field<string>(sayac2)); 
               } 
            } 
            //[COLOR="red"] Kalan soruların indexlerini tutacak listemiz[/COLOR]. 
            List<int> dagitilmayanElemanlar = new List<int>(); 
            for (int ss = 0; ss < Alanlar.Count; ss++) dagitilmayanElemanlar.Add(ss); // Satır numaralarını ekleyelim 
            //[COLOR="red"] Elemanların yerlerini değiştirirken kullanacağımız takas listesi [/COLOR]
            List<string>[] takas = new List<string>[cevapSayisi + 1]; 
            for (int sayac = 0; sayac < cevapSayisi + 1; sayac++) 
            {    
               takas[sayac] = new List<string>(); 
               takas[sayac].Add(""); 
            } 
            Random rnd = new Random(); 

            for (int sayac = 0; sayac < Alanlar.Count; sayac++) 
            {   //[COLOR="red"] şıkları karıştırmak için boşta kalan cevapları tutacak liste [/COLOR]
               List<int> secenekSira = new List<int>(); 
               for (int ss = 0; ss < cevapSayisi + 1; ss++) secenekSira.Add(ss); 
               // dağıtılmayan soruların sayısı kadar rastgele sayı üret. 
               int soruSiraRnd = rnd.Next(0, dagitilmayanElemanlar.Count); 
               takas[0][0] = GidecekVeri[0][dagitilmayanElemanlar[soruSiraRnd]]; // ilk elemana soruyu yaz 
               secenekSira.RemoveAt(0); // şıkları karıştırmak için listeden soruyu çıkart 
               for (int ss = 1; ss < cevapSayisi + 1; ss++) 
               {   // Şıkları rastgele seç ve sırayla takas listesine ekle 
                    int secenekSiraRnd = rnd.Next(0, secenekSira.Count); 
                    takas[ss][0] = GidecekVeri[secenekSira[secenekSiraRnd]][dagitilmayanElemanlar[soruSiraRnd]]; 
                    secenekSira.RemoveAt(secenekSiraRnd); // aynı şık tekrar seçilmesin diye listeden çıkart 
               } 
               for (int ss = 0; ss < cevapSayisi + 1; ss++) 
               {   // [COLOR="red"]seçilen sorunun yerine işleme alınmamış soru aktarılıp aktarılan soru yerine karıştırılmış soru ekleniyor [/COLOR]
                    GidecekVeri[ss][dagitilmayanElemanlar[soruSiraRnd]] = GidecekVeri[ss][dagitilmayanElemanlar.Count - 1]; 
                    GidecekVeri[ss][dagitilmayanElemanlar.Count - 1] = takas[ss][0]; 
               } 
               dagitilmayanElemanlar.RemoveAt(soruSiraRnd); // işleme alınmışı referans listesinden çıkartıyoruz. 
            } 
            return GidecekVeri; 
        } 
    } 

}


2. kısa yöntem :
Kod:
 Random rastGele = new Random();        
        int soru = rastGele.Next(1,/*Soru Sayısı*/);
        Label soruBir = new Label();
soruBir.Text =
 

ByPerPer

Uzman üye
23 Mar 2018
1,986
96
İstanbul
Kod:
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using FirebirdSql.Data.FirebirdClient; 

[COLOR="Red"]namespace SoruKaristirma[/COLOR] 
{ 

    public partial class Form1 : Form 
    { 
        public Form1() 
        { 
            InitializeComponent(); 
        } 

        private **** button1_Click(object sender, EventArgs e) 
        { 
            string baglanti = "Data Source= localhost;Database=D:\\Delphi 2010 Projeler\\Bares\\Data\\BARES.FDB;User=SYSDBA;password=masterkey;Dialect=1;Role=;Connection lifetime=15;Pooling=true;Packet Size=4096;"; 
            string sorgu = "Select SORU,SECENEK1,SECENEK2,SECENEK3,SECENEK4 from SORULAR"; 
             
            FbConnection fbc = new FbConnection(baglanti);           
            FbDataAdapter fbda = new FbDataAdapter(sorgu, fbc); 
            DataSet dt = new DataSet(); 

            fbda.Fill(dt); 
            List<string>[] sonuc = soruKaristir.Karistir 
            (dt.Tables[0].Rows); 

            fbc.Close(); 
        } 
    } 

    public static class soruKaristir 
    { 
        public static int cevapSayisi = 4; // sorular kaç şıklı 
        public static List<string>[] Karistir(DataRowCollection Alanlar) 
        { 
            // [COLOR="red"]Gelen veriyi cacheeyip dönüş değeri olarak kullanacağız [/COLOR]
            List<string>[] GidecekVeri = new List<string>[cevapSayisi + 1]; 
            // [COLOR="red"]her şık ve sorunun kendisi için dizi olarak oluşturduğumuz listenin her dizi elemanı için tanımlamasını yapıyoruz. [/COLOR]
            for (int sayac = 0; sayac < (cevapSayisi + 1); sayac++) GidecekVeri[sayac] = new List<string>(); 

            for (int sayac = 0; sayac < Alanlar.Count; sayac++) 
            { 
               for (int sayac2 = 0; sayac2 < (cevapSayisi + 1); sayac2++) 
               {   // Listeye verileri atıyoruz 
                    GidecekVeri[sayac2].Add(Alanlar[sayac].Field<string>(sayac2)); 
               } 
            } 
            //[COLOR="red"] Kalan soruların indexlerini tutacak listemiz[/COLOR]. 
            List<int> dagitilmayanElemanlar = new List<int>(); 
            for (int ss = 0; ss < Alanlar.Count; ss++) dagitilmayanElemanlar.Add(ss); // Satır numaralarını ekleyelim 
            //[COLOR="red"] Elemanların yerlerini değiştirirken kullanacağımız takas listesi [/COLOR]
            List<string>[] takas = new List<string>[cevapSayisi + 1]; 
            for (int sayac = 0; sayac < cevapSayisi + 1; sayac++) 
            {    
               takas[sayac] = new List<string>(); 
               takas[sayac].Add(""); 
            } 
            Random rnd = new Random(); 

            for (int sayac = 0; sayac < Alanlar.Count; sayac++) 
            {   //[COLOR="red"] şıkları karıştırmak için boşta kalan cevapları tutacak liste [/COLOR]
               List<int> secenekSira = new List<int>(); 
               for (int ss = 0; ss < cevapSayisi + 1; ss++) secenekSira.Add(ss); 
               // dağıtılmayan soruların sayısı kadar rastgele sayı üret. 
               int soruSiraRnd = rnd.Next(0, dagitilmayanElemanlar.Count); 
               takas[0][0] = GidecekVeri[0][dagitilmayanElemanlar[soruSiraRnd]]; // ilk elemana soruyu yaz 
               secenekSira.RemoveAt(0); // şıkları karıştırmak için listeden soruyu çıkart 
               for (int ss = 1; ss < cevapSayisi + 1; ss++) 
               {   // Şıkları rastgele seç ve sırayla takas listesine ekle 
                    int secenekSiraRnd = rnd.Next(0, secenekSira.Count); 
                    takas[ss][0] = GidecekVeri[secenekSira[secenekSiraRnd]][dagitilmayanElemanlar[soruSiraRnd]]; 
                    secenekSira.RemoveAt(secenekSiraRnd); // aynı şık tekrar seçilmesin diye listeden çıkart 
               } 
               for (int ss = 0; ss < cevapSayisi + 1; ss++) 
               {   // [COLOR="red"]seçilen sorunun yerine işleme alınmamış soru aktarılıp aktarılan soru yerine karıştırılmış soru ekleniyor [/COLOR]
                    GidecekVeri[ss][dagitilmayanElemanlar[soruSiraRnd]] = GidecekVeri[ss][dagitilmayanElemanlar.Count - 1]; 
                    GidecekVeri[ss][dagitilmayanElemanlar.Count - 1] = takas[ss][0]; 
               } 
               dagitilmayanElemanlar.RemoveAt(soruSiraRnd); // işleme alınmışı referans listesinden çıkartıyoruz. 
            } 
            return GidecekVeri; 
        } 
    } 

}


2. kısa yöntem :
Kod:
 Random rastGele = new Random();        
        int soru = rastGele.Next(1,/*Soru Sayısı*/);
        Label soruBir = new Label();
soruBir.Text =

Hocam visual basic demiştim ama sanırsam 1.yöntem c#
ShuJaira
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.