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

RFpro.ru: Microsoft .NET

  Все выпуски  

RFpro.ru: Microsoft .NET


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

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

Чемпионы рейтинга экспертов в этой рассылке

Асмик Александровна
Статус: Академик
Рейтинг: 7297
∙ повысить рейтинг »
Micren
Статус: Профессор
Рейтинг: 1786
∙ повысить рейтинг »
Andrew Kovalchuk
Статус: Профессионал
Рейтинг: 704
∙ повысить рейтинг »

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

Номер выпуска:204
Дата выхода:27.02.2011, 20:00
Администратор рассылки:Alexey G. Gladenyuk (Управляющий)
Подписчиков / экспертов:162 / 59
Вопросов / ответов:3 / 5

Вопрос № 167778: Здравствуйте эксперты программирования буду очень вам признателен за помощь: Создайте класс «Стек», который реализует хранилище данных с использованием правила LIFO (последний пришел - первый вышел). Среди методов данного класса должны быть м...


Вопрос № 149287: Здаствуйте эксперты, я начал осваивать C# и столкнулся с нескокими проблемами: 1) как по какому либо действию открыть Форму(Form), которая заранее создана; 2) gif файл не анимируется в picturebox, как заставить gif работать . Заранее благода...
Вопрос № 166258: Доброе время суток! Как написать програму на С# для рисования штрих кодов. Может у кого будут какие то идеи буду признателен, хоть что нибудь чтоб оттолкнутся. ...

Вопрос № 167778:

Здравствуйте эксперты программирования буду очень вам признателен за помощь:

Создайте класс «Стек», который реализует хранилище данных с использованием правила LIFO (последний пришел - первый вышел). Среди методов данного класса должны быть методы PutToStack – поставить элемент в стек, GetFromStack - получить элемент из стека, свойство LengthStack, позволяющее получить или установить длину стека. В стеке можно хранить объекты любого класса. Добавьте механизм обработки исключений, который срабатывает при превышении размера стека и при попытке удаления данных из пустого стека.
Обращение к объектам класса сделать интерактивным, чтобы пользователь мог вводить и извлекать данные, указывая их тип.

Отправлен: 20.05.2009, 01:42
Вопрос задал: Savter (Посетитель)
Всего ответов: 2
Страница вопроса »


Отвечает Micren (Профессор) :
Здравствуйте, Savter!
Программа:
Код:

using System;

namespace _167778
{
class Program
{
static void Main(string[] args)
{
try
{
Stack<int> stack = new Stack<int>(10);
Console.WriteLine("Заносим в стек:");
for (int i = 0; i < stack.LengthStack; ++i)
{
Console.WriteLine(i);
stack.PushToStack(i);
}
Console.WriteLine("Стек содержит:");
while (stack.Count != 0)
{
Console.WriteLine(stack.GetFromStack());
}
}
catch (StackException ex)
{
Console.WriteLine("Возникло исключение стека: " + ex.Message);
}
catch (System.Exception)
{
Console.WriteLine("Неизвестное исключение");
}
finally
{
Console.ReadKey();
}
}
}

// Базовый класс для исключений при работе со стеком
public class StackException : ApplicationException
{
public StackException(string msg)
: base(msg)
{ }
}
// Класс-исключение стек переполнен
public class StackOverflowException : StackException
{
public StackOverflowException()
: base("Стек переполнен")
{ }
}
// Класс-ис ключение стек пуст
public class StackFreeException : StackException
{
public StackFreeException()
: base("Стек пуст")
{ }
}
// Класс стек
public class Stack<T>
{
// Размер стека по умолчанию
protected const int initialStackLength = 1024;
// Конструктор без параметров
public Stack()
: this(initialStackLength)
{ }
// Конструктор позволяющий задать размер стека
public Stack(int stackLength)
{
if (stackLength < 0)
{
throw new ArgumentException("Stack(int stackLength):параметр stackLength не может быть меньше нуля");
}
data = new T[stackLength];
current = 0;
}
// Размер стека
public int LengthStack
{
get
{ return data.Length;
}
set
{
if (value < 0)
{
throw new ArgumentException("Stack(int stackLength):параметр stackLength не может быть меньше нуля");
}
else
{
Array.Resize(ref data, value);
if (current > data.Length) current = data.Length;
}
}
}
// Количество элементов в стеке
public int Count
{
get
{
return current;
}
}
// Поместить данные в стек
public void PushToStack(T item)
{
if (current < data.Length)
{
data[current++] = item;
}
else throw new StackOverflowException(); }
// Извлеч данные из стека
public T GetFromStack()
{
if (current > 0)
{
return data[--current];
}
else throw new StackFreeException();
}
protected T[] data;
protected int current;
}
}

