using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static private bool T;
static void Main(string[] args)
{
const int N = 40;
Array intarr= Array.CreateInstance(typeof(int),40);
intarr.SetValue(-1, 0);
intarr.SetValue(1, 1);
intarr.SetValue(-2, 2);
intarr.SetValue(12, 3);
intarr.SetValue(-1, 4);
intarr.SetValue(8, 5);
intarr.SetValue(-11, 6);
intarr.SetValue(1, 7);
intarr.SetValue(-1, 8);
intarr.SetValue(1, 9);
intarr.SetValue(-1, 10);
intarr.SetValue(5, 11);
intarr.SetValue(-1, 12);
intarr.SetValue(1, 13);
intarr.SetValue(-1, 14);
intarr.SetValue(1, 15);
intarr.SetValue(-1, 16);
intarr.SetValue(1, 17);
intarr.SetValue(-1, 18);
intarr.SetValue(5, 19);
intarr.SetValue(-12, 20);
intarr.SetValue(1, 21);
intarr.SetValue(-8, 22);
intarr.SetValue(11, 23);
intarr.SetValue(-1, 24);
intarr.SetValue(1, 25);
intarr.SetValue(-1, 26);
intarr.SetValue(1, 27);
intarr.SetValue(-5, 28);
intarr.SetValue(1, 29);
intarr.SetValue(-1, 30);
intarr.SetValue(1, 31);
intarr.SetValue(-1, 32);
intarr.SetValue(1, 33);
intarr.SetValue(-2, 34);
intarr.SetValue(12, 35);
intarr.SetValue(-1, 36);
intarr.SetValue(8, 37);
intarr.SetValue(-11, 38);
intarr.SetValue(1, 39);
proc(intarr);
Console.WriteLine("Проверка закончена");
Console.Read();
}
static void proc(Array intArr)
{
int d=0;
bool f = true; //первое число
foreach(int i in intArr) //перебор массива
{
if(i==0) //проверка на 0
{
T = false;
Console.WriteLine("T = false, значение 0");
return;
}
if (f == true)
{
d = i;
f = false;
}
else
{
if((d>0 && i>0)||(d<0 && i<0)) // проверка на чередование пол. с отр.
{
T = false;
Console.WriteLine("T = false , значения не чередуются предыдущее {0} текущее {1}",d.ToString(),i.ToString());
return;
}
}
d = i;
}
T = true;
Console.WriteLine("T = true");
}
}
}
using System;
namespace Application
{
class ArrayTest
{
/// <summary>
/// К-во элементов по условию
/// </summary>
private const int Count = 40;
public static void Main (string[] args)
{
try {
// Тестируем со случайным генератором
TestGenerator (GenRandomArray);
// Тестируем "хороший" генератор
TestGenerator (GenGoodArray);
} catch (Exception ex) {
Console.WriteLine (ex.Message);
} finally {
Console.ReadKey ();
}
}
/// <summary>
/// Делегат для функции генерации массива
/// </summary>
private delegate void GenFunction (int[] array);
/// <summary>
/// Тестирует генератор массива
/// </summary>
/// <param name="genFunction">
/// A <see cref="GenFunction"/>
/// Функция заполняющая передаваемый массив
/// </param>
private static void TestGenerator (GenFunction genFunction)
{
// Создание массива
int[] array = new int[Count];
// Заполняем элементами
genFunction (array);
// Выводим на экран
Console.WriteLine ("Массив: ");
Array.ForEach (array, item => { Console.Write ("{0} ", item); });
Console.WriteLine ();
// Выводим результат проверки
Console.WriteLine ("Результат проверки: {0}\n", TestArray (array));
}
/// <summary>
/// Генератор случайных чисел
/// </summary>
static Random random = new Random ();
/// <summary>
/// Ограничение для генерируемых чисел
/// </summary>
const int Max = 10;
/// <summary>
/// Заполняет массив случайными элементами в диапазоне -Max..Max
/// </summary>
/// <param name="array">
/// A <see cref="System.Int32[]"/>
/// Заполняемый массив
/// </param>
private static void GenRandomArray (int[] array)
{
if (array == null) {
throw new ArgumentNullException ();
}
for (int i = 0; i < array.Length; ++i) {
array[i] = random.Next (-Max, Max);
}
}
/// <summary>
/// Заполняет массив случайными элементами в диапазоне -Max..Max таким образом,
/// что результат проверки заранее даст True
/// </summary>
/// <param name="array">
/// A <see cref="System.Int32[]"/>
/// Заполняемый массив
/// </param>
private static void GenGoodArray (int[] array)
{
if (array == null) {
throw new ArgumentNullException ();
}
int sign = random.Next (2) != 0 ? 1 : -1;
for (int i = 0; i < array.Length; ++i) {
array[i] = sign * (random.Next (Max - 1) + 1);
sign *= -1;
}
}
/// <summary>
/// Функция тестирования массива по условию.
/// Возвращает True если в массиве нет нулевых элементов и знак элементов чередуется.
/// В противном случае - False.
/// </summary>
/// <param name="array">
/// A <see cref="System.Int32[]"/>
/// Тестируемый массив
/// </param>
/// <returns>
/// A <see cref="System.Boolean"/>
/// </returns>
private static bool TestArray (int[] array)
{
if (array == null) {
throw new ArgumentNullException ();
}
// Знак предыдущего элемента
int lastSign = 0;
return Array.TrueForAll (array, item =>
{
// Знак элемента
int oldSign = lastSign;
lastSign = Math.Sign (item);
// Проверка по условию
return item != 0 && oldSign != lastSign;
});
}
}
}
Массив:
3 9 5 3 -4 5 8 8 0 1 8 -7 -1 5 9 6 -2 -9 -6 -6 8 1 8 -6 3 -2 -9 -7 9 3 -4 -2 9 -1 3 2 2 2 -5 -2
Результат проверки: False
Массив:
6 -7 8 -2 5 -4 5 -8 2 -4 1 -7 4 -6 3 -1 3 -9 7 -2 3 -6 1 -8 3 -4 7 -6 5 -5 8 -2 1 -8 8 -8 6 -6 4 -4
Результат проверки: True
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.