Написал код, но почему-то работает неправильно - C#
Формулировка задачи:
Задача: есть список кандидатов и фирм. Я с помощью бинарных свойств рандомно заполнил их качества. Сделал систему рейтинга, если хорошее качество +1 к рейтингу, плохое, то -1. Потом еще добавил метод распределения по возрастанию их рейтинга. Проблема в том, что почему-то у фирм и кандидатов одинаковый полностью рейтинг. В добавок еще и сортировка не работает. Хотя по-моему все правильно. Помогите в чем проблема, вот код:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication3 { class Firm { enum propertiesFirm { близко = 1, высокаяЗарплата = 2, низкаяЗарплата = 4, далеко = 8 } Random rnd = new Random(); public string[] firmaName = new string[3]; int[] ballFirm = new int[3]; propertiesFirm[] firma = new propertiesFirm[3]; public void FormFirms() { int p = 0, q = 0, currentProps = 0; for (int i = 0; i < 3; i++) { ballFirm[i] = 0; currentProps = 0; for (int j = 0; j < 4; j++) { p = rnd.Next(2); q = (int)Math.Pow(2, j); if (p == 1) { currentProps += q; if (q == 1 || q == 2) ballFirm[i]++; else ballFirm[i]--; } } firma[i] = (propertiesFirm)currentProps; firmaName[i] = "Фирма № " + (i + 1) + "; " + ballFirm[i]; } } public void Sort() { for (int j = 0; j < 3; j++) { for (int i = 1; i < 3; i++) { if (ballFirm[i] > ballFirm[i - 1]) { string w = firmaName[i - 1]; firmaName[i - 1] = firmaName[i]; firmaName[i] = w; } } } } public void qq() { Console.WriteLine("Фирма; оценка"); FormFirms(); for (int i = 0; i < 3; i++) Console.WriteLine(firmaName[i]); Sort(); for (int i = 0; i < 3; i++) { Console.WriteLine(firmaName[i]); } Console.ReadLine(); } } class Candidate { enum propertiesCand { большойОпытРаботы = 1, нетОпытаРаботы = 2, естьОбразование = 4, нетОбразования = 8 } Random rndm = new Random(); public string[] candidateName = new string[3]; int[] ballCand = new int[3]; propertiesCand[] candidate = new propertiesCand[3]; public void FormCands() { int p = 0, q = 0, currentProps = 0; for (int i = 0; i < 3; i++) { ballCand[i] = 0; currentProps = 0; for (int j = 0; j < 4; j++) { p = rndm.Next(2); q = (int)Math.Pow(2, j); if (p == 1) { currentProps += q; if (q == 1 || q == 2) ballCand[i]++; else ballCand[i]--; } } candidate[i] = (propertiesCand)currentProps; candidateName[i] = "Кандидат № " + (i + 1) + "; " + ballCand[i]; } } public void Sotr() { for (int j = 0; j < 3; j++) { for (int i = 1; i < 3; i++) { if (ballCand[i] > ballCand[i - 1]) { string w = candidateName[i - 1]; candidateName[i - 1] = candidateName[i]; candidateName[i] = w; } } } } public void qqCand() { Console.WriteLine("Кандидат; оценка"); FormCands(); for (int i = 0; i < 3; i++) Console.WriteLine(candidateName[i]); Sotr(); for (int i = 0; i < 3; i++) { Console.WriteLine(candidateName[i]); } } } class Program { static void Main(string[] args) { Firm firmaa = new Firm(); Candidate cand = new Candidate(); firmaa.qq(); cand.qqCand(); Console.ReadLine(); } } }
Решение задачи: «Написал код, но почему-то работает неправильно»
textual
Листинг программы
public void Sotr() { for (int j = 0; j < 3; j++) for (int i = j; i < 3; i++) { if (ballCand[j] > ballCand[j]) { string w = candidateName[j]; candidateName[j] = candidateName[i]; candidateName[i] = w; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д