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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2015, 21:14   #1
AndrewAndrew
Новичок
Джуниор
 
Регистрация: 16.05.2015
Сообщений: 1
По умолчанию Сортировка в C#

Дан фрагмент кода:
Код:
public void Sort()
        {
            double[] b = new double[n];
            int aIndex = 0;
 
            for (int i = 0; i < n; i++)
                if (Math.Abs(a[i])<=1.0)
            {
                b[aIndex] = a[i];
                aIndex++;
            }
 
            for (int i = 0; i < n; i++)
                if (a[i]>1.0)
            {
                b[aIndex] = a[i];
                aIndex++;
            }
            foreach (double x in b)
                Console.Write("\t" + x);
            Console.Write("\n");
        }
Превратить массив таким образом , чтобы сначала располагались все элементы , целая часть которых не превышает единицу , а затем - все остальные . Это задание я сделал. НО , массив то не сортируеться. К примеру вот результат сортировки : -1 0 0,1 -0,3 3 2 . Помогите корректно по возростанию отсортировать массив. Вот еще весь код:

Код:
using System;
using System.Collections.Generic;
using System.Text;

namespace ArrayWork
{
	public class Array
	{
		int n;
		public int size1;
		int size2;
		public double[] a;
		public double[] b;
		bool ErrFlag;
		int aIndex;

		public void Field()
		{
			Console.WriteLine("Введiть межi масиву: ");
			Console.Write("Перша межа:");
			size1 = Convert.ToInt32(Console.ReadLine());
			Console.Write("Друга межа:");
			size2 = Convert.ToInt32(Console.ReadLine());
			n = size2 - size1 + 1;
		}

		public void ScanArray()
		{
			a = new double[n];
			int x = size1;
			Console.WriteLine("Введiть массив: ");

			for (int i = 0; i < n; i++)
			{
				Console.Write("a[" + x + "]=");
				a[i] = Convert.ToDouble(Console.ReadLine());
				x++;
			}
			foreach (double z in a)

				Console.Write("\t" + z);
			Console.Write("\n");
		}

		public double this[int index]
		{
			get
			{
				if (ok(index))
				{
					ErrFlag = false;
					return a[index - size1];
				}
				else
				{
					ErrFlag = true;
					return 0;
				}
			}

			set
			{
				if (ok(index))
				{
					a[index] = value;
					ErrFlag = false;
				}
				else ErrFlag = true;
			}
		}

		private bool ok(int index)
		{
			if (index >= size1 & index <= size2) return true;
			else
				return false;
		}

		public void Dodatnih()
		{
			int s = 0;

			for(int i=0;i<n;i++)
			{
				if(a[i]>0)
				{
					s++;
				}
			}
			Console.WriteLine("Kilkist:{0}",s);
		}


		public void Summ()
		{
			int j = 0;
			double s = 0;
			for (int i = 0; i < n; i++)
			{
				if (a[i] == 0)
				{
					j = i;
				}
			}
			for (int i = j; i < n; i++)
				s += a[i];
			Console.WriteLine("Summa={0}\t",s);
		}


		public void Sort()
        {
            double[] b = new double[n];
            int aIndex = 0;
 
            for (int i = 0; i < n; i++)
                if (Math.Abs(a[i])<=1.0)
            {
                b[aIndex] = a[i];
                aIndex++;
            }
 
            for (int i = 0; i < n; i++)
                if (a[i]>1.0)
            {
                b[aIndex] = a[i];
                aIndex++;
            }
            foreach (double x in b)
                Console.Write("\t" + x);
            Console.Write("\n");
        }


		public void ElementOutput()
		{
			double x;
			Console.Write("Введiть номер елемента для виведення: ");
			aIndex = Convert.ToInt32(Console.ReadLine());
			x = this[aIndex];
			if (this.ErrFlag)
				Console.WriteLine("Ви вказали не правильний номер елемента");
			else
				Console.WriteLine("a[" + aIndex + "]=" + x);
		}
	}

	public class Program
	{
		static void Main(string[] args)
		{
			Array a = new Array();;
			a.Field();
			a.ScanArray();
			a.ElementOutput ();
			a.Dodatnih();
			a.Summ();
			a.Sort();

			Console.ReadLine();
		}
	}
}
AndrewAndrew вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрая сортировка(сортировка Хоара). Сортировка фрагмента массива [C++] druger Помощь студентам 0 20.04.2012 15:49
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. lenny_24 Помощь студентам 2 17.04.2011 18:57
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32