Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка структуры, помагите с синтаксисом 
:(
    Опции темы
Doss
Дата 24.10.2007, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 5.10.2007

Репутация: нет
Всего: нет



помогите с сиснтаксисом сортировки структуры(пожалуйста именно с моей прогой)
Задача состоит в следующем:

структора содержит поля:
 Фамилия,
 группа, 
успеваемость(массив из 5 элементов)

прога должна:
- ввод с клавы в массив, состоящая из n структур, (запись должна быть упорядочина по возрастанию номера группы)
-вывод фамилии и номера группы для всех в массиве, если сред бал больше 4,0(если таких не то оповестить)

 Вот что сделал
Код

using System;
using System.Collections;
using System.Text;

namespace Lab10
{
    interface IComparer
    {
    int Compare(object ob1, object ob2);
   
    }
    interface ICompareble
    {
        int CompareTo(object obj);
    }
    public struct   Student:ICompareble
    {
        string famil;
        int nom;
        double sr;
        public Student(string famil, int nom,double s)
        {
            this.famil = famil;
            this.nom = nom;
            this.sr = s;
        }
        public string GetFam
        {
            get{return famil;}
        }
        public int GetNam
        {
            get{return nom;}
        }
       
        public double GetSr
        {
            get{ return sr;}
            set { if (sr >= 4.0)sr = value; else sr = 0; }
        }
       
         public  void Stud()
        {
            Console.WriteLine("Студент:{0}\t Группы:{1}\t Со средним баллом={2}\t",GetFam ,GetNam ,GetSr);

        }
     public class SortByNam :IComparer  //Вложенный класс осущ сортировку по раз критериям
        {
            int IComparer.Compare(object ob1,object ob2)
            {
                Student m1 = (Student)ob1;
                Student m2 = (Student)ob2;
                if (m1.nom > m2.nom) return 1;
                if (m1.nom < m2.nom) return -1;
                return 0;
            }
        }
        public int CompareTo(object obj) //сортировка по одному критерию
        {
            Student temp = (Student)obj;
            if (this.nom > temp.nom) return 1;
            if (this.nom < temp.nom) return -1;
            return 0;
        }
        
    }


    class Program
    {
        static void Main()
        {
            const int n = 2 ;
           
             double sred=0;
            Student[] student = new Student[n];
            for (int i = 0; i < n; ++i)
            {
                Console.WriteLine("Введите фамилию и инициалы студента");
                string fam = Console.ReadLine();
                Console.WriteLine("Введите номер группы");
                int nom = Int32.Parse(Console.ReadLine());
                Console.WriteLine("Введите успеваемость студента ");
                int[] ocen = new int[5];
                int s = 0;
                for (int p = 0; p < ocen.Length; p++)
                {
                    Console.WriteLine((p+1) + "\tСеместр");
                    ocen[p] = Int32.Parse(Console.ReadLine());
                    s +=ocen[p];
                    sred = s / ocen .Length ;
                }
             
                student[i] = new Student(fam, nom, sred);

            }
            

            Console.WriteLine("Список студентов");
         Array.Sort(student);
         Array.Sort(student.new Student.SortByNam()) ; //выдает ощибку!!!!!!! В чем дело? 
            foreach (Student st in student) st.Stud();

        }
    }
}



В этои примере   Array.Sort(student.new Student.SortByNam()) и   Array.Sort(student); закоментировать, то все нормально, но как мне отсоритровать? (Что самое интересное в книге та же история smile  ) Буду благодарен если на примере поможите....сижу  smile 
PM MAIL   Вверх
stab
Дата 25.10.2007, 05:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



Цитата(Doss @  25.10.2007,  02:59 Найти цитируемый пост)
выдает ощибку!!!!!!! В чем дело? 

если это не опечатка, то вместо точки надо запятую.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Wizard_Memfis
Дата 26.10.2007, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 12.2.2007
Где: г. Донецк, Украин а

Репутация: 1
Всего: 4



А что вообще это такое:
Код

student.new Student.SortByNam()

Как оно вообще должно работать?!
--------------------
www.binary-studio.com
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1145 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.