private void NotlariRasgeleDagit(ExcelProgramla excel, int row, int enAzNot, int toplaminEsitlenecegiDeger) { var r = new Random(); excel.ToplamNot = 0; for (int i = excel.AktifSutun; i < excel.ToplamSutunu; i++) { if (toplaminEsitlenecegiDeger == 0) { excel.ToplamNot = 0; excel.WriteCell(row, i, 0); } else { var a = enAzNot; var b = excel.ReadCellInt(excel.KriterSatiri, i); var hesaplanacakSayi = Math.Round(r.NextDouble() * (b - a) + a, 0); var modHesapla = hesaplanacakSayi % 5; if (modHesapla > 0) { do { hesaplanacakSayi--; modHesapla = hesaplanacakSayi % 5; } while (modHesapla != 0); } excel.WriteCell(row, i, hesaplanacakSayi); excel.ToplamNot += hesaplanacakSayi; } } }
private void NotVer_Click(object sender, RoutedEventArgs e) { var excelProgramla = new ExcelProgramla(); NotVer(excelProgramla); void NotVer(ExcelProgramla excel) { var row = excel.AktifSatir; var col = excel.AktifSutun; var enAzNot = Convert.ToInt32(txtEnAzNot.Text); var katsayi = Convert.ToInt32(txtKatsayi.Text); var ogrenciSayisi = excel.ToplamSatirSayisi - excel.AktifSatir + 1; var notlar = new int[ogrenciSayisi, excel.KriterSayisi + 1]; var r = new Random(); var r2 = row; if (excel.KriterlerinToplami != 100) { MessageBox.Show("Kriterlerin toplamı 100 olmalıdır."); return; } for (int i = 0; i < ogrenciSayisi; i++) { var toplaminEsitlenecegiDeger = excel.ReadCellInt(r2, excel.ToplaminEsitlenecegiSutun); var c2 = col; for (int j = 0; j < excel.KriterSayisi; j++) { var a = enAzNot; var b = excel.ReadCellInt(excel.KriterSatiri, c2); var hesaplanacakSayi = Math.Round(r.NextDouble() * (b - a) + a, 0); var modHesapla = hesaplanacakSayi % katsayi; if (modHesapla > 0) { do { hesaplanacakSayi--; modHesapla = hesaplanacakSayi % katsayi; } while (modHesapla != 0); } notlar[i, j] = (int)hesaplanacakSayi; notlar[i, excel.KriterSayisi] += (int)hesaplanacakSayi;//toplam c2++; } if (toplaminEsitlenecegiDeger < enAzNot * excel.KriterSayisi) { MessageBox.Show($"Eşitlenecek not en az {enAzNot * excel.KriterSayisi} olmalıdır. (Girilen Not: {toplaminEsitlenecegiDeger})"); return; } var h = 0; var c3 = col; if (notlar[i, excel.KriterSayisi] < toplaminEsitlenecegiDeger) { do { if (notlar[i, h] < excel.ReadCellInt(excel.KriterSatiri, c3)) { notlar[i, h] += katsayi; notlar[i, excel.KriterSayisi] += katsayi; } if (h == excel.KriterSayisi - 1) { h = 0; c3 = col; } else { h++; c3++; } } while (notlar[i, excel.KriterSayisi] < toplaminEsitlenecegiDeger); } else { do { if (notlar[i, h] > enAzNot) { notlar[i, h] -= katsayi; notlar[i, excel.KriterSayisi] -= katsayi; } if (h == excel.KriterSayisi - 1) { h = 0; } else { h++; } } while (notlar[i, excel.KriterSayisi] > toplaminEsitlenecegiDeger); } r2++; } excel.WriteRange(excel.AktifSatir, excel.AktifSutun, excel.ToplamSatirSayisi, excel.ToplamSutunSayisi + 1, notlar); //do //{ // var toplaminEsitlenecegiDeger = excel.ReadCellInt(row, excel.ToplaminEsitlenecegiSutun); // //excel.ToplamNot = 0; // NotlariRasgeleDagit(excel, row, enAzNot, toplaminEsitlenecegiDeger); // excel.WriteCell(row, excel.ToplamSutunu, excel.ToplamNot); // if (toplaminEsitlenecegiDeger < enAzNot * excel.KriterSayisi) // { // MessageBox.Show($"Eşitlenecek not en az {enAzNot * excel.KriterSayisi} olmalıdır. ({toplaminEsitlenecegiDeger})"); // return; // } // var h = col; // if (excel.ToplamNot < toplaminEsitlenecegiDeger) // { // do // { // var artacakSayi = excel.ReadCellInt(row, h); // artacakSayi += 5; // excel.ToplamNot += 5; // excel.WriteCell(row, h, artacakSayi); // excel.WriteCell(row, excel.ToplamSutunu, excel.ToplamNot); // if (h == excel.ToplamSutunu) // { // h = col; // } // else // { // h++; // } // } while (excel.ToplamNot < toplaminEsitlenecegiDeger); // } // else // { // do // { // var azlacakSayi = excel.ReadCellInt(row, h); // if (azlacakSayi > enAzNot) // { // azlacakSayi -= 5; // excel.ToplamNot -= 5; // excel.WriteCell(row, h, azlacakSayi); // excel.WriteCell(row, excel.ToplamSutunu, excel.ToplamNot); // } // if (h == excel.ToplamSutunu) // { // h = col; // } // else // { // h++; // } // } while (excel.ToplamNot > toplaminEsitlenecegiDeger); // } // row++; //} while (excel.ReadCellString(row, excel.AktifSutun - 1) != ""); MessageBox.Show("Notlar başarı ile verildi."); //lblSonuc.Content = "Notlar başarı ile verildi."; } }