Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

AnaYaneva avatar AnaYaneva 1 Точки

Повтарящ код-как да го елиминирам?

Здравейте,

моля да ми помогнете, не знам как да елиминирам повтарящия код в методите за сортиране. 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Student
    {
        public string name;
        public string major;
        public double grade;
        public string studyForm;
  

        public Student(string name, string major, double grade, string studyForm)
        {
            this.name = name;
            this.major = major;
            this.grade = grade;
            this.studyForm = studyForm;
        }
    }
    class Program
    {
        static void SortMG(Student[] sortMG, int n)
        {
            int i, j;
            Student tmpMG = new Student("","", 0, "");

            for (i = 0; i < n - 1; i++)
            {
                for (j = i; j < n; j++)
                {
                    if (sortMG[j].major.CompareTo(sortMG[i].major)<0)
                    {
                        tmpMG.name = sortMG[j].name;
                        tmpMG.major = sortMG[j].major;
                        tmpMG.studyForm = sortMG[j].studyForm;
                        tmpMG.grade = sortMG[j].grade;


                        sortMG[j].name = sortMG[i].name;
                        sortMG[j].major = sortMG[i].major;
                        sortMG[j].studyForm = sortMG[i].studyForm;
                        sortMG[j].grade = sortMG[i].grade;


                        sortMG[i].name = tmpMG.name;
                        sortMG[i].major = tmpMG.major;
                        sortMG[i].studyForm = tmpMG.studyForm;
                        sortMG[i].grade = tmpMG.grade;
                   }
                    else if (sortMG[j].major.CompareTo(sortMG[i].major) == 0)
                    {
                        if (sortMG[j].grade > sortMG[i].grade)
                        {
                            tmpMG.name = sortMG[j].name;
                            tmpMG.major = sortMG[j].major;
                            tmpMG.studyForm = sortMG[j].studyForm;
                            tmpMG.grade = sortMG[j].grade;


                            sortMG[j].name = sortMG[i].name;
                            sortMG[j].major = sortMG[i].major;
                            sortMG[j].studyForm = sortMG[i].studyForm;
                            sortMG[j].grade = sortMG[i].grade;


                            sortMG[i].name = tmpMG.name;
                            sortMG[i].major = tmpMG.major;
                            sortMG[i].studyForm = tmpMG.studyForm;
                            sortMG[i].grade = tmpMG.grade;
                        }
                    }
                }
            }
        }
        static void SortByName(Student[] sortN, int n)
        {
            int i, j;
            Student tmpN = new Student("", "", 0, "");

            for (i = 0; i < n - 1; i++)
            {
                for (j = i; j < n; j++)
                {
                    if (sortN[j].name.CompareTo(sortN[i].name) < 0)
                    {
                        tmpN.name = sortN[j].name;
                        tmpN.major = sortN[j].major;
                        tmpN.studyForm = sortN[j].studyForm;
                        tmpN.grade = sortN[j].grade;


                        sortN[j].name = sortN[i].name;
                        sortN[j].major = sortN[i].major;
                        sortN[j].studyForm = sortN[i].studyForm;
                        sortN[j].grade = sortN[i].grade;


                        sortN[i].name = tmpN.name;
                        sortN[i].major = tmpN.major;
                        sortN[i].studyForm = tmpN.studyForm;
                        sortN[i].grade = tmpN.grade;
                    }
                }
            }
        }

 

Тагове:
0
C# Advanced
Zakkgard avatar Zakkgard 39 Точки

Можеш спокойно да си използваш LINQ и да избегнеш твоите lenghty методи. Пример за сортиране по име

sortN.OrderBy(s => s.name).ToArray();

Ето малко повече инфо за extension метода: http://www.dotnetperls.com/orderby-extension 

Друг възможен начин е, да използваш Sort() на статичния Array. Има overload който приема делегат:

Array.Sort(sortN, delegate(Student st1, Student st2) {

           return st1.name.CompareTo(st2.name);

});

Има и други начини да сортираш една колекция, идеята ми е че.. използването на out of the box функционалностите са ти най-доброто решение откъм simplicity :) Поздрави.

0
AnaYaneva avatar AnaYaneva 1 Точки

Благодаря ви!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.