none
Öğrenci cevapları İle Test Cevep Anahtarını Karşılaştırma RRS feed

  • Soru

  • İyi Günler Arkadaşlar;

    60 soruluk bir sınavda cevap anatarı ile öğrencinin vermiş olduğu cevabı karşılaştırmam lazım. Türkçe 20 Matemetik 20 Sosyal 20 sorudan oluşuyor. Sınav A ve B Kitapçığından oluşmakatadır.

    a Kitapçığı Cevap anahtarı :CBDCCBADAABDCABABBCDCCBCBABADBACBBAADDCDAABCCBBCDBBADCADDBCA

    A Kitapçının öğrenicinin vermiş Olduğu cevap : DDCACBCBAABCCAAADCADBCBDAADDCACBADDACADDDDACBDDBDCCACCADBAAA

    B Kitapcığı Cevap Anahtarı : DCABCBCBADADCABABCBDBABCBDCACBDCDDBABACACDCCDBACDABACBDBBBAA

    B Kitapcığı Öğrenicinin Vermiş Olduğu cevap : ADABCBDBADADCABBBBCDAABCBDCBCBDCCBBADCCACDDCDBABDDCACBDBAADA 

    bunları karşılaştırıp Türkçe ,Matematik , Sosyal Dogru ve Yanlışları label lara yazdırmam gerekiyor bana yardımcı olursanın çook dua ederim. Şimdiden Teşekkür ederim.

    Not: Yanlışlar doğruları götürmeyecek;

    Kendi Yazdığım Kodlar aşağıda verilmiştir.

     protected void hesaplabtn_Click(object sender, EventArgs e)
            {
                kmt.Connection = VeriTabaniBaglanti;
                VeriTabaniBaglanti.Open();
                kmt.CommandText = "select * from  sinavislemleri where SinavKodu='" + sinavdrop.SelectedItem.Text + "' and SinifSeviyesi='" + sinifdrop.SelectedItem.Text + "'";
                MySqlDataReader oku1 = kmt.ExecuteReader();
                if (oku1.Read())
                {
                    acevapanahtari = oku1["Akitapcigi"].ToString();
                    bcevapanahtari = oku1["BKitapcigi"].ToString();
                    turkce = oku1["TurkceSoruAdedi"].ToString();
                    matematik = oku1["MatematikSoruAdedi"].ToString();
                    fen = oku1["FenSoruAdedi"].ToString();
                    sosyal = oku1["SosyalSoruAdedi"].ToString();
                    ingilizce = oku1["IngilizceSoruAdedi"].ToString();
                    din = oku1["DinSoruAdedi"].ToString();
                    fizik = oku1["FizikSoruAdedi"].ToString();
                    kimya = oku1["KimyaSoruAdedi"].ToString();
                    biyoloji = oku1["BiyolojiSoruAdedi"].ToString();
                    tarih = oku1["TarihSoruAdedi"].ToString();
                    cografya = oku1["CografyaSoruAdedi"].ToString();
                    felsefe = oku1["FelsefeSoruAdedi"].ToString();




                }
                VeriTabaniBaglanti.Close();
                toplam = Convert.ToInt32(turkce) + Convert.ToInt32(matematik) + Convert.ToInt32(fen) + Convert.ToInt32(sosyal) + Convert.ToInt32(ingilizce) + Convert.ToInt32(din) + Convert.ToInt32(fizik) + Convert.ToInt32(kimya) + Convert.ToInt32(biyoloji) + Convert.ToInt32(tarih) + Convert.ToInt32(cografya) + Convert.ToInt32(felsefe);
              


                kmt.Connection = VeriTabaniBaglanti;
               
                for(int i =0; i<gv.Rows .Count;i++)
                {
                    VeriTabaniBaglanti.Open();
                    kmt.CommandText = "select * from  olctoplamogrenci where Opaq='" + gv.Rows[i].Cells[2].Text + "'";
                    MySqlDataReader oku = kmt.ExecuteReader();
                    if (oku.Read ())
                    {
                        opaqkodu = oku["Opaq"].ToString();
                        kurumkodu = oku["KurumKodu"].ToString();
                        kurumadi = oku["KurumAdi"].ToString();
                        ogrencino = oku["OgrNo"].ToString();
                        adisoyadi  = oku["AdiSoyadi"].ToString();
                        subesi = oku["Subesi"].ToString();
                        sinifno = oku["SinifNo"].ToString();
                        sinavkodu = oku["SinavId"].ToString();
                        derskodu = oku["DersKodu"].ToString();


                    }
                   

                    if (gv.Rows[i].Cells[4].Text == "11")
                    {
                        for (int soruadedi = 0; soruadedi < toplam; soruadedi++)
                        {
                            
                        }

                    }
                    else
                    {
                        for (int soruadedi = 0; soruadedi < toplam; soruadedi++)
                        {
                            
                        }
                    }
                    VeriTabaniBaglanti.Close();
                }
                
            }

    Sadece for döngülerini ayarlayamadım ve string ifadeleri birbirleri ile karşılaştıramadım

    bana yarımcı olursanız çok sevinirim...

    bu proje Asp.net yapılacak
    • Düzenleyen memo215529 27 Haziran 2019 Perşembe 12:27
    27 Haziran 2019 Perşembe 12:25

