В общем нужно сформировать очередь из двадцати случайных элементов диапазона [-40, 40], вывести ее в dataGridView1, потом из списка удалить все отрицательные значения и вывести в dataGridView2. Для этого я пользуюсь формой и классом, в классе два метода.
Класс:
public class Queue
{
public int[] FirstQueue() //Первый метод
{
Queue<int> first = new Queue<int>(); //Очередь
Random ran = new Random(); //Рандом
for (int i = 0; i < 20; i++) //Заполняю очередь
{
first.Enqueue(ran.Next(-40, 40));
}
int[] array = first.ToArray(); //Делаю из очереди массив чтобы вывести в форму
SecondQueue(first); //Передаю очередь на второй метод
return array; //Вывожу массив
}
public int[] SecondQueue(Queue<int> input) //Второй метод
{
ArrayList second = new ArrayList(); //Создаю список
for (int i = 0; i < 20; i++)
{
if (second.Add(input.Dequeue()) >= 0) //Пихаю в список только неотрицательные элементы
{
second.Add(input.Dequeue());
}
else
{
input.Dequeue();
}
}
int[] array2 = (int[])second.ToArray(typeof(int)); //Делаю из списка массив чтобы вывести в форму
return array2; //Вывожу
}
}
Форма:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
dataGridView1.RowCount = dataGridView2.RowCount = 1; //Задаю количество и размеры строк и колонок и их размеры
dataGridView1.ColumnCount = 20;
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
dataGridView1.Columns[i].Width = 40;
}
for (int i = 0; i < dataGridView2.Columns.Count; i++)
{
dataGridView2.Columns[i].Width = 40;
}
}
Queue first = new Queue(); //Ссылка на класс
private void ButtonRun_Click(object sender, EventArgs e) //Первая кнопка
{
int[] array = first.FirstQueue(); //Присваиваю значение массива из первого метода
for (int i = 0; i < 20; i++)
{
dataGridView1.Rows[0].Cells[i].Value = array[i]; //Вывожу в ячейки dataGridView через цикл
}
}
private void ButtonDelete_Click(object sender, EventArgs e)
{
int[] array2 = first.SecondQueue(); //Пытаюсь присвоить массив, но пишет ошибку "Ошибка CS7036 Отсутствует аргумент, соответствующий требуемому формальному параметру "input" из "Queue.SecondQueue(Queue<int>)". "
for (int i = 0; i < array2.Length; i++) //Вывод
{
dataGridView2.Rows[0].Cells[i].Value = array2[i];
}
}
private void ButtonClose_Click(object sender, EventArgs e)
{
Close();
}
}
Сразу скажу что я студент первого курса, пока очень плохо разбираюсь как в языке, так и с ООП и вообще в программировании. Работает только вывод очереди, вывод отредактированного списка нет, соответственно.
Спасибо за внимание, буду признателен любой помощи.