Результат работы:
Код:

Заносим в стек:
0
1
2
3
4
5
6
7
8
9
Стек содержит:
9
8
7
6
5
4
3
2
1
0
Украина, Краматорск

Ответ отправил: Micren (Профессор)
Ответ отправлен: 20.05.2009, 07:18

Оценка ответа: 5
Комментарий к оценке:
Отличный ответ, спасибо.

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 249518 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Иоффе Мэир Вэлевич (Студент) :
    Здравствуйте, Savter!

    Вообще-то у нормального стека нет методов PutToStack и GetFromStack, но есть методы Push, Pop и Top, которые и реализованы в моём классе.

    Да и как пользователю (то есть программисту использующему этот класс) взаимодействовать с ним, кажется, предельно ясно из кода.


    Удачи.

    Приложение:
    Израиль, Кирьят Ям

    -----
    There are 10 types of people. Those who understand binary and those who don't.

    Ответ отправил: Иоффе Мэир Вэлевич (Студент)
    Ответ отправлен: 21.05.2009, 09:14

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 249579 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 149287:

    Здаствуйте эксперты, я начал осваивать C# и столкнулся с нескокими проблемами:
    1) как по какому либо действию открыть Форму(Form), которая заранее создана;
    2) gif файл не анимируется в picturebox, как заставить gif работать .
    Заранее благодарю за предложенные решения.

    Отправлен: 02.11.2008, 12:41
    Вопрос задал: Will Wandom (Посетитель)
    Всего ответов: 2
    Страница вопроса »


    Отвечает Иоффе Мэир Вэлевич (Студент) :
    Здравствуйте, Will Wandom!

    1) Допустим у Вас есть форма MyTestForm. чтобы отобразить её програмно делаете вот так

    Form f = new MyTestForm();
    f.Show();

    2) Прекрасно работает gif в picturebox. правда на некоторых гифах может ругаться на "A generic error occurred in GDI+." Пока ещё не разобрался к чему он это.. но, в общем, работает кое-как. Израиль, Кирьят Ям

    -----
    There are 10 types of people. Those who understand binary and those who don't.

    Ответ отправил: Иоффе Мэир Вэлевич (Студент)
    Ответ отправлен: 02.11.2008, 22:30

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 234218 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Челноков Виктор Альбертович (Студент) :
    Здравствуйте, Will Wandom!
    Открыть форму например нажатие кнопки

    private void button3_Click(object sender, EventArgs e)
    {

    Form2 f = new Form2(); //Form2 - имя формы которую надо открыть
    f.Show();
    }

    По поводу открытия картинки непонятно, если появляется ошибка сообщите текст.

    Ответ отправил: Челноков Виктор Альбертович (Студент)
    Ответ отправлен: 05.11.2008, 07:12

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 234412 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 166258:

    Доброе время суток!
    Как написать програму на С# для рисования штрих кодов.
    Может у кого будут какие то идеи буду признателен, хоть что нибудь чтоб оттолкнутся.

    Отправлен: 01.05.2009, 17:44
    Вопрос задал: Яким Володимир
    Всего ответов: 1
    Страница вопроса »


    Отвечает Челноков Виктор Альбертович (Студент) :
    Здравствуйте, !
    Посмотрите по ссылке
    http://www.codeproject.com/KB/graphics/ean_13_barcodes.aspx

    Ответ отправил: Челноков Виктор Альбертович (Студент)
    Ответ отправлен: 02.05.2009, 19:39

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 248545 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    подать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.



    В избранное