Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Microsoft .NET

  Все выпуски  

RFpro.ru: Microsoft .NET


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Академик
Рейтинг: 8523
∙ повысить рейтинг »
Micren
Статус: Профессор
Рейтинг: 1967
∙ повысить рейтинг »
Andrew Kovalchuk
Статус: Профессионал
Рейтинг: 614
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Microsoft .NET : C#

Номер выпуска:217
Дата выхода:05.10.2011, 09:00
Администратор рассылки:Alexey G. Gladenyuk (Управляющий)
Подписчиков / экспертов:150 / 59
Вопросов / ответов:1 / 2

Консультация # 184118: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Const N=40; Var X:Array[l..N] of Integer; T:Boolean; Переменной Т присвоить значение True, если в массиве X нет нулевых элементов и при этом положительные элементы чере-дуются с отрицательными, и значение False иначе. для нее нужно: ∙ разработанную с...


Консультация # 184118:

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:

Const N=40;
Var X:Array[l..N] of Integer;
T:Boolean;

Переменной Т присвоить значение True, если в массиве X нет нулевых элементов и при этом положительные элементы чере-дуются с отрицательными, и значение False иначе.
для нее нужно:
∙ разработанную схему алгоритма либо структурограмму;
∙ программу на языке программирования C#
∙ результаты тестирования программы.

Дата отправки: 30.09.2011, 08:40
Вопрос задал: Иванов Евгений Александрович (Посетитель)
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Челноков Виктор Альбертович (Студент):

Здравствуйте, Иванов Евгений Александрович!
высылаю только программку, остальное не помню как рисовать

Код :
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");

        }
    }
}

Консультировал: Челноков Виктор Альбертович (Студент)
Дата отправки: 30.09.2011, 09:54
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Micren (Профессор):

Здравствуйте, Иванов Евгений Александрович!

Код :
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

Консультировал: Micren (Профессор)
Дата отправки: 30.09.2011, 18:53
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное