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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2012, 12:32   #1
Ginger_93
 
Регистрация: 27.12.2011
Сообщений: 6
Печаль задачи по массивам C#

1.Дан целочисленный массив размера N. Вывести вначале все содержащиеся в данном массиве четные числа в порядке возрастания их индексов, а затем – все нечетные числа в порядке убывания их индексов.
2.Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем положительные и отрицательные числа. Если чередуются, то вывести 0, если нет, то вывести порядковый номер первого элемента, нарушающего закономерность.
3.Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся более двух раз, и вывести размер полученного массива и его содержимое.
4.Дана матрица размера MxN (N – четное число). Поменять местами левую и правую половины матрицы.
Помогите, пожалуйста, решить с помощью процедур.
Заранее спасибо!!!
Ginger_93 вне форума Ответить с цитированием
Старый 06.01.2012, 15:27   #2
Goldcoding
Пользователь
 
Регистрация: 04.01.2010
Сообщений: 66
По умолчанию

Обращайся, помогу.
Goldcoding вне форума Ответить с цитированием
Старый 06.01.2012, 17:27   #3
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Ginger_93

1.Дан целочисленный массив размера N. Вывести вначале все содержащиеся в данном массиве четные числа в порядке возрастания их индексов, а затем – все нечетные числа в порядке убывания их индексов.

Код:
static class Z
{
	public static void Write<T>(this IEnumerable<T> data)
	{
		foreach (var o in data)
			Console.Write("{0} ", o);
		Console.WriteLine();
	}
}
Код:
void ReorderArray()
{
	var arr = new [] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	arr.Where(p => (p & 1) == 0).Write();
	arr.Where(p => (p & 1) == 1).Reverse().Write();
}
Вывод результата:

Код:
2 4 6 8
9 7 5 3 1

2.Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем положительные и отрицательные числа. Если чередуются, то вывести 0, если нет, то вывести порядковый номер первого элемента, нарушающего закономерность.

Код:
static class Z
{
	public static KeyValuePair<int, IEnumerator<T> > adjance_find<T>(
		this IEnumerable<T> data, Func<T, T, bool> pred2
		)
		where T : IComparable<T>
	{
		var _First = data.GetEnumerator();
		var _Firstb = data.GetEnumerator();
		if (!_First.MoveNext())
			return new KeyValuePair<int, IEnumerator<T>>(0, null);
		int i = 0;
		for (; _Firstb.MoveNext() && _First.MoveNext(); i++)
		{
			if (pred2(_Firstb.Current, _First.Current))
				return new KeyValuePair<int, IEnumerator<T>>(i, _Firstb);
		}
		return new KeyValuePair<int, IEnumerator<T> >(0, null);
	}
}
Код:
void CheckSign()
{
	var arr1 = new[] { 1, -2, 3, -4, 5, -6, 7, -8, 9 };
	var arr2 = new[] { 1, -2, 3, -4, -5, -6, 7, -8, 9 };

	CheckSignAlternation(arr1);
	CheckSignAlternation(arr2);
}

void CheckSignAlternation<T>(IEnumerable<T> arr) where T : IComparable<T>
{
	var current = arr.adjance_find((a, b) => (a.CompareTo(default(T)) < 0) == (b.CompareTo(default(T)) < 0));
	if (current.Value == null)
		Console.WriteLine("Элементы халосие, насяльника!");
	else
		Console.WriteLine("Элементны отстойные, насяльника, индекс: {0}", current.Key + 1);
}
Вывод результата:

Код:
Элементы халосие, насяльника!
Элементны отстойные, насяльника, индекс: 4

3.Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся более двух раз, и вывести размер полученного массива и его содержимое.

Код:
void Distinct()
{
	var arr = new[] {1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 3, 3, 4,4,4,4,4,-1,-1,-1,-2,-2,-3};
	arr.GroupBy(p => p).Where(p => p.Count() <= 2).Aggregate(new List<int>(), (p, g) =>
	                                                                          	{
	                                                                          		p.AddRange(Enumerable.Repeat(g.Key, g.Count()));
	                                                                          		return p;
	                                                                          	}).Write();
}
Вывод результата:

Код:
1 1 2 2 5 6 7 8 -2 -2 -3

4.Дана матрица размера MxN (N – четное число). Поменять местами левую и правую половины матрицы.
Помогите, пожалуйста, решить с помощью процедур.


Всё, нах. Это тебе в качетвсе самостоятельной проработки :D
Rififi вне форума Ответить с цитированием
Старый 06.01.2012, 17:36   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Rififi
Мне почему-то кажется, что ты иногда специально издеваешься над "просящими решения"
Вадим Мошев вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
решить задачи по массивам sashyla Общие вопросы C/C++ 1 18.11.2011 11:10
Задачи по двумерным массивам и строкам VANOLORD Паскаль, Turbo Pascal, PascalABC.NET 1 29.05.2011 23:44
Задачи по массивам (Turbo Pascal) Adanel Помощь студентам 2 10.05.2011 20:19
задачи по массивам Тэнсэй Помощь студентам 3 13.03.2011 18:55
задачи по массивам - помогите !!! Heidi Паскаль, Turbo Pascal, PascalABC.NET 18 18.12.2010 15:37