En iyi yanıtlayıcılar
Öğrenci cevapları İle Test Cevep Anahtarını Karşılaştırma

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
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();
- Düzenleyen Cihan YakarMVP 27 Haziran 2019 Perşembe 12:54
- Yanıt Olarak Öneren Önay YALÇINERModerator 27 Haziran 2019 Perşembe 13:21
- Yanıt Olarak İşaretleyen Kyamuran SalibryamMicrosoft contingent staff, Moderator 7 Ağustos 2019 Çarşamba 11:55
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();
- Düzenleyen Cihan YakarMVP 27 Haziran 2019 Perşembe 12:54
- Yanıt Olarak Öneren Önay YALÇINERModerator 27 Haziran 2019 Perşembe 13:21
- Yanıt Olarak İşaretleyen Kyamuran SalibryamMicrosoft contingent staff, Moderator 7 Ağustos 2019 Çarşamba 11:55
-
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
-
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.
- Düzenleyen metehan koray 27 Haziran 2019 Perşembe 22:45