Опубликован: 04.07.2012 | Доступ: свободный | Студентов: 2114 / 176 | Оценка: 4.08 / 3.69 | Длительность: 21:39:00
Самостоятельная работа 6:

Разработка серверных web-приложений на С#

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

Задание 2. Работа с массивами.

Следующие две программы демонстрируют, каким образом выполняется инициализация и работа с прямоугольными и ломаными массивами в C#.

  1. Прямоугольный массив.
    
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace HelloWorldDemo
    {
    class Program
    {
    static void Main(string[] args)
    {
    // Прямоугольный многомерный массив
    int[,]multMatr;
    multMatr = new int[10,10];
    
    // Заполнение массива 9 на 9:
    for (int i = 1; i <= 9; i++)
    for (int j = 1; j < 9; j++)
    multMatr[i, j] = i * j;
    
    // Вывод элементов многомерного массива 
    for (int i = 1; i <= 9; i++)
    {
    for (int j = 1; j <= 9; j++)
    {
    Console.Write(multMatr [i, j] + "\t");
    }
    Console.WriteLine();
    }
    }
    }
    

    В результат выполнения программы получим таблицу умножения следующего вида:

  2. Ломаный массив.
    
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace HelloWorldDemo
    {
    class Program
    {
       static void Main(string[] args)
       {
    // Ломаный многомерный массив из пяти внутренних массивов разного размера 
    int[][] JagArr = new int[10][];
    
    // Инициализация генератора случайных чисел
    Random rand = new Random();
    
    // Динамическое создание ломаного массив
    for (int i = 0; i < JagArr.Length; i++)
    {
    JagArr[i] = new int[i + rand.Next(10)];
    }
    
    // Вывод строк на консоль 
    // Каждый элемент по умолчанию имеет значение, равное  
    for (int i = 0; i < 10; i++)
    {
    // Свойство Length массива возвращает его размер
    Console.Write("Length of row {0} is {1}:\t", i, JagArr[i].Length);
    for (int j = 0; j < JagArr[i].Length; j++)
    {
    Console.Write(JagArr[i][j] + " ");
    }
    Console.WriteLine();
    }
       }
    }
    
    }
    

    В результате выполнения программы получим следующую таблицу:

Свойства и методы класса Array.

Следующий пример демонстрирует использование некоторых из свойств и методов класса Array:

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

namespace HelloWorldDemo
{
    class Program
    {
        static void Main(string[] args)
        {
     // Массив символьных строк
            string[] Brands = new string[]
				{"Audi",
                "BMW",
                "Buick",
                "Chevrolet",
                "Citroen",
                "Dodge",
                "Ferrari",
                "Fiat",
                "Ford",
                "Honda",
                "Hyundai",
                "Cherokee",
                "Cherry",
                "Lada",
                "Lamborghini",
                "Lincoln",
                "Mazda",
                "Mercedes",
                "Mitsubishi",
                "Nissan",
                "Opel",
                "Peugeot",
                "Plymoth",
                "Pontiac",
                "Renault",
                "Rover",
                "Saab",
                "Subaru",
                "Suzuki",
                "Toyota",
                "Volkswagen",
                "Volvo"};

	// Вывод марок автомобилей в соответствии с порядком элементов в массиве
 
			Console.WriteLine("Here is the array of car brands:");

			for (int i = 0; i < Brands.Length; i++)
				Console.Write(Brands[i] + "\t");

            Console.Write("\n\n");

	// Сортировка элементов в обратном порядке 
	
			Array.Reverse(Brands);

	// Вывод автомарок 
			Console.WriteLine("Here is the list once reversed:");
			for (int i = 0; i < Brands.Length; i++)
				Console.Write(Brands[i] + "\t");

            Console.Write("\n\n");

	// Остаются только первый и последний

			Console.WriteLine("Only two remain: ");
			Array.Clear(Brands, 2, Brands.Length-2);

			for (int i = 0; i < Brands.Length; i++)
			{
				Console.Write(Brands[i] + "\t\n");
			}
		}
    
    }
}

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

Использование класса 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);
}
}
}

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

Использование класса 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);
    }
  }
}

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

< Лекция 11 || Самостоятельная работа 6: 12345 || Лекция 12 >
Сергей Крупко
Сергей Крупко

Добрый день.

Я сейчас прохожу курс  повышения квалификации  - "Профессиональное веб-программирование". Мне нужно получить диплом по этому курсу. Я так полагаю нужно его оплатить чтобы получить диплом о повышении квалификации. Как мне оплатить этот курс?

 

Галина Башкирова
Галина Башкирова

Здравствуйте, недавно закончила курс по проф веб программиованию, мне прислали методические указания с примерами тем, однако темы там для специальности 

Системный администратор информационно-коммуникационных» систем.
Мне нужно самой найти тему? или делать по высланным темам