Спонсор: Microsoft
Воронежский государственный университет
Опубликован: 04.02.2009 | Доступ: свободный | Студентов: 8216 / 665 | Оценка: 4.14 / 3.78 | Длительность: 19:54:00
Самостоятельная работа 7:

Основы языка C#. Работа с массивами и строками. Интерфейсы и коллекции

< Самостоятельная работа 6 || Самостоятельная работа 7: 123 || Лекция 7 >

3. Использование класса StringBuilder:

using System;
using System.Collections.Generic;
using System.Text;


namespace HelloWorldDemo
{
 class Program
 {
  static void Main(string[] args)
  {
   StringBuilder WordList = new StringBuilder("Каждый Охотник ");

   WordList.Append("Желает Знать Где ");
   Console.WriteLine(WordList);

   WordList.Append("Сидит Фазан");
   Console.WriteLine(WordList);

   // Сделать все буквы прописными
   string Spectrum = WordList.ToString().ToUpper();
   Console.WriteLine(Spectrum);
  }
 }
}

Результат работы программы:


4. Использование класса ArrayList.

Использование класса ArrayList из пространства имен System.Collections позволяет эффективно реализовать работу с массивами объектов, поскольку многие возможности, необходимые для этого реализованы изначально, в частности методы вставки, удаления и нумерации элементов.

Для использования возможностей ArrayList используется не обычное наследование, а модель включения в виде делегирования вызовов на выполнение различных действий классу производному от ArrayList:

public class NBooks : IEnumerable
{
// nbList — внутренний класс, который будет делать всю работу 
	private ArrayList nbList;

// Создаем объект класса nbList при помощи конструктора NBooks 
	public NBooks() {nbList = new ArrayList();}

// Реализуем нужные нам методы для приема вызовов извне и передачи их nbList 
		
	// Метод для вставки объекта NBook
	public void AddNBook(NBook nb)
	{ nbList.Add(nb); }

// Метод для удаления объекта NBook
	public void RemoveNBook(int nbToRemove)
	{ nbList.RemoveAt(nbToRemove); }

// Свойство, возвращающее количество объектов NBook
	public int NBookCount
	{ get { return nbList.Count; } }

// Метод для очистки объекта — удаления всех объектов NBook 
	public void ClearAllNBooks()
	{ nbList.Clear(); }

// Метод, который отвечает на вопрос — есть ли уже в наборе такой объект NBook 
	public bool NBookIsPresent(NBook c)
	{ return nbList.Contains(c); }

// Все, что связано с реализацией IEnumerator, перенаправляется в nbList 
	public IEnumerator GetEnumerator()
	{ return nbList.GetEnumerator(); }
}

Реализация класса NBook и код программы, использующей класс NBooks представлены ниже.

using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;

namespace NBooks
{
  public class NBook
  {

// Конструктор класса NBook

  public string Model;
  public string CPU_model;
  public int CPU_clock;
  public int RAM_size;

  public NBook(string mname, string CPU, int Clock, int RAM)
  {
    Model = mname;
    CPU_model = CPU; 
    CPU_clock = Clock; 
    RAM_size = RAM;
  }
}

  class Program
  {
    static void Main(string[] args)
    {
      NBooks nbLot = new NBooks();

// Создание списка объектов NBook 

	nbLot.AddNBook( new NBook("ASUS A7Sn","Intel Core 2 Duo  T8300", 2400, 2048));
	nbLot.AddNBook( new NBook("Acer Aspire 5530G-803G25Mi","AMD Turion X2 Ultra ZM80", 2100, 3072));
	nbLot.AddNBook( new NBook("Fujitsu Amilo Si 2636", "Intel Core 2 Duo T8300", 2400, 2048));
	nbLot.AddNBook( new NBook("HP Pavilion tx2650er", "AMD Turion X2 Ultra ZM82",  2200, 4096));

// Выводим информацию о каждом объекте при помощи конструкции foreach 

	Console.WriteLine("You have {0} in the lot: \n", nbLot.NBookCount);
	foreach (NBook nb in nbLot)
	{
	  Console.WriteLine("Model: {0}", nb.Model);
  Console.Write("CPU: {0}", nb.CPU_model);
  Console.WriteLine(" {0} GHz", nb.CPU_clock);
  Console.WriteLine("RAM: {0} GB\n", nb.RAM_size);
	}

// Удаляем один из ноутбуков

	nbLot.RemoveNBook(3);
	Console.WriteLine("You have {0} in the lot.\n", nbLot.NBookCount);

// Добавляем еще один ноутбук и проверяем его наличие в наборе 

	NBook temp = new NBook("ASUS M51Ta", "AMD Turion™ X2 Ultra ZM84",  2300, 4096);
	nbLot.AddNBook(temp);

	if(nbLot.NBookIsPresent(temp))
		Console.WriteLine(temp.Model + " is already in the lot.");

// Удалить все

	nbLot.ClearAllNBooks();
	Console.WriteLine("You have {0} in the lot.\n", nbLot.NBookCount);
    }
  }
}
13.2.

Результат выполнения программы:


Контрольное задание

Необходимо разработать консольное приложение для ввода с клавиатуры массива строк и поиска среди них строк, содержащих заданный строковый фрагмент.

Для поиска потребуется использование метода IndexOf(string findThisString) для строковых элементов массива. Метод возвращает позицию начала искомой подстроки от начала строки, либо значение -1 при отсутствии соответствия.

< Самостоятельная работа 6 || Самостоятельная работа 7: 123 || Лекция 7 >
Михаил Олифиренко
Михаил Олифиренко
Александр Табачук
Александр Табачук

Это только у меня не работает кнопочка "Получить код DreamSpark"? Пишет "временно не доступно..." А когда заработает?