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

RFpro.ru: Microsoft .NET

  Все выпуски  

RFpro.ru: Microsoft .NET


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

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

Асмик Гаряка
Статус: Советник
Рейтинг: 213
∙ повысить рейтинг »
LfiN
Статус: Специалист
Рейтинг: 0
∙ повысить рейтинг »
PsySex
Статус: Профессионал
Рейтинг: 0
∙ повысить рейтинг »

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

Номер выпуска:266
Дата выхода:07.01.2016, 15:51
Администратор рассылки:Alexey G. Gladenyuk (Управляющий)
Подписчиков / экспертов:8 / 6
Вопросов / ответов:3 / 9

Консультация # 167778: Здравствуйте эксперты программирования буду очень вам признателен за помощь: Создайте класс «Стек», который реализует хранилище данных с использованием правила LIFO (последний пришел - первый вышел). Среди методов данного класса должны быть методы PutToStack – поставить элемент в стек, GetFromStack - получить элемент из стека, свойство Leng...
Консультация # 76120: Здравствуйте! Я бы хотел что бы вы посоветовали книгу в электронном варианте по С шарп. Желательно самый начальный уровень. ...
Консультация # 187392: Здравствуйте! Прошу решить задачу: Дан двумерный массив целых чисел из 4 столбцов и 3 строк. Найти сумму элементов стоящих до первого нуля. Просмотр в ести по строкам. Заменить элементы, стоящие после последнего нуля на эту сумму. Вывести массив по строкам до и после замены....

Консультация # 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
Отличный ответ, спасибо.
-----
Дата оценки: 01.01.2008, 00:00

Рейтинг ответа:

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


Консультирует Иоффе Мэир Вэлевич:

Здравствуйте, Savter!

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

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


Удачи.

Приложение:

Консультировал: Иоффе Мэир Вэлевич
Дата отправки: 21.05.2009, 09:14
Рейтинг ответа:

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

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

Здравствуйте! Я бы хотел что бы вы посоветовали книгу в электронном варианте по С шарп. Желательно самый начальный уровень.

Дата отправки: 17.02.2007, 10:33
Вопрос задал: Nikolaevich
Всего ответов: 5
Страница онлайн-консультации »


Консультирует Thread:

Здравствуйте, Nikolaevich!
Отличнейшая вещь - это Полный справочник по C# Г. Шилдт. Несмтотря на то, что это справочник, он построен так, что его можно использовать как обучающий курс. Скачать можно тут: http://openlib.org.ua/ru/books/category/60/2/

Консультировал: Thread
Дата отправки: 17.02.2007, 10:46
Рейтинг ответа:

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


Консультирует Ermine:

Здравствуйте, Nikolaevich!
Вам ещё посоветуют хорошие книжки. Я сам качал здесь и вполне доволен:

http://zipsites.ru/?n=15/10/3/
книги:
Microsoft Corporation. Разработка Windows-приложений на Microsoft Visual Basic .NET и Microsoft Visual C# -NET
и
Программирование для Microsoft Windows на С#. В 2-х томах. Том 1, 2. Петцолъд Ч.

Но эти книги весят десятки мегабайт. Они отсканированы и сохранены в PDF.

Консультировал: Ermine
Дата отправки: 17.02.2007, 10:49
Рейтинг ответа:

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


Консультирует Лимп:

Здравствуйте, Nikolaevich!
Эндрю Троелсен - С# и платформа .NET
Рейли Д. Создание приложений Microsoft ASP.NET
Шон Вилдермьюс - Практическое использование ADO.NET. Доступ к данным в Internet
все есть в pdf, если надо могу залить на файлообменник.

Консультировал: Лимп
Дата отправки: 17.02.2007, 10:57
Рейтинг ответа:

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


Консультирует Angel1:

Здравствуйте, Nikolaevich!
http://c-books.info/books/news5.php
Вот ссайт с электронными книгами. Советую Рихтера Net.Framework 2.0

Консультировал: Angel1
Дата отправки: 17.02.2007, 11:39
Рейтинг ответа:

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


Консультирует Heartwork:

Здравствуйте, Nikolaevich! Я рекомендую книгу Карли Ватсона. Очень просто и подробно описана работа по построению полноценных приложений на C# для Windows.