Yanıtlar

  • var cevapAnahtari = "CBDCCBADAABDCABABBCDCCBCBABADBACBBAADDCDAABCCBBCDBBADCADDBCA";
    var cevaplar = "DDCACBCBAABCCAAADCADBCBDAADDCACBADDACADDDDACBDDBDCCACCADBAAA";
    var dersler = new[] {"Türkçe","Matematik","Sosyal"};
    
    var sonuc = cevaplar.Zip(cevapAnahtari, (c, a) => c == a)
                    .Select((x, i) => new {DogruMu = x ,
                                           Ders = dersler[i / 20]})
                    .GroupBy((x) => x.Ders)
                    .Select(g=> new {Ders = g.Key, 
                                     Dogru = g.Count(x=>x.DogruMu), 
                                     Yanlis = g.Count(x=>!x.DogruMu) })
                    .ToList();



    www.cihanyakar.com


    27 Haziran 2019 Perşembe 12:53

Tüm Yanıtlar

  • var cevapAnahtari = "CBDCCBADAABDCABABBCDCCBCBABADBACBBAADDCDAABCCBBCDBBADCADDBCA";
    var cevaplar = "DDCACBCBAABCCAAADCADBCBDAADDCACBADDACADDDDACBDDBDCCACCADBAAA";
    var dersler = new[] {"Türkçe","Matematik","Sosyal"};
    
    var sonuc = cevaplar.Zip(cevapAnahtari, (c, a) => c == a)
                    .Select((x, i) => new {DogruMu = x ,
                                           Ders = dersler[i / 20]})
                    .GroupBy((x) => x.Ders)
                    .Select(g=> new {Ders = g.Key, 
                                     Dogru = g.Count(x=>x.DogruMu), 
                                     Yanlis = g.Count(x=>!x.DogruMu) })
                    .ToList();



    www.cihanyakar.com


    27 Haziran 2019 Perşembe 12:53
  • yanıt verdiğiniz için teşşekür ederim kodlarınız inceledim ama ben yazılım konusunda biraz acemi olduğum için inanın yazıdığınız kodları anlamadım. bana biraz daha açıklayıcı yazarsanız sevinirim. benim proje asp.net projesidir.
    • Düzenleyen memo215529 27 Haziran 2019 Perşembe 13:16
    27 Haziran 2019 Perşembe 13:15
  • var sonuc = cevaplar.Zip(cevapAnahtari, (c, a) => c == a)          // Zip Kodu ile; cevaplar ve cevapanahtarı dizisindeki karakterlerin yani cevapların tek tek karşılaştırılması yapılıyor. 
                    .Select((x, i) => new {DogruMu = x ,              // Karşılaştırma sonucunda .Select(x,i) kısmında x'e; Doğru veya Yanlış olan ifade atanıyor. İ ise; Döngüde'ki index numarasını ifade ediyor.
                                           Ders = dersler[i / 20]})   // İ: index numarası 1-20 arası Türkçe 20-40 arası Matematik sonrası Sosyal olarak ders ayrımı yapılıyor.
                    .GroupBy((x) => x.Ders)                           // x.Ders ile Ders Adına göre Gruplama işlemi yapılıyor.Çünkü hangi Ders'te kaç doğru kaç yanlış olduğubu öğrenmemiz gerekiyor.
                    .Select(g=> new {Ders = g.Key,                    
                                     Dogru = g.Count(x=>x.DogruMu),       //Doğru ve Yanlışların atandığı kısım da burası.
                                     Yanlis = g.Count(x=>!x.DogruMu) })
                    .ToList();

    Cihan Hocam daha iyi açıklayabilir. Ben bu kadar açıklayabildim.

    Ayrıca @memo215529 kullandığınız yapı Ado.Net yapısıdır. Bu yapı çok hızlı çalışır. Fakat kod geliştirme tekniği açısından Expression ifadeleri yazım hızınızı artırabilir. Bakmanızda fayda var.


    27 Haziran 2019 Perşembe 22:44