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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2011, 15:20   #1
ardor
Пользователь
 
Регистрация: 16.11.2009
Сообщений: 51
По умолчанию C# интерфейс IComparer

Помогите разобраться с этим интерфейсом.

Цитата:
namespace ООПЛР8
{
public class SortFam : IComparer<object>
{
public int Compare(object ob1, object ob2)
{
chelovek cob1 = (chelovek)ob1;
chelovek cob2 = (chelovek)ob2;

return String.Compare(cob1.fam, cob2.fam);
}
}
class chelovek
{
public string fam;
public string god;
public string status;
public int vozrast;

virtual public int svedenija()
{
int n = 0;
n = DateTime.Now.Year - Convert.ToInt32(god);
return n;
}
public int IVozrast()
{
vozrast = svedenija();
return vozrast;
}

public chelovek(string IFam, string IGod, string IStatus)
{
fam = IFam; god = IGod; status = IStatus; vozrast = DateTime.Now.Year - Convert.ToInt32(god);
}
public virtual void Vyvod()
{

}
}
class Program
{
static void Main(string[] args)
{
Console.ForegroundColor = ConsoleColor.White;
StreamReader f = new StreamReader("d:/ITestFileO_o.txt");
String s = f.ReadToEnd();
f.Close();
char[] v = { '\n' };
string[] IStroka = s.Split(v);
Console.WriteLine("Исходная строка:\n" + s);
chelovek[] IChelovekO_o = new chelovek[IStroka.Length];
char[] w = {' ','\n'};
for (int i=0; i<IStroka.Length-1; i++)
{

string[] ss = IStroka[i].Split(w);

int l = ss.Length;

if (ss[2] == "студент")
{
int[] IRezult = new int[(ss.Length-3)];
int IIndex2 = 0;
for (int IIndex = 3; IIndex < l; IIndex++)
{
IRezult[IIndex2] = Convert.ToInt32(ss[IIndex]);
IIndex2++;
}
IChelovekO_o[i] = new student(ss[0]/*fam*/, ss[1]/*god*/, ss[2]/*status*/, IRezult);
}
else
if (ss[2] == "преподаватель")
{
int IIndex2 = 0;
int[] INagruzka = new int[(ss.Length - 3)];
for (int IIndex = 3; IIndex < ss.Length; IIndex++)
{
INagruzka[IIndex2] = Convert.ToInt32(ss[IIndex]);
IIndex2++;
}
IChelovekO_o[i] = new prepod(ss[0]/*fam*/, ss[1]/*god*/, ss[2]/*status*/, INagruzka);
}
else
{
ss[2] = ss[2].Remove(ss[2].Length - 1, 1);
IChelovekO_o[i] = new chelovek(ss[0]/*fam*/, ss[1]/*god*/, ss[2]/*status*/);
}

}
Console.WriteLine("╔═══════════════ ═════╦═══════════════╦═════════════ ══╦═════════════════════╗");
Console.WriteLine("║ Фамилия ║ Статус ║ Год рождения ║ Сведения ║");
Console.WriteLine("╠═══════════════ ═════╬═══════════════╬═════════════ ══╬═════════════════════╣");
for (int i = 0; i < IChelovekO_o.Length-1; i++)
{
IChelovekO_o[i].Vyvod();
if (i != (IChelovekO_o.Length - 2))
Console.WriteLine("╠═══════════════ ═════╬═══════════════╬═════════════ ══╬═════════════════════╣");
else
if (i == (IChelovekO_o.Length-2))
Console.WriteLine("╚═══════════════ ═════╩═══════════════╩═════════════ ══╩═════════════════════╝");
}
Console.ReadKey();
Console.WriteLine("Вывод отсортированного ");
Array.Sort(IChelovekO_o, new SortFam());

}
}
}
Изображения
Тип файла: jpg 2011-01-02_141325.jpg (70.1 Кб, 95 просмотров)
Вложения
Тип файла: rar ConsoleApplication11.rar (33.6 Кб, 6 просмотров)
ardor вне форума Ответить с цитированием
Старый 02.01.2011, 16:06   #2
Neser
Пользователь
 
Аватар для Neser
 
Регистрация: 26.12.2010
Сообщений: 47
По умолчанию

Попробуйте атачмент. Думаю у вас была ошибка при вводе информации.
З.Ы. Пожалуйста, определяйте классы в отдельных файлах, например SortFam.cs,chelovek.cs, а не в Program.cs.
Изображения
Тип файла: jpg Записати.jpg (39.4 Кб, 129 просмотров)
Вложения
Тип файла: rar ConsoleApplication11.rar (31.7 Кб, 8 просмотров)
KISS - Keep It Simple Stupid

Последний раз редактировалось Neser; 02.01.2011 в 16:11.
Neser вне форума Ответить с цитированием
Старый 02.01.2011, 16:59   #3
ardor
Пользователь
 
Регистрация: 16.11.2009
Сообщений: 51
По умолчанию

ниче непонял)) ты объявил просто нескоько объектов. это и я могу) а как сортировать массив объектов?
ardor вне форума Ответить с цитированием
Старый 02.01.2011, 18:21   #4
Neser
Пользователь
 
Аватар для Neser
 
Регистрация: 26.12.2010
Сообщений: 47
По умолчанию

Сортирует же, все у тебя правильно кроме считивания с файла. Какая схема текстового файла с которого читаеться ета инфа?
Изображения
Тип файла: png Записати.PNG (7.6 Кб, 89 просмотров)
Тип файла: jpg Записатиc.jpg (43.4 Кб, 126 просмотров)
KISS - Keep It Simple Stupid
Neser вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интерфейс Pax1@ya.ru Фриланс 5 26.12.2010 19:17
Интерфейс Jasper92 Помощь студентам 2 16.10.2010 12:51
Интерфейс masterlomaster Помощь студентам 3 22.10.2009 11:42
Интерфейс [Smarik] Общие вопросы Delphi 16 18.06.2008 10:37