Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2018, 16:27   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию Массив экземпляров класса, вызов метода, сортировка

Ребят, всем привет, у меня не получается реализовать поиск в массиве по образцу с использованием метода класса, получилось с использованием отдельной функции, подскажите, пожалуйста, как переделать?

нужно как-то сделать функцие src методом класса и вызвать его в кнопке

Код:

//сам "класс"
private class student
		{
			string fam ="";
			string name="",otch="";
			string groupx="";
			string facultet="";
			string special="";
			short ball=-1;
			
			
			public string FAM
			{
				get { return fam; }
				set { fam = value; }
			}

			
			public string NAME
			{
				get { return name; }
				set { name = value; }
			}

			
			
			public string OTCH
			{
				get { return otch; }
				set { otch = value; }
			}

			
			
			public string GRPS
			{
				get { return groupx; }
				set { groupx = value; }
			}

			
			public string FACULTET
			{
				get { return facultet; }
				set { facultet = value; }
			}

			
			public string SPECIAL
			{
				get { return special; }
				set { special = value; }
			}

			
			public short BALL
			{
				get { return ball; }
				set { ball = value; }
			}
						
		}

// вывод элемента массива

	void vivod(student arr)
		{
			
			int rowNumber = dataGridView1.Rows.Add();

			dataGridView1.Rows[rowNumber].Cells["pos"].Value = rowNumber+1;
			dataGridView1.Rows[rowNumber].Cells["fam"].Value = arr.FAM;
			dataGridView1.Rows[rowNumber].Cells["name"].Value = arr.NAME;
			dataGridView1.Rows[rowNumber].Cells["othc"].Value = arr.OTCH;
			dataGridView1.Rows[rowNumber].Cells["group"].Value = arr.GRPS;
			dataGridView1.Rows[rowNumber].Cells["facult"].Value = arr.FACULTET;
			dataGridView1.Rows[rowNumber].Cells["special"].Value = arr.SPECIAL;
			dataGridView1.Rows[rowNumber].Cells["ball"].Value = arr.BALL.ToString();

		}
		

		
	//метод поиска в массиве
	int src(student [] arr,string obr)
		{
			
			int co=0;
			
			if (radioButton1.Checked) {
				for(int i=0;i<arr.Length;i++)
					if (obr==arr[i].FAM){co++;
					vivod(arr[i]);}
				
			} else {
				for(int i=0;i<arr.Length;i++)
					if (Convert.ToInt16(obr)==arr[i].BALL)
				{co++;
					vivod(arr[i]);
				}
			}
			
			return co;
		}


	

//формирование массива


void Button5Click(object sender, EventArgs e)
		{
		
			
			
			if (textBox6.Text.Trim()==""){MessageBox.Show("Введитеобразец искомого!");textBox6.Focus();return;}
				
			if ((!radioButton2.Checked)&&(!radioButton1.Checked)){MessageBox.Show("Выберите критерий (по баллу либо по фамилии)");textBox6.Focus();return;}
			
				student [] arr=new student[dataGridView1.RowCount-1];
			
			for (int i=0;i<dataGridView1.RowCount-1;i++)
			{
				
				arr[i]=new student();
				arr[i].FAM=dataGridView1[1,i].Value.ToString();
				arr[i].NAME=dataGridView1[2,i].Value.ToString();
				arr[i].OTCH=dataGridView1[3,i].Value.ToString();
				arr[i].GRPS=dataGridView1[4,i].Value.ToString();
				arr[i].FACULTET=dataGridView1[5,i].Value.ToString();
				arr[i].SPECIAL=dataGridView1[6,i].Value.ToString();
				arr[i].BALL=Convert.ToInt16(dataGridView1[7,i].Value);
			}			
			
			for (int i=0;i<dataGridView1.ColumnCount-1;i++)
				for (int j=0;j<dataGridView1.RowCount-1;j++)
					dataGridView1.Rows[j].Cells[i].Value="";
			dataGridView1.RowCount=1;
			
			int count=src(arr,textBox6.Text);
			
			if (count!=0)
			
			MessageBox.Show("Найдено записей: "+count.ToString());
			else
				MessageBox.Show("Записей не найдено!");
		}
само задание:
2) Создать класс «Студент», который определяется полями ФИО, номер группы, название факультета, название специальности, средний балл успеваемости. Пусть имеется массив объектов этого класса. Разработать метод выбора студентов из массива по условию (учится на конкретном факультете, имеет средний балл более заданного уровня и пр.). Для определения, удовлетворяет ли объект условию, передавать в метод соответствующий параметр.
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 23.03.2018, 20:44   #2
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

есть ли какие-то предложения?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 23.03.2018, 21:19   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Давным давно шарп умеет такую запись:
Код:
public string FAM { get; set;} = "";
нет смысла вручную прописывать члены для каждого свойства, если нет никакой логики в геттере/сеттере.
datagridview прекрасно умеет коллекции произвольных объектов в качестве источника данных и не нужно вручную заполнять ячейки.
Изящное решение уже есть в Linq, но тут оно не пойдёт.
Переместить src в студент можно, сделав его static. вызывать соответственно потом как Student.src(...).
В шарпе нет функций, всё методы.
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов метода шаблонного класса mnn Общие вопросы C/C++ 1 15.02.2014 20:49
Вызов метода из вложенного класса AlexCODER23 C# (си шарп) 3 02.02.2012 11:39
вызов метода неинициализированной переменной класса coinkrsk Общие вопросы C/C++ 4 02.01.2011 17:26
Сортировка массива экземпляров класса по именам Ciberal Общие вопросы C/C++ 1 18.05.2010 23:08
mootools: вызов метода класса в цикле each toXx JavaScript, Ajax 1 18.03.2009 19:20