Консультировал: Heartwork
Дата отправки: 18.02.2007, 19:18
Рейтинг ответа:

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

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

Здравствуйте! Прошу решить задачу:

Дан двумерный массив целых чисел из 4 столбцов и 3 строк. Найти сумму элементов стоящих до первого нуля. Просмотр вести по строкам. Заменить элементы, стоящие после последнего нуля на эту сумму. Вывести массив по строкам до и после замены.

Дата отправки: 30.05.2013, 14:17
Вопрос задал: Ушаков Антон Сергеевич
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Чекменёв Александр Анатольевич (Профессор):

Здравствуйте, Ушаков Антон Сергеевич!

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

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            // массив
            int[,] array = new int[3, 4] { {1, 2, 3, 4},
                                           {5, 0, 7, 1},
                                           {0, 2, 4, 8} };

            // выводим исходный
            print(array);

            // сумма до нуля
            int sum = 0;
            int firstNullPos = -1;
            int lastNullPos = -1;
            int curPos = 0;
            foreach (int i in array)
            {
                if (i == 0)
                {
                    if (firstNullPos < 0)
                        firstNullPos = curPos;
                    lastNullPos = curPos;
                }

                if (firstNullPos < 0)
                    sum += i;

                ++curPos;
            }

            // заменяем элементы
            // если нулевой элемент был
            if (firstNullPos >= 0)
            {
                int height = array.GetLength(0);
                int width = array.GetLength(1);
                for (int pos = lastNullPos + 1; pos < array.Length; ++pos)
                {
                    int i = pos / width;
                    int j = pos % width;
                    array[i, j] = sum;
                }
            }

            // выводим изменённый
            System.Console.WriteLine();
            print(array);

            Console.ReadLine();
        }

        static void print(int[,] array)
        {
            for (int i = 0; i < array.GetLength(0); ++i)
            {
                for (int j = 0; j < array.GetLength(1); ++j)
                    System.Console.Write(array[i, j] + "\t");
                System.Console.WriteLine();
            }
        }
    }
}

Консультировал: Чекменёв Александр Анатольевич (Профессор)
Дата отправки: 30.05.2013, 17:30
Рейтинг ответа:

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


Консультирует Micren:

Здравствуйте, Ушаков Антон Сергеевич!

Код :
using System;

namespace N_187392
{
	class Program
	{
		static void Main (string[] arg)
		{
			int[,] arr = new int[3, 4]
				{{1, 2, 3, 4},
				 {5, 0, 7, 1},
				 {0, 2, 4, 8}};
			new Program ().Run (arr);
		}

		int lastZero = -1;

		void Run (int[,] arr)
		{			
			Print ("Исходный массив:", arr);

			// Поиск последнего нуля и суммирование
			int index = 0;
			int summa = 0;
			foreach (var item in arr) {
				if (item == 0) {
					lastZero = index;
				}
				if (lastZero == -1) {
					summa += item;
				}
				++index;
			}

			// Если не нашли нулей
			if (lastZero == -1) {
				Console.WriteLine ("Массив не содержит нулевых элементов");
			} else {
				Console.WriteLine ("Сумма: {0}", summa);
				++lastZero;
				int rows = arr.GetLength (0);
				int cols = arr.GetLength (1);
				int c = lastZero % cols;
				for (int r=lastZero/cols; r<rows; ++r) {
					while (c<cols) {
						arr [r, c] = summa;
						++c;
					}
					c = 0;
				}
				Print ("Результат:", arr);
			}
		}

		void Print (string msg, int[,] arr)
		{
			Console.WriteLine ("{0}", msg);
			int rows = arr.GetLength (0);
			int cols = arr.GetLength (1);
			for (int r=0; r<rows; ++r) {
				for (int c=0; c<cols; ++c) {
					Console.Write ("{0} ", arr [r, c]);
				}
				Console.WriteLine ();
			}
		}
	}
}


Вывод программы:
Код :
Исходный массив:
1 2 3 4 
5 0 7 1 
0 2 4 8 
Сумма: 15
Результат:
1 2 3 4 
5 0 7 1 
0 15 15 15

Консультировал: Micren
Дата отправки: 30.05.2013, 19:46

5
нет комментария
-----
Дата оценки: 30.05.2013, 21:15

Рейтинг ответа:

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


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

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

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


В избранное