string queryString2 = "INSERT INTO Employees (Name) VALUES (@Name2)";
SqlCommand command2 = new SqlCommand(queryString2, connection, transaction);
command2.Parameters.AddWithValue("@Name2", "Jane Smith");
command2.ExecuteNonQuery();
transaction.Commit();
Console.WriteLine("Transaction committed.");}
catch (Exception ex)
{transaction.Rollback();
Console.WriteLine($"Transaction rolled back: {ex.Message}");}}
57. Раскройте сущность технологии ADO.NET. Опишите выполнение операторов SQL по модификации, вставке и удалению записей в наборе данных. Приведите примеры.
ADO.NET - это технология .NET Framework, которая предоставляет набор классов для работы с данными из различных источников, включая реляционные базы данных. ADO.NET позволяет выполнять операции с данными, такие как модификация, вставка и удаление записей.
Выполнение SQL-операторов для модификации, вставки и удаления данных с использованием ADO.NET включает в себя следующие основные шаги:
1. Модификация записей:
- Создайте объект SqlCommand или OleDbCommand для выполнения SQL-оператора UPDATE.
- Укажите SQL-запрос и передайте параметры для обновляемых полей.
- Вызовите метод ExecuteNonQuery() для выполнения запроса.
Пример обновления записи:
string queryString = "UPDATE Employees SET Name = @Name WHERE EmployeeID = @EmployeeID";
SqlCommand command = new SqlCommand(queryString, connection);
command.Parameters.AddWithValue("@Name", "John Smith");
command.Parameters.AddWithValue("@EmployeeID", 1);
int rowsAffected = command.ExecuteNonQuery();
Console.WriteLine($"{rowsAffected} row(s) updated.");
2. Вставка записей:
- Создайте объект SqlCommand или OleDbCommand для выполнения SQL-оператора INSERT.
- Укажите SQL-запрос и передайте параметры для вставляемых полей.
- Вызовите метод ExecuteNonQuery() для выполнения запроса.
Пример вставки записи:
string queryString = "INSERT INTO Employees (Name, Department) VALUES (@Name, @Department)";
SqlCommand command = new SqlCommand(queryString, connection);
command.Parameters.AddWithValue("@Name", "Jane Doe");
command.Parameters.AddWithValue("@Department", "Sales");
int rowsAffected = command.ExecuteNonQuery();
Console.WriteLine($"{rowsAffected} row(s) inserted.");
3. Удаление записей:
- Создайте объект SqlCommand или OleDbCommand для выполнения SQL-оператора DELETE.
- Укажите SQL-запрос и передайте параметры для удаляемых записей.
- Вызовите метод ExecuteNonQuery() для выполнения запроса.
Пример удаления записи:
string queryString = "DELETE FROM Employees WHERE EmployeeID = @EmployeeID";
SqlCommand command = new SqlCommand(queryString, connection);
command.Parameters.AddWithValue("@EmployeeID", 1);
int rowsAffected = command.ExecuteNonQuery();
Console.WriteLine($"{rowsAffected} row(s) deleted.");
Также ADO.NET предоставляет возможность работать с наборами данных, представленными объектами DataSet и DataTable. Это позволяет выполнять операции с данными в памяти и синхронизировать изменения с базой данных.
Пример работы с DataTable:
DataTable table = new DataTable("Employees");
table.Columns.Add("EmployeeID", typeof(int));
table.Columns.Add("Name", typeof(string));
DataRow row1 = table.NewRow();
row1["EmployeeID"] = 1;
row1["Name"] = "John Doe";
table.Rows.Add(row1);
DataRow row2 = table.NewRow();
row2["EmployeeID"] = 2;
row2["Name"] = "Jane Smith";
table.Rows.Add(row2);
// Модификация, вставка и удаление записей в DataTable
table.Rows[0]["Name"] = "John Smith";
table.Rows.Add(new object[] { 3, "David Johnson" });
table.Rows[1].Delete();
// Обновление данных в базе данных
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Employees", connection);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.Update(table);
Эти примеры демонстрируют основные возможности ADO.NET для выполнения операций с данными, таких как модификация, вставка и удаление записей. Вы можете использовать эти принципы для создания приложений, взаимодействующих с различными источниками данных.
SqlCommand command2 = new SqlCommand(queryString2, connection, transaction);
command2.Parameters.AddWithValue("@Name2", "Jane Smith");
command2.ExecuteNonQuery();
transaction.Commit();
Console.WriteLine("Transaction committed.");}
catch (Exception ex)
{transaction.Rollback();
Console.WriteLine($"Transaction rolled back: {ex.Message}");}}
57. Раскройте сущность технологии ADO.NET. Опишите выполнение операторов SQL по модификации, вставке и удалению записей в наборе данных. Приведите примеры.
ADO.NET - это технология .NET Framework, которая предоставляет набор классов для работы с данными из различных источников, включая реляционные базы данных. ADO.NET позволяет выполнять операции с данными, такие как модификация, вставка и удаление записей.
Выполнение SQL-операторов для модификации, вставки и удаления данных с использованием ADO.NET включает в себя следующие основные шаги:
1. Модификация записей:
- Создайте объект SqlCommand или OleDbCommand для выполнения SQL-оператора UPDATE.
- Укажите SQL-запрос и передайте параметры для обновляемых полей.
- Вызовите метод ExecuteNonQuery() для выполнения запроса.
Пример обновления записи:
string queryString = "UPDATE Employees SET Name = @Name WHERE EmployeeID = @EmployeeID";
SqlCommand command = new SqlCommand(queryString, connection);
command.Parameters.AddWithValue("@Name", "John Smith");
command.Parameters.AddWithValue("@EmployeeID", 1);
int rowsAffected = command.ExecuteNonQuery();
Console.WriteLine($"{rowsAffected} row(s) updated.");
2. Вставка записей:
- Создайте объект SqlCommand или OleDbCommand для выполнения SQL-оператора INSERT.
- Укажите SQL-запрос и передайте параметры для вставляемых полей.
- Вызовите метод ExecuteNonQuery() для выполнения запроса.
Пример вставки записи:
string queryString = "INSERT INTO Employees (Name, Department) VALUES (@Name, @Department)";
SqlCommand command = new SqlCommand(queryString, connection);
command.Parameters.AddWithValue("@Name", "Jane Doe");
command.Parameters.AddWithValue("@Department", "Sales");
int rowsAffected = command.ExecuteNonQuery();
Console.WriteLine($"{rowsAffected} row(s) inserted.");
3. Удаление записей:
- Создайте объект SqlCommand или OleDbCommand для выполнения SQL-оператора DELETE.
- Укажите SQL-запрос и передайте параметры для удаляемых записей.
- Вызовите метод ExecuteNonQuery() для выполнения запроса.
Пример удаления записи:
string queryString = "DELETE FROM Employees WHERE EmployeeID = @EmployeeID";
SqlCommand command = new SqlCommand(queryString, connection);
command.Parameters.AddWithValue("@EmployeeID", 1);
int rowsAffected = command.ExecuteNonQuery();
Console.WriteLine($"{rowsAffected} row(s) deleted.");
Также ADO.NET предоставляет возможность работать с наборами данных, представленными объектами DataSet и DataTable. Это позволяет выполнять операции с данными в памяти и синхронизировать изменения с базой данных.
Пример работы с DataTable:
DataTable table = new DataTable("Employees");
table.Columns.Add("EmployeeID", typeof(int));
table.Columns.Add("Name", typeof(string));
DataRow row1 = table.NewRow();
row1["EmployeeID"] = 1;
row1["Name"] = "John Doe";
table.Rows.Add(row1);
DataRow row2 = table.NewRow();
row2["EmployeeID"] = 2;
row2["Name"] = "Jane Smith";
table.Rows.Add(row2);
// Модификация, вставка и удаление записей в DataTable
table.Rows[0]["Name"] = "John Smith";
table.Rows.Add(new object[] { 3, "David Johnson" });
table.Rows[1].Delete();
// Обновление данных в базе данных
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Employees", connection);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.Update(table);
Эти примеры демонстрируют основные возможности ADO.NET для выполнения операций с данными, таких как модификация, вставка и удаление записей. Вы можете использовать эти принципы для создания приложений, взаимодействующих с различными источниками данных.
58. Опишите методы развертывания и технологию создания инсталляционных программ.
Развертывание программного обеспечения - это процесс установки и настройки приложения на целевых серверах или компьютерах. Существует несколько распространенных методов развертывания, каждый из которых имеет свои особенности и преимущества:
Существует несколько основных методов развертывания:
1. Ручная установка. Это самый простой, но трудоемкий подход, когда пользователь или системный администратор вручную копирует и настраивает все необходимые файлы, библиотеки, конфигурации и т.д. Подходит для небольших программ с минимальными требованиями.
2. Использование установщиков (инсталляторов). Это специальные программы, которые автоматизируют процесс установки. Они упаковывают все компоненты программы в один дистрибутив и предоставляют интерфейс для простой установки на целевом компьютере. Популярные примеры - Microsoft Installer (MSI), NSIS, Inno Setup.
3. Развертывание через системы управления конфигурациями. Здесь используются специальные средства, такие как Puppet, Ansible, Chef, которые позволяют объявлять, развертывать и управлять всей инфраструктурой в виде кода. Это особенно полезно для сложных систем с множеством зависимостей.
4. Контейнеризация. Приложения упаковываются в контейнеры (например, Docker), которые включают в себя все необходимые зависимости. При развертывании контейнеры быстро разворачиваются на целевых системах.
Создание инсталятора.
Практический блок
I. Составьте программу на языке программирования C#:
1. Создать класс Edition с функциями, позволяющими вывести на экран информацию об издании, а также определить, является ли данное издание искомым.
2. Создать производные классы: Book (название, фамилия автора, год издания, издательство), Article (название, фамилия автора, название журнала, его номер и год издания), OnlineResource (название, фамилия автора, ссылка, аннотация). Разработать конструкторы класса, свойства для доступа к поля классам, переопределить методы базового класса.
3. Создать каталог (массив) из n изданий, вывести полную информацию из каталога, организовать поиск изданий по фамилии автора, организовать поиск наиболее древнего издания.
4. Организовать ввод данных с клавиатуры, предусмотреть обработку исключительных ситуаций, возникающих при вводе данных.
using System;
using System.Collections.Generic;
using System.Linq;
class Edition
{
public string Title { get; set; }
public string AuthorLastName { get; set; }
public Edition(string title, string authorLastName)
{
Title = title;
AuthorLastName = authorLastName;
}
public virtual void PrintInfo()
{
Console.WriteLine($"Название: {Title}, Автор: {AuthorLastName}");
}
public virtual bool IsMatch(string searchTerm)
{
return AuthorLastName.Equals(searchTerm, StringComparison.OrdinalIgnoreCase);
}
}
class Book : Edition
{
public int Year { get; set; }
public string Publisher { get; set; }
public Book(string ti tle, string authorLastName, int year, string publisher)
: base(title, authorLastName)
{
Year = year;
Publisher = publisher;
}
public override void PrintInfo()
{
base.PrintInfo();
Console.WriteLine($"Год издания: {Year}, Издательство: {Publisher}");
}
}
class Article : Edition
{
public string JournalName { get; set; }
public int JournalNumber { get; set; }
public int Year { get; set; }
public Article(string title, string authorLastName, string journalName, int journalNumber, int year)
: base(title, authorLastName)
{
JournalName = journalName;
JournalNumber = journalNumber;
Year = year;
}
public override void PrintInfo()
{
base.PrintInfo();
Console.WriteLine($"Журнал: {JournalName}, Номер: {JournalNumber}, Год: {Year}");
}
}
class OnlineResource : Edition
{
public string Link { get; set; }
public string Annotation { get; set; }
Развертывание программного обеспечения - это процесс установки и настройки приложения на целевых серверах или компьютерах. Существует несколько распространенных методов развертывания, каждый из которых имеет свои особенности и преимущества:
Существует несколько основных методов развертывания:
1. Ручная установка. Это самый простой, но трудоемкий подход, когда пользователь или системный администратор вручную копирует и настраивает все необходимые файлы, библиотеки, конфигурации и т.д. Подходит для небольших программ с минимальными требованиями.
2. Использование установщиков (инсталляторов). Это специальные программы, которые автоматизируют процесс установки. Они упаковывают все компоненты программы в один дистрибутив и предоставляют интерфейс для простой установки на целевом компьютере. Популярные примеры - Microsoft Installer (MSI), NSIS, Inno Setup.
3. Развертывание через системы управления конфигурациями. Здесь используются специальные средства, такие как Puppet, Ansible, Chef, которые позволяют объявлять, развертывать и управлять всей инфраструктурой в виде кода. Это особенно полезно для сложных систем с множеством зависимостей.
4. Контейнеризация. Приложения упаковываются в контейнеры (например, Docker), которые включают в себя все необходимые зависимости. При развертывании контейнеры быстро разворачиваются на целевых системах.
Создание инсталятора.
Практический блок
I. Составьте программу на языке программирования C#:
1. Создать класс Edition с функциями, позволяющими вывести на экран информацию об издании, а также определить, является ли данное издание искомым.
2. Создать производные классы: Book (название, фамилия автора, год издания, издательство), Article (название, фамилия автора, название журнала, его номер и год издания), OnlineResource (название, фамилия автора, ссылка, аннотация). Разработать конструкторы класса, свойства для доступа к поля классам, переопределить методы базового класса.
3. Создать каталог (массив) из n изданий, вывести полную информацию из каталога, организовать поиск изданий по фамилии автора, организовать поиск наиболее древнего издания.
4. Организовать ввод данных с клавиатуры, предусмотреть обработку исключительных ситуаций, возникающих при вводе данных.
using System;
using System.Collections.Generic;
using System.Linq;
class Edition
{
public string Title { get; set; }
public string AuthorLastName { get; set; }
public Edition(string title, string authorLastName)
{
Title = title;
AuthorLastName = authorLastName;
}
public virtual void PrintInfo()
{
Console.WriteLine($"Название: {Title}, Автор: {AuthorLastName}");
}
public virtual bool IsMatch(string searchTerm)
{
return AuthorLastName.Equals(searchTerm, StringComparison.OrdinalIgnoreCase);
}
}
class Book : Edition
{
public int Year { get; set; }
public string Publisher { get; set; }
public Book(string ti tle, string authorLastName, int year, string publisher)
: base(title, authorLastName)
{
Year = year;
Publisher = publisher;
}
public override void PrintInfo()
{
base.PrintInfo();
Console.WriteLine($"Год издания: {Year}, Издательство: {Publisher}");
}
}
class Article : Edition
{
public string JournalName { get; set; }
public int JournalNumber { get; set; }
public int Year { get; set; }
public Article(string title, string authorLastName, string journalName, int journalNumber, int year)
: base(title, authorLastName)
{
JournalName = journalName;
JournalNumber = journalNumber;
Year = year;
}
public override void PrintInfo()
{
base.PrintInfo();
Console.WriteLine($"Журнал: {JournalName}, Номер: {JournalNumber}, Год: {Year}");
}
}
class OnlineResource : Edition
{
public string Link { get; set; }
public string Annotation { get; set; }
public OnlineResource(string title, string authorLastName, string link, string annotation)
: base(title, authorLastName)
{
Link = link;
Annotation = annotation;
}
public override void PrintInfo()
{
base.PrintInfo();
Console.WriteLine($"Ссылка: {Link}, Аннотация: {Annotation}");
}
}
class Program
{
static void Main()
{
List<Edition> catalog = new List<Edition>();
while (true)
{
Console.WriteLine("Выберите тип издания: 1 - Книга, 2 - Статья, 3 - Онлайн-ресурс, 0 - Завершить ввод");
int choice;
if (!int.TryParse(Console.ReadLine(), out choice) choice < 0 choice > 3)
{
Console.WriteLine("Неправильный ввод. Пожалуйста, введите число от 0 до 3.");
continue;
}
if (choice == 0)
{
break;
}
try
{
Console.Write("Введите название: ");
string title = Console.ReadLine();
Console.Write("Введите фамилию автора: ");
string authorLastName = Console.ReadLine();
if (choice == 1)
{
Console.Write("Введите год издания: ");
int year = int.Parse(Console.ReadLine());
Console.Write("Введите издательство: ");
string publisher = Console.ReadLine();
catalog.Add(new Book(title, authorLastName, year, publisher));
}
else if (choice == 2)
{
Console.Write("Введите название журнала: ");
string journalName = Console.ReadLine();
Console.Write("Введите номер журнала: ");
int journalNumber = int.Parse(Console.ReadLine());
Console.Write("Введите год издания: ");
int year = int.Parse(Console.ReadLine());
catalog.Add(new Article(title, authorLastName, journalName, journalNumber, year));
}
else if (choice == 3)
{
Console.Write("Введите ссылку: ");
string link = Console.ReadLine();
Console.Write("Введите аннотацию: ");
string annotation = Console.ReadLine();
catalog.Add(new OnlineResource(title, authorLastName, link, annotation));
}
}
catch (FormatException e)
{
Console.WriteLine("Ошибка ввода данных: " + e.Message);
}
}
Console.WriteLine("\nКаталог изданий:");
foreach (var edition in catalog)
{
edition.PrintInfo();
Console.WriteLine();
}
Console.Write("\nВведите фамилию автора для поиска: ");
string searchAuthor = Console.ReadLine();
var foundEditions = catalog.Where(e => e.IsMatch(searchAuthor)).ToList();
if (foundEditions.Any())
{
Console.WriteLine("\nНайденные издания:");
foreach (var edition in foundEditions)
{
edition.PrintInfo();
Console.WriteLine();
}
}
else
{
Console.WriteLine("Издания с таким автором не найдены.");
}
var oldestEdition = catalog.OfType<Book>()
.Concat<Edition>(catalog.OfType<Article>())
.OrderBy(e => e is Book book ? book.Year : ((Article)e).Year)
.FirstOrDefault();
if (oldestEdition != null)
{
Console.WriteLine("\nСамое древнее издание:");
oldestEdition.PrintInfo();
}
else
{
Console.WriteLine("В каталоге нет книг или статей.");
}
}
}
II. Составьте программу на языке программирования C#:
: base(title, authorLastName)
{
Link = link;
Annotation = annotation;
}
public override void PrintInfo()
{
base.PrintInfo();
Console.WriteLine($"Ссылка: {Link}, Аннотация: {Annotation}");
}
}
class Program
{
static void Main()
{
List<Edition> catalog = new List<Edition>();
while (true)
{
Console.WriteLine("Выберите тип издания: 1 - Книга, 2 - Статья, 3 - Онлайн-ресурс, 0 - Завершить ввод");
int choice;
if (!int.TryParse(Console.ReadLine(), out choice) choice < 0 choice > 3)
{
Console.WriteLine("Неправильный ввод. Пожалуйста, введите число от 0 до 3.");
continue;
}
if (choice == 0)
{
break;
}
try
{
Console.Write("Введите название: ");
string title = Console.ReadLine();
Console.Write("Введите фамилию автора: ");
string authorLastName = Console.ReadLine();
if (choice == 1)
{
Console.Write("Введите год издания: ");
int year = int.Parse(Console.ReadLine());
Console.Write("Введите издательство: ");
string publisher = Console.ReadLine();
catalog.Add(new Book(title, authorLastName, year, publisher));
}
else if (choice == 2)
{
Console.Write("Введите название журнала: ");
string journalName = Console.ReadLine();
Console.Write("Введите номер журнала: ");
int journalNumber = int.Parse(Console.ReadLine());
Console.Write("Введите год издания: ");
int year = int.Parse(Console.ReadLine());
catalog.Add(new Article(title, authorLastName, journalName, journalNumber, year));
}
else if (choice == 3)
{
Console.Write("Введите ссылку: ");
string link = Console.ReadLine();
Console.Write("Введите аннотацию: ");
string annotation = Console.ReadLine();
catalog.Add(new OnlineResource(title, authorLastName, link, annotation));
}
}
catch (FormatException e)
{
Console.WriteLine("Ошибка ввода данных: " + e.Message);
}
}
Console.WriteLine("\nКаталог изданий:");
foreach (var edition in catalog)
{
edition.PrintInfo();
Console.WriteLine();
}
Console.Write("\nВведите фамилию автора для поиска: ");
string searchAuthor = Console.ReadLine();
var foundEditions = catalog.Where(e => e.IsMatch(searchAuthor)).ToList();
if (foundEditions.Any())
{
Console.WriteLine("\nНайденные издания:");
foreach (var edition in foundEditions)
{
edition.PrintInfo();
Console.WriteLine();
}
}
else
{
Console.WriteLine("Издания с таким автором не найдены.");
}
var oldestEdition = catalog.OfType<Book>()
.Concat<Edition>(catalog.OfType<Article>())
.OrderBy(e => e is Book book ? book.Year : ((Article)e).Year)
.FirstOrDefault();
if (oldestEdition != null)
{
Console.WriteLine("\nСамое древнее издание:");
oldestEdition.PrintInfo();
}
else
{
Console.WriteLine("В каталоге нет книг или статей.");
}
}
}
II. Составьте программу на языке программирования C#:
1. Создать класс Transport с функциями, позволяющими вывести на экран информацию о транспортном средстве, а также определить грузоподъемность транспортного средства.
2. Создать производные классы: Car (марка, номер, скорость, грузоподъемность), Motorbike (марка, номер, скорость, грузоподъемность, наличие коляски, при этом если коляска отсутствует, то грузоподъемность равна 0), Truck (марка, номер, скорость, грузоподъемность, наличие прицепа, при этом если есть прицеп, то грузоподъемность увеличивается в два раза). Разработать конструкторы класса, свойства для доступа к поля классам, переопределить методы базового класса.
3. Создать базу (массив) из n машин, вывести полную информацию из базы на экран, организовать поиск машин, удовлетворяющих требова ниям грузоподъемности, организовать поиск наименее скоростного транспортного средства.
4. Организовать ввод данных с клавиатуры, предусмотреть обработку исключительных ситуаций, возникающих при вводе данных.
using System;
using System.Collections.Generic;
class Transport
{
public string Brand { get; set; }
public string Number { get; set; }
public int Speed { get; set; }
public int Capacity { get; set; }
public Transport(string brand, string number, int speed, int capacity)
{
Brand = brand;
Number = number;
Speed = speed;
Capacity = capacity;
}
public virtual void DisplayInfo()
{
Console.WriteLine($"Марка: {Brand}, Номер: {Number}, Скорость: {Speed} км/ч, Грузоподъемность: {Capacity} кг");
}
public virtual int GetCapacity()
{
return Capacity;
}
}
class Car : Transport
{
public Car(string brand, string number, int speed, int capacity) : base(brand, number, speed, capacity)
{
}
public override void DisplayInfo()
{
base.DisplayInfo();
}
}
class Motorbike : Transport
{
public bool HasSidecar { get; set; }
public Motorbike(string brand, string number, int speed, int capacity, bool hasSidecar) : base(brand, number, speed, capacity)
{
HasSidecar = hasSidecar;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine($"Наличие коляски: {(HasSidecar ? "Есть" : "Нет")}");
}
public override int GetCapacity()
{
return HasSidecar ? base.GetCapacity() : 0;
}
}
class Truck : Transport
{
public bool HasTrailer { get; set; }
public Truck(string brand, string number, int speed, int capacity, bool hasTrailer) : base(brand, number, speed, capacity)
{
HasTrailer = hasTrailer;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine($"Наличие прицепа: {(HasTrailer ? "Есть" : "Нет")}");
}
public override int GetCapacity()
{
return HasTrailer ? base.GetCapacity() * 2 : base.GetCapacity();
}
}
class Program
{
static void Main()
{
List<Transport> transports = new List<Transport>();
try
{
Console.Write("Введите количество транспортных средств: ");
int n = int.Parse(Console.ReadLine());
for (int i = 0; i < n; i++)
{
Console.WriteLine($"Транспортное средство {i + 1}:");
Console.Write("Введите тип (Car, Motorbike, Truck): ");
string type = Console.ReadLine();
Console.Write("Введите марку: ");
string brand = Console.ReadLine();
Console.Write("Введите номер: ");
string number = Console.ReadLine();
Console.Write("Введите скорость: ");
int speed = int.Parse(Console.ReadLine());
Console.Write("Введите грузоподъемность: ");
int capacity = int.Parse(Console.ReadLine());
switch (type.ToLower())
{
case "car":
transports.Add(new Car(brand, number, speed, capacity));
break;
case "motorbike":
2. Создать производные классы: Car (марка, номер, скорость, грузоподъемность), Motorbike (марка, номер, скорость, грузоподъемность, наличие коляски, при этом если коляска отсутствует, то грузоподъемность равна 0), Truck (марка, номер, скорость, грузоподъемность, наличие прицепа, при этом если есть прицеп, то грузоподъемность увеличивается в два раза). Разработать конструкторы класса, свойства для доступа к поля классам, переопределить методы базового класса.
3. Создать базу (массив) из n машин, вывести полную информацию из базы на экран, организовать поиск машин, удовлетворя
4. Организовать ввод данных с клавиатуры, предусмотреть обработку исключительных ситуаций, возникающих при вводе данных.
using System;
using System.Collections.Generic;
class Transport
{
public string Brand { get; set; }
public string Number { get; set; }
public int Speed { get; set; }
public int Capacity { get; set; }
public Transport(string brand, string number, int speed, int capacity)
{
Brand = brand;
Number = number;
Speed = speed;
Capacity = capacity;
}
public virtual void DisplayInfo()
{
Console.WriteLine($"Марка: {Brand}, Номер: {Number}, Скорость: {Speed} км/ч, Грузоподъемность: {Capacity} кг");
}
public virtual int GetCapacity()
{
return Capacity;
}
}
class Car : Transport
{
public Car(string brand, string number, int speed, int capacity) : base(brand, number, speed, capacity)
{
}
public override void DisplayInfo()
{
base.DisplayInfo();
}
}
class Motorbike : Transport
{
public bool HasSidecar { get; set; }
public Motorbike(string brand, string number, int speed, int capacity, bool hasSidecar) : base(brand, number, speed, capacity)
{
HasSidecar = hasSidecar;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine($"Наличие коляски: {(HasSidecar ? "Есть" : "Нет")}");
}
public override int GetCapacity()
{
return HasSidecar ? base.GetCapacity() : 0;
}
}
class Truck : Transport
{
public bool HasTrailer { get; set; }
public Truck(string brand, string number, int speed, int capacity, bool hasTrailer) : base(brand, number, speed, capacity)
{
HasTrailer = hasTrailer;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine($"Наличие прицепа: {(HasTrailer ? "Есть" : "Нет")}");
}
public override int GetCapacity()
{
return HasTrailer ? base.GetCapacity() * 2 : base.GetCapacity();
}
}
class Program
{
static void Main()
{
List<Transport> transports = new List<Transport>();
try
{
Console.Write("Введите количество транспортных средств: ");
int n = int.Parse(Console.ReadLine());
for (int i = 0; i < n; i++)
{
Console.WriteLine($"Транспортное средство {i + 1}:");
Console.Write("Введите тип (Car, Motorbike, Truck): ");
string type = Console.ReadLine();
Console.Write("Введите марку: ");
string brand = Console.ReadLine();
Console.Write("Введите номер: ");
string number = Console.ReadLine();
Console.Write("Введите скорость: ");
int speed = int.Parse(Console.ReadLine());
Console.Write("Введите грузоподъемность: ");
int capacity = int.Parse(Console.ReadLine());
switch (type.ToLower())
{
case "car":
transports.Add(new Car(brand, number, speed, capacity));
break;
case "motorbike":
Console.Write("Наличие коляски (true/false): ");
bool hasSidecar = bool.Parse(Console.ReadLine());
transports.Add(new Motorbike(brand, number, speed, capacity, hasSidecar));
break;
case "truck":
Console.Write("Наличие прицепа (true/false): ");
bool hasTrailer = bool.Parse(Console.ReadLine());
transports.Add(new Truck(brand, number, speed, capacity, hasTrailer));
break;
default:
Console.WriteLine("Неверный тип транспортного средства.");
break;
}
}
}
catch (FormatException)
{
Console.WriteLine("Ошибка ввода данных. Пожалуйста, введите корректные значения.");
}
Console.WriteLine("\nПолная информация о транспортных средствах:");
foreach (var transport in transports)
{
transport.DisplayInfo();
Console.WriteLine();
}
Console.Write("Введите минимальную требуемую грузоподъемность: ");
int requiredCapacity = int.Parse(Console.ReadLine());
Console.WriteLine("\nТранспортные средства, удовлетворяющие требованиям грузоподъемности:");
foreach (var transport in transports)
{
if (transport.GetCapacity() >= requiredCapacity)
{
transport.DisplayInfo();
Console.WriteLine();
}
}
Transport slowestTransport = transports[0];
foreach (var transport in transports)
{
if (transport.Speed < slowestTransport.Speed)
{
slowestTransport = transport;
}
}
Console.WriteLine("\nНаименее скоростное транспортное средство:");
slowestTransport.DisplayInfo();
}
}
III. Составьте программу на языке программирования C#:
1. Создать класс Persona с функциями, позволяющими вывести на экран информацию о персоне, а также определить ее возраст (на момент текущей даты).
2. Создать производные классы: Enrollee (фамилия, дата рождения, факультет), Student (фамилия, дата рождения, факультет, курс), Teacher (фамилия, дата рождения, факультет, должность, стаж). Разработать конструкторы класса, свойства для доступа к поля классам, переопределить методы базового класса.
3. Создать базу (массив) из n персон, вывести полную информацию из базы на экран, организовать поиск персон, чей возраст попадает в заданный диапазон, организовать поиск преподавателей с наибольшим стажем работы.
4. Организовать ввод данных с клавиатуры, предусмотреть обработку исключительных ситуаций, возникающих при вводе данных.
using System;
using System.Collections.Generic;
using System.Linq;
class Persona
{
public string LastName { get; set; }
public DateTime BirthDate { get; set; }
public Persona(string lastName, DateTime birthDate)
{
LastName = lastName;
BirthDate = birthDate;
}
public virtual void DisplayInfo()
{
Console.WriteLine($"Фамилия: {LastName}, Дата рождения: {BirthDate.ToShortDateString()}");
}
public int GetAge()
{
DateTime now = DateTime.Now;
int age = now.Year - BirthDate.Year;
if (now < BirthDate.AddYears(age))
age--;
return age;
}
}
class Enrollee : Persona
{
public string Faculty { get; set; }
public Enrollee(string lastName, DateTime birthDate, string faculty)
: base(lastName, birthDate)
{
Faculty = faculty;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine($"Факультет: {Faculty}");
}
}
class Student : Enrollee
{
public int Course { get; set; }
public Student(string lastName, DateTime birthDate, string faculty, int course)
: base(lastName, birthDate, faculty)
{
Course = course;
}
public override void DisplayInfo()
{
base.DisplayInfo();
bool hasSidecar = bool.Parse(Console.ReadLine());
transports.Add(new Motorbike(brand, number, speed, capacity, hasSidecar));
break;
case "truck":
Console.Write("Наличие прицепа (true/false): ");
bool hasTrailer = bool.Parse(Console.ReadLine());
transports.Add(new Truck(brand, number, speed, capacity, hasTrailer));
break;
default:
Console.WriteLine("Неверный тип транспортного средства.");
break;
}
}
}
catch (FormatException)
{
Console.WriteLine("Ошибка ввода данных. Пожалуйста, введите корректные значения.");
}
Console.WriteLine("\nПолная информация о транспортных средствах:");
foreach (var transport in transports)
{
transport.DisplayInfo();
Console.WriteLine();
}
Console.Write("Введите минимальную требуемую грузоподъемность: ");
int requiredCapacity = int.Parse(Console.ReadLine());
Console.WriteLine("\nТранспортные средства, удовлетворяющие требованиям грузоподъемности:");
foreach (var transport in transports)
{
if (transport.GetCapacity() >= requiredCapacity)
{
transport.DisplayInfo();
Console.WriteLine();
}
}
Transport slowestTransport = transports[0];
foreach (var transport in transports)
{
if (transport.Speed < slowestTransport.Speed)
{
slowestTransport = transport;
}
}
Console.WriteLine("\nНаименее скоростное транспортное средство:");
slowestTransport.DisplayInfo();
}
}
III. Составьте программу на языке программирования C#:
1. Создать класс Persona с функциями, позволяющими вывести на экран информацию о персоне, а также определить ее возраст (на момент текущей даты).
2. Создать производные классы: Enrollee (фамилия, дата рождения, факультет), Student (фамилия, дата рождения, факультет, курс), Teacher (фамилия, дата рождения, факультет, должность, стаж). Разработать конструкторы класса, свойства для доступа к поля классам, переопределить методы базового класса.
3. Создать базу (массив) из n персон, вывести полную информацию из базы на экран, организовать поиск персон, чей возраст попадает в заданный диапазон, организовать поиск преподавателей с наибольшим стажем работы.
4. Организовать ввод данных с клавиатуры, предусмотреть обработку исключительных ситуаций, возникающих при вводе данных.
using System;
using System.Collections.Generic;
using System.Linq;
class Persona
{
public string LastName { get; set; }
public DateTime BirthDate { get; set; }
public Persona(string lastName, DateTime birthDate)
{
LastName = lastName;
BirthDate = birthDate;
}
public virtual void DisplayInfo()
{
Console.WriteLine($"Фамилия: {LastName}, Дата рождения: {BirthDate.ToShortDateString()}");
}
public int GetAge()
{
DateTime now = DateTime.Now;
int age = now.Year - BirthDate.Year;
if (now < BirthDate.AddYears(age))
age--;
return age;
}
}
class Enrollee : Persona
{
public string Faculty { get; set; }
public Enrollee(string lastName, DateTime birthDate, string faculty)
: base(lastName, birthDate)
{
Faculty = faculty;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine($"Факультет: {Faculty}");
}
}
class Student : Enrollee
{
public int Course { get; set; }
public Student(string lastName, DateTime birthDate, string faculty, int course)
: base(lastName, birthDate, faculty)
{
Course = course;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine($"Курс: {Course}");
}
}
class Teacher : Persona
{
public string Faculty { get; set; }
public string Position { get; set; }
public int Experience { get; set; }
public Teacher(string lastName, DateTime birthDate, string faculty, string position, int experience)
: base(lastName, birthDate)
{
Faculty = faculty;
Position = position;
Experience = experience;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine($"Факультет: {Faculty}, Должность: {Position}, Стаж: {Experience} лет");
}
}
class Program
{
static void Main(string[] args)
{
List<Persona> persons = new List<Persona>();
persons.Add(new Enrollee("Иванов", new DateTime(2003, 5, 12), "Физико-математический"));
persons.Add(new Student("Петров", new DateTime(2000, 8, 25), "Химический", 3));
persons.Add(new Teacher("Сидоров", new DateTime(1975, 3, 10), "Физико-математический", "Доцент", 20));
Console.WriteLine("Полная информация о персонах:");
foreach (var person in persons)
{
person.DisplayInfo();
Console.WriteLine($"Возраст: {person.GetAge()} лет\n");
}
Console.WriteLine("Поиск персон, чей возраст попадает в заданный диапазон:");
int minAge = 20;
int maxAge = 50;
var personsInRange = persons.Where(p => p.GetAge() >= minAge && p.GetAge() <= maxAge);
foreach (var person in personsInRange)
{
person.DisplayInfo();
Console.WriteLine();
}
Console.WriteLine("Поиск преподавателей с наибольшим стажем работы:");
var maxExperienceTeachers = persons.OfType<Teacher>().OrderByDescending(t => t.Experience).Take(1);
foreach (var teacher in maxExperienceTeachers)
{
teacher.DisplayInfo();
Console.WriteLine();
}
}
}
IV. Составьте программу на языке программирования C#:
1. Создать класс Goods с функциями, позволяющими вывести на экран информацию о товаре, а также определить, соответствует ли он сроку годности на текущую дату.
2. Создать производные классы: Product (название, цена, дата производства, срок годности), Party (название, цена, количество шт, дата производства, срок годности), Kit (название, цена, перечень продуктов). Разработать конструкторы класса, свойства для доступа к поля классам, переопределить методы базового класса.
3. Создать базу (массив) из n товаров, вывести полную информацию из базы на экран, организовать поиск просроченного товара (на момент текущей даты), организовать поиск самого дешевого товара.
4. Организовать ввод данных с клавиатуры, предусмотреть обработку исключительных ситуаций, возникающих при вводе данных.
using System;
using System.Collections.Generic;
using System.Linq;
namespace GoodsApp
{
public class Goods
{
public string Name { get; set; }
public decimal Price { get; set; }
public virtual void DisplayInfo()
{
Console.WriteLine($"Название: {Name}, Цена: {Price:C}");
}
public virtual bool IsExpired()
{
return false;
}
}
public class Product : Goods
{
public DateTime ProductionDate { get; set; }
public TimeSpan ShelfLife { get; set; }
public Product(string name, decimal price, DateTime productionDate, TimeSpan shelfLife)
{
Name = name;
Price = price;
ProductionDate = productionDate;
ShelfLife = shelfLife;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine($"Дата производства: {ProductionDate.ToShortDateString()}, Срок годности: {ShelfLife.Days} дней");
}
public override bool IsExpired()
{
return DateTime.Now > ProductionDate + ShelfLife;
}
}
public class Party : Goods
{
public int Quantity { get; set; }
public DateTime ProductionDate { get; set; }
}
}
class Teacher : Persona
{
public string Faculty { get; set; }
public string Position { get; set; }
public int Experience { get; set; }
public Teacher(string lastName, DateTime birthDate, string faculty, string position, int experience)
: base(lastName, birthDate)
{
Faculty = faculty;
Position = position;
Experience = experience;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine($"Факультет: {Faculty}, Должность: {Position}, Стаж: {Experience} лет");
}
}
class Program
{
static void Main(string[] args)
{
List<Persona> persons = new List<Persona>();
persons.Add(new Enrollee("Иванов", new DateTime(2003, 5, 12), "Физико-математический"));
persons.Add(new Student("Петров", new DateTime(2000, 8, 25), "Химический", 3));
persons.Add(new Teacher("Сидоров", new DateTime(1975, 3, 10), "Физико-математический", "Доцент", 20));
Console.WriteLine("Полная информация о персонах:");
foreach (var person in persons)
{
person.DisplayInfo();
Console.WriteLine($"Возраст: {person.GetAge()} лет\n");
}
Console.WriteLine("Поиск персон, чей возраст попадает в заданный диапазон:");
int minAge = 20;
int maxAge = 50;
var personsInRange = persons.Where(p => p.GetAge() >= minAge && p.GetAge() <= maxAge);
foreach (var person in personsInRange)
{
person.DisplayInfo();
Console.WriteLine();
}
Console.WriteLine("Поиск преподавателей с наибольшим стажем работы:");
var maxExperienceTeachers = persons.OfType<Teacher>().OrderByDescending(t => t.Experience).Take(1);
foreach (var teacher in maxExperienceTeachers)
{
teacher.DisplayInfo();
Console.WriteLine();
}
}
}
IV. Составьте программу на языке программирования C#:
1. Создать класс Goods с функциями, позволяющими вывести на экран информацию о товаре, а также определить, соответствует ли он сроку годности на текущую дату.
2. Создать производные классы: Product (название, цена, дата производства, срок годности), Party (название, цена, количество шт, дата производства, срок годности), Kit (название, цена, перечень продуктов). Разработать конструкторы класса, свойства для доступа к поля классам, переопределить методы базового класса.
3. Создать базу (массив) из n товаров, вывести полную информацию из базы на экран, организовать поиск просроченного товара (на момент текущей даты), организовать поиск самого дешевого товара.
4. Организовать ввод данных с клавиатуры, предусмотреть обработку исключительных ситуаций, возникающих при вводе данных.
using System;
using System.Collections.Generic;
using System.Linq;
namespace GoodsApp
{
public class Goods
{
public string Name { get; set; }
public decimal Price { get; set; }
public virtual void DisplayInfo()
{
Console.WriteLine($"Название: {Name}, Цена: {Price:C}");
}
public virtual bool IsExpired()
{
return false;
}
}
public class Product : Goods
{
public DateTime ProductionDate { get; set; }
public TimeSpan ShelfLife { get; set; }
public Product(string name, decimal price, DateTime productionDate, TimeSpan shelfLife)
{
Name = name;
Price = price;
ProductionDate = productionDate;
ShelfLife = shelfLife;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine($"Дата производства: {ProductionDate.ToShortDateString()}, Срок годности: {ShelfLife.Days} дней");
}
public override bool IsExpired()
{
return DateTime.Now > ProductionDate + ShelfLife;
}
}
public class Party : Goods
{
public int Quantity { get; set; }
public DateTime ProductionDate { get; set; }
public TimeSpan ShelfLife { get; set; }
public Party(string name, decimal price, int quantity, DateTime productionDate, TimeSpan shelfLife)
{
Name = name;
Price = price;
Quantity = quantity;
ProductionDate = productionDate;
ShelfLife = shelfLife;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine($"Количество: {Quantity}, Дата производства: {ProductionDate.ToShortDateString()}, Срок годности: {ShelfLife.Days} дней");
}
public override bool IsExpired()
{
return DateTime.Now > ProductionDate + ShelfLife;
}
}
public class Kit : Goods
{
public List<Product> Products { get; set; }
public Kit(string name, decimal price, List<Product> products)
{
Name = name;
Price = price;
Products = products;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine("Состав набора:");
foreach (var product in Products)
{
product.DisplayInfo();
}
}
public override bool IsExpired()
{
return Products.Any(product => product.IsExpired());
}
}
class Program
{
static void Main(string[] args)
{
List<Goods> goodsList = new List<Goods>();
try
{
Console.Write("Введите количество товаров: ");
int n = int.Parse(Console.ReadLine());
for (int i = 0; i < n; i++)
{
Console.WriteLine($"Введите данные для товара {i + 1}");
Console.Write("Тип товара (1 - Product, 2 - Party, 3 - Kit): ");
int type = int.Parse(Console.ReadLine());
Console.Write("Название: ");
string name = Console.ReadLine();
Console.Write("Цена: ");
decimal price = decimal.Parse(Console.ReadLine());
if (type == 1)
{
Console.Write("Дата производства (гггг-мм-дд): ");
DateTime productionDate = DateTime.Parse(Console.ReadLine());
Console.Write("Срок годности (в днях): ");
int shelfLifeDays = int.Parse(Console.ReadLine());
goodsList.Add(new Product(name, price, productionDate, TimeSpan.FromDays(shelfLifeDays)));
}
else if (type == 2)
{
Console.Write("Количество: ");
int quantity = int.Parse(Console.ReadLine());
Console.Write("Дата производства (гггг-мм-дд): ");
DateTime productionDate = DateTime.Parse(Console.ReadLine());
Console.Write("Срок годности (в днях): ");
int shelfLifeDays = int.Parse(Console.ReadLine());
goodsList.Add(new Party(name, price, quantity, productionDate, TimeSpan.FromDays(shelfLifeDays)));
}
else if (type == 3)
{
List<Product> products = new List<Product>();
Console.Write("Количество продуктов в наборе: ");
int productCount = int.Parse(Console.ReadLine());
for (int j = 0; j < productCount; j++)
{
Console.WriteLine($"Введите данные для продукта {j + 1} в наборе");
Console.Write("Название: ");
string productName = Console.ReadLine();
Console.Write("Цена: ");
decimal productPrice = decimal.Parse(Console.ReadLine());
public Party(string name, decimal price, int quantity, DateTime productionDate, TimeSpan shelfLife)
{
Name = name;
Price = price;
Quantity = quantity;
ProductionDate = productionDate;
ShelfLife = shelfLife;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine($"Количество: {Quantity}, Дата производства: {ProductionDate.ToShortDateString()}, Срок годности: {ShelfLife.Days} дней");
}
public override bool IsExpired()
{
return DateTime.Now > ProductionDate + ShelfLife;
}
}
public class Kit : Goods
{
public List<Product> Products { get; set; }
public Kit(string name, decimal price, List<Product> products)
{
Name = name;
Price = price;
Products = products;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine("Состав набора:");
foreach (var product in Products)
{
product.DisplayInfo();
}
}
public override bool IsExpired()
{
return Products.Any(product => product.IsExpired());
}
}
class Program
{
static void Main(string[] args)
{
List<Goods> goodsList = new List<Goods>();
try
{
Console.Write("Введите количество товаров: ");
int n = int.Parse(Console.ReadLine());
for (int i = 0; i < n; i++)
{
Console.WriteLine($"Введите данные для товара {i + 1}");
Console.Write("Тип товара (1 - Product, 2 - Party, 3 - Kit): ");
int type = int.Parse(Console.ReadLine());
Console.Write("Название: ");
string name = Console.ReadLine();
Console.Write("Цена: ");
decimal price = decimal.Parse(Console.ReadLine());
if (type == 1)
{
Console.Write("Дата производства (гггг-мм-дд): ");
DateTime productionDate = DateTime.Parse(Console.ReadLine());
Console.Write("Срок годности (в днях): ");
int shelfLifeDays = int.Parse(Console.ReadLine());
goodsList.Add(new Product(name, price, productionDate, TimeSpan.FromDays(shelfLifeDays)));
}
else if (type == 2)
{
Console.Write("Количество: ");
int quantity = int.Parse(Console.ReadLine());
Console.Write("Дата производства (гггг-мм-дд): ");
DateTime productionDate = DateTime.Parse(Console.ReadLine());
Console.Write("Срок годности (в днях): ");
int shelfLifeDays = int.Parse(Console.ReadLine());
goodsList.Add(new Party(name, price, quantity, productionDate, TimeSpan.FromDays(shelfLifeDays)));
}
else if (type == 3)
{
List<Product> products = new List<Product>();
Console.Write("Количество продуктов в наборе: ");
int productCount = int.Parse(Console.ReadLine());
for (int j = 0; j < productCount; j++)
{
Console.WriteLine($"Введите данные для продукта {j + 1} в наборе");
Console.Write("Название: ");
string productName = Console.ReadLine();
Console.Write("Цена: ");
decimal productPrice = decimal.Parse(Console.ReadLine());
Console.Write("Дата производства (гггг-мм-дд): ");
DateTime productProductionDate = DateTime.Parse(Console.ReadLine());
Console.Write("Срок годности (в днях): ");
int productShelfLifeDays = int.Parse(Console.ReadLine());
products.Add(new Product(productName, productPrice, productProductionDate, TimeSpan.FromDays(productShelfLifeDays)));
}
goodsList.Add(new Kit(name, price, products));
}
else
{
Console.WriteLine("Неверный тип товара. Повторите ввод.");
i--;
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка ввода: {ex.Message}");
return;
}
Console.WriteLine("\nПолная информация о товарах:");
foreach (var goods in goodsList)
{
goods.DisplayInfo();
Console.WriteLine();
}
Console.WriteLine("Просроченные товары:");
foreach (var goods in goodsList.Where(g => g.IsExpired()))
{
goods.DisplayInfo();
Console.WriteLine();
}
var cheapestGoods = goodsList.OrderBy(g => g.Price).FirstOrDefault();
if (cheapestGoods != null)
{
Console.WriteLine("Самый дешевый товар:");
cheapestGoods.DisplayInfo();
}
else
{
Console.WriteLine("Товары не найдены.");
}
}
}
}
V. Составьте программу на языке программирования C#:
1. Создать класс Client с функциями, позволяющими вывести на экран информацию о клиентах банка, а также определить соответствие клиента критерию поиска.
2. Создать производные классы: Depositor (фамилия, дата открытия вклада, размер вклада, процент по вкладу), Credited (фамилия, дата выдачи кредита, размер кредита, процент по кредиту, остаток долга), Organization (название, дата открытия счета, номер счета, сумма на счету). Разработать конструкторы класса, свойства для доступа к поля классам, переопределить методы базового класса.
3. Создать базу (массив) из n клиентов, вывести полную информацию из базы на экран, организовать поиск клиентов, начавших сотрудничать с банком с заданной даты, организовать поиск организации с наибольшей суммой средств на счету.
4. Организовать ввод данных с клавиатуры, предусмотреть обработку исключительных ситуаций, возникающих при вводе данных.
using System;
using System.Collections.Generic;
using System.Linq;
public abstract class Client
{
public string Name { get; set; }
public Client(string name)
{
Name = name;
}
public abstract void DisplayInfo();
public abstract bool MatchesCriteria(DateTime date);
}
public class Depositor : Client
{
public DateTime DepositDate { get; set; }
public decimal DepositAmount { get; set; }
public double InterestRate { get; set; }
public Depositor(string name, DateTime depositDate, decimal depositAmount, double interestRate)
: base(name)
{
DepositDate = depositDate;
DepositAmount = depositAmount;
InterestRate = interestRate;
}
public override void DisplayInfo()
{
Console.WriteLine($"Вкладчик: {Name}, Дата открытия вклада: {DepositDate.ToShortDateString()}, Размер вклада: {DepositAmount}, Процент по вкладу: {InterestRate}%");
}
public override bool MatchesCriteria(DateTime date)
{
return DepositDate >= date;
}
}
public class Credited : Client
{
public DateTime CreditDate { get; set; }
public decimal CreditAmount { get; set; }
public double InterestRate { get; set; }
public decimal RemainingDebt { get; set; }
public Credited(string name, DateTime creditDate, decimal creditAmount, double interestRate, decimal remainingDebt)
: base(name)
DateTime productProductionDate = DateTime.Parse(Console.ReadLine());
Console.Write("Срок годности (в днях): ");
int productShelfLifeDays = int.Parse(Console.ReadLine());
products.Add(new Product(productName, productPrice, productProductionDate, TimeSpan.FromDays(productShelfLifeDays)));
}
goodsList.Add(new Kit(name, price, products));
}
else
{
Console.WriteLine("Неверный тип товара. Повторите ввод.");
i--;
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка ввода: {ex.Message}");
return;
}
Console.WriteLine("\nПолная информация о товарах:");
foreach (var goods in goodsList)
{
goods.DisplayInfo();
Console.WriteLine();
}
Console.WriteLine("Просроченные товары:");
foreach (var goods in goodsList.Where(g => g.IsExpired()))
{
goods.DisplayInfo();
Console.WriteLine();
}
var cheapestGoods = goodsList.OrderBy(g => g.Price).FirstOrDefault();
if (cheapestGoods != null)
{
Console.WriteLine("Самый дешевый товар:");
cheapestGoods.DisplayInfo();
}
else
{
Console.WriteLine("Товары не найдены.");
}
}
}
}
V. Составьте программу на языке программирования C#:
1. Создать класс Client с функциями, позволяющими вывести на экран информацию о клиентах банка, а также определить соответствие клиента критерию поиска.
2. Создать производные классы: Depositor (фамилия, дата открытия вклада, размер вклада, процент по вкладу), Credited (фамилия, дата выдачи кредита, размер кредита, процент по кредиту, остаток долга), Organization (название, дата открытия счета, номер счета, сумма на счету). Разработать конструкторы класса, свойства для доступа к поля классам, переопределить методы базового класса.
3. Создать базу (массив) из n клиентов, вывести полную информацию из базы на экран, организовать поиск клиентов, начавших сотрудничать с банком с заданной даты, организовать поиск организации с наибольшей суммой средств на счету.
4. Организовать ввод данных с клавиатуры, предусмотреть обработку исключительных ситуаций, возникающих при вводе данных.
using System;
using System.Collections.Generic;
using System.Linq;
public abstract class Client
{
public string Name { get; set; }
public Client(string name)
{
Name = name;
}
public abstract void DisplayInfo();
public abstract bool MatchesCriteria(DateTime date);
}
public class Depositor : Client
{
public DateTime DepositDate { get; set; }
public decimal DepositAmount { get; set; }
public double InterestRate { get; set; }
public Depositor(string name, DateTime depositDate, decimal depositAmount, double interestRate)
: base(name)
{
DepositDate = depositDate;
DepositAmount = depositAmount;
InterestRate = interestRate;
}
public override void DisplayInfo()
{
Console.WriteLine($"Вкладчик: {Name}, Дата открытия вклада: {DepositDate.ToShortDateString()}, Размер вклада: {DepositAmount}, Процент по вкладу: {InterestRate}%");
}
public override bool MatchesCriteria(DateTime date)
{
return DepositDate >= date;
}
}
public class Credited : Client
{
public DateTime CreditDate { get; set; }
public decimal CreditAmount { get; set; }
public double InterestRate { get; set; }
public decimal RemainingDebt { get; set; }
public Credited(string name, DateTime creditDate, decimal creditAmount, double interestRate, decimal remainingDebt)
: base(name)
{
CreditDate = creditDate;
CreditAmount = creditAmount;
InterestRate = interestRate;
RemainingDebt = remainingDebt;
}
public override void DisplayInfo()
{
Console.WriteLine($"Кредитополучатель: {Name}, Дата выдачи кредита: {CreditDate.ToShortDateString()}, Размер кредита: {CreditAmount}, Процент по кредиту: {InterestRate}%, Остаток долга: {RemainingDebt}");
}
public override bool MatchesCriteria(DateTime date)
{
return CreditDate >= date;
}
}
public class Organization : Client
{
public DateTime AccountOpenDate { get; set; }
public string AccountNumber { get; set; }
public decimal AccountBalance { get; set; }
public Organization(string name, DateTime accountOpenDate, string accountNumber, decimal accountBalance)
: base(name)
{
AccountOpenDate = accountOpenDate;
AccountNumber = accountNumber;
AccountBalance = accountBalance;
}
public override void DisplayInfo()
{
Console.WriteLine($"Организация: {Name}, Дата открытия счета: {AccountOpenDate.ToShortDateString()}, Номер счета: {AccountNumber}, Сумма на счету: {AccountBalance}");
}
public override bool MatchesCriteria(DateTime date)
{
return AccountOpenDate >= date;
}
}
class Program
{
static void Main(string[] args)
{
List<Client> clients = new List<Client>
{
new Depositor("Иванов", new DateTime(2022, 1, 15), 10000m, 5.5),
new Credited("Петров", new DateTime(2023, 3, 10), 50000m, 15, 25000m),
new Organization("TechCorp", new DateTime(2021, 5, 5), "1234567890", 200000m)
};
Console.WriteLine("Все клиенты:");
foreach (var client in clients)
{
client.DisplayInfo();
}
DateTime searchDate = new DateTime(2022, 1, 1);
Console.WriteLine($"\nКлиенты, начавшие сотрудничество после {searchDate.ToShortDateString()}:");
foreach (var client in clients.Where(c => c.MatchesCriteria(searchDate)))
{
client.DisplayInfo();
}
var richestOrganization = clients.OfType<Organization>().OrderByDescending(o => o.AccountBalance).FirstOrDefault();
if (richestOrganization != null)
{
Console.WriteLine("\nОрганизация с наибольшей суммой на счету:");
richestOrganization.DisplayInfo();
}
else
{
Console.WriteLine("\nОрганизаций не найдено.");
}
}
}
VI. В одномерном массиве, состоящем из n вещественных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- сумму отрицательных элементов массива;
- произведение элементов массива, расположенных между максимальным и минимальным элементами.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение суммы и произведения оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
try
{
Console.Write("Введите количество элементов массива (n): ");
int n = int.Parse(Console.ReadLine());
double[] array = GenerateRandomArray(n);
Console.WriteLine("Сгенерированный массив:");
foreach (var item in array)
{
Console.WriteLine(item);
}
string filePath = "array.txt";
File.WriteAllLines(filePath, array.Select(x => x.ToString()));
Task<double> sumTask = Task.Run(() => SumNegativeElements(array));
Task<double> productTask = Task.Run(() => ProductBetweenMaxMin(array));
Task.WaitAll(sumTask, productTask);
CreditDate = creditDate;
CreditAmount = creditAmount;
InterestRate = interestRate;
RemainingDebt = remainingDebt;
}
public override void DisplayInfo()
{
Console.WriteLine($"Кредитополучатель: {Name}, Дата выдачи кредита: {CreditDate.ToShortDateString()}, Размер кредита: {CreditAmount}, Процент по кредиту: {InterestRate}%, Остаток долга: {RemainingDebt}");
}
public override bool MatchesCriteria(DateTime date)
{
return CreditDate >= date;
}
}
public class Organization : Client
{
public DateTime AccountOpenDate { get; set; }
public string AccountNumber { get; set; }
public decimal AccountBalance { get; set; }
public Organization(string name, DateTime accountOpenDate, string accountNumber, decimal accountBalance)
: base(name)
{
AccountOpenDate = accountOpenDate;
AccountNumber = accountNumber;
AccountBalance = accountBalance;
}
public override void DisplayInfo()
{
Console.WriteLine($"Организация: {Name}, Дата открытия счета: {AccountOpenDate.ToShortDateString()}, Номер счета: {AccountNumber}, Сумма на счету: {AccountBalance}");
}
public override bool MatchesCriteria(DateTime date)
{
return AccountOpenDate >= date;
}
}
class Program
{
static void Main(string[] args)
{
List<Client> clients = new List<Client>
{
new Depositor("Иванов", new DateTime(2022, 1, 15), 10000m, 5.5),
new Credited("Петров", new DateTime(2023, 3, 10), 50000m, 15, 25000m),
new Organization("TechCorp", new DateTime(2021, 5, 5), "1234567890", 200000m)
};
Console.WriteLine("Все клиенты:");
foreach (var client in clients)
{
client.DisplayInfo();
}
DateTime searchDate = new DateTime(2022, 1, 1);
Console.WriteLine($"\nКлиенты, начавшие сотрудничество после {searchDate.ToShortDateString()}:");
foreach (var client in clients.Where(c => c.MatchesCriteria(searchDate)))
{
client.DisplayInfo();
}
var richestOrganization = clients.OfType<Organization>().OrderByDescending(o => o.AccountBalance).FirstOrDefault();
if (richestOrganization != null)
{
Console.WriteLine("\nОрганизация с наибольшей суммой на счету:");
richestOrganization.DisplayInfo();
}
else
{
Console.WriteLine("\nОрганизаций не найдено.");
}
}
}
VI. В одномерном массиве, состоящем из n вещественных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- сумму отрицательных элементов массива;
- произведение элементов массива, расположенных между максимальным и минимальным элементами.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение суммы и произведения оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
try
{
Console.Write("Введите количество элементов массива (n): ");
int n = int.Parse(Console.ReadLine());
double[] array = GenerateRandomArray(n);
Console.WriteLine("Сгенерированный массив:");
foreach (var item in array)
{
Console.WriteLine(item);
}
string filePath = "array.txt";
File.WriteAllLines(filePath, array.Select(x => x.ToString()));
Task<double> sumTask = Task.Run(() => SumNegativeElements(array));
Task<double> productTask = Task.Run(() => ProductBetweenMaxMin(array));
Task.WaitAll(sumTask, productTask);
double sumOfNegatives = sumTask.Result;
double productBetweenMaxMin = productTask.Result;
Console.WriteLine($"Сумма отрицательных элементов: {sumOfNegatives}");
Console.WriteLine($"Произведение элементов между максимальным и минимальным элементами: {productBetweenMaxMin}");
string resultFilePath = "results.txt";
File.WriteAllText(resultFilePath,
$"Сумма отрицательных элементов: {sumOfNegatives}\n" +
$"Произведение элементов между максимальным и минимальным элементами: {productBetweenMaxMin}");
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка: {ex.Message}");
}
}
static double[] GenerateRandomArray(int n)
{
Random rand = new Random();
double[] array = new double[n];
for (int i = 0; i < n; i++)
{
array[i] = rand.NextDouble() * 200 - 100;
}
return array;
}
static double SumNegativeElements(double[] array)
{
return array.Where(x => x < 0).Sum();
}
static double ProductBetweenMaxMin(double[] array)
{
if (array.Length < 2) return 0;
int maxIndex = Array.IndexOf(array, array.Max());
int minIndex = Array.IndexOf(array, array.Min());
if (maxIndex > minIndex)
{
var temp = maxIndex;
maxIndex = minIndex;
minIndex = temp;
}
double product = 1;
for (int i = maxIndex + 1; i < minIndex; i++)
{
product *= array[i];
}
return product;
}
}
VII. В одномерном массиве, состоящем из n целочисленных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- сумму положительных элементов массива;
- произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение суммы и произведения оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Linq;
using System.Threading;
class Program
{
static int[] array;
static int sumPositive;
static long productBetweenMaxMin;
static void Main()
{
try
{
Console.Write("Введите размер массива n: ");
int n = int.Parse(Console.ReadLine());
array = new int[n];
Random rand = new Random();
for (int i = 0; i < n; i++)
{
array[i] = rand.Next(-100, 101);
}
Console.WriteLine("Сгенерированный массив:");
Console.WriteLine(string.Join(", ", array));
File.WriteAllText("array.txt", string.Join(", ", array));
Thread sumThread = new Thread(ComputeSumPositive);
Thread productThread = new Thread(ComputeProductBetweenMaxMin);
sumThread.Start();
productThread.Start();
sumThread.Join();
productThread.Join();
Console.WriteLine($"Сумма положительных элементов: {sumPositive}");
Console.WriteLine($"Произведение элементов между максимальным и минимальным по модулю элементами: {productBetweenMaxMin}");
using (StreamWriter writer = new StreamWriter("results.txt"))
{
writer.WriteLine($"Сумма положительных элементов: {sumPositive}");
writer.WriteLine($"Произведение элементов между максимальным и минимальным по модулю элементами: {productBetweenMaxMin}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Произошла ошибка: {ex.Message}");
}
}
static void ComputeSumPositive()
{
sumPositive = array.Where(x => x > 0).Sum();
}
static void ComputeProductBetweenMaxMin()
{
double productBetweenMaxMin = productTask.Result;
Console.WriteLine($"Сумма отрицательных элементов: {sumOfNegatives}");
Console.WriteLine($"Произведение элементов между максимальным и минимальным элементами: {productBetweenMaxMin}");
string resultFilePath = "results.txt";
File.WriteAllText(resultFilePath,
$"Сумма отрицательных элементов: {sumOfNegatives}\n" +
$"Произведение элементов между максимальным и минимальным элементами: {productBetweenMaxMin}");
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка: {ex.Message}");
}
}
static double[] GenerateRandomArray(int n)
{
Random rand = new Random();
double[] array = new double[n];
for (int i = 0; i < n; i++)
{
array[i] = rand.NextDouble() * 200 - 100;
}
return array;
}
static double SumNegativeElements(double[] array)
{
return array.Where(x => x < 0).Sum();
}
static double ProductBetweenMaxMin(double[] array)
{
if (array.Length < 2) return 0;
int maxIndex = Array.IndexOf(array, array.Max());
int minIndex = Array.IndexOf(array, array.Min());
if (maxIndex > minIndex)
{
var temp = maxIndex;
maxIndex = minIndex;
minIndex = temp;
}
double product = 1;
for (int i = maxIndex + 1; i < minIndex; i++)
{
product *= array[i];
}
return product;
}
}
VII. В одномерном массиве, состоящем из n целочисленных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- сумму положительных элементов массива;
- произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение суммы и произведения оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Linq;
using System.Threading;
class Program
{
static int[] array;
static int sumPositive;
static long productBetweenMaxMin;
static void Main()
{
try
{
Console.Write("Введите размер массива n: ");
int n = int.Parse(Console.ReadLine());
array = new int[n];
Random rand = new Random();
for (int i = 0; i < n; i++)
{
array[i] = rand.Next(-100, 101);
}
Console.WriteLine("Сгенерированный массив:");
Console.WriteLine(string.Join(", ", array));
File.WriteAllText("array.txt", string.Join(", ", array));
Thread sumThread = new Thread(ComputeSumPositive);
Thread productThread = new Thread(ComputeProductBetweenMaxMin);
sumThread.Start();
productThread.Start();
sumThread.Join();
productThread.Join();
Console.WriteLine($"Сумма положительных элементов: {sumPositive}");
Console.WriteLine($"Произведение элементов между максимальным и минимальным по модулю элементами: {productBetweenMaxMin}");
using (StreamWriter writer = new StreamWriter("results.txt"))
{
writer.WriteLine($"Сумма положительных элементов: {sumPositive}");
writer.WriteLine($"Произведение элементов между максимальным и минимальным по модулю элементами: {productBetweenMaxMin}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Произошла ошибка: {ex.Message}");
}
}
static void ComputeSumPositive()
{
sumPositive = array.Where(x => x > 0).Sum();
}
static void ComputeProductBetweenMaxMin()
{
int maxAbs = array.Select((value, index) => new { value, index })
.OrderByDescending(x => Math.Abs(x.value))
.First().index;
int minAbs = array.Select((value, index) => new { value, index })
.OrderBy(x => Math.Abs(x.value))
.First().index;
if (maxAbs > minAbs)
{
int temp = maxAbs;
maxAbs = minAbs;
minAbs = temp;
}
productBetweenMaxMin = 1;
for (int i = maxAbs + 1; i < minAbs; i++)
{
productBetweenMaxMin *= array[i];
}
if (maxAbs + 1 == minAbs)
{
productBetweenMaxMin = 0;
}
}
}
VIII. В одномерном массиве, состоящем из n целочисленных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- произведение элементов массива с четными номерами;
- сумму элементов массива, расположенных между первым и последним нулевыми элементами.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение произведения и суммы оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
try
{
Console.Write("Введите количество элементов массива (n): ");
int n = int.Parse(Console.ReadLine());
int[] array = GenerateRandomArray(n);
PrintArray(array);
WriteArrayToFile(array, "array.txt");
Task<long> productTask = Task.Run(() => CalculateProductOfEvenIndexedElements(array));
Task<int> sumTask = Task.Run(() => CalculateSumBetweenFirstAndLastZeros(array));
Task.WaitAll(productTask, sumTask);
long product = productTask.Result;
int sum = sumTask.Result;
Console.WriteLine($"Произведение элементов массива с четными номерами: {product}");
Console.WriteLine($"Сумма элементов массива между первым и последним нулевыми элементами: {sum}");
.OrderByDescending(x => Math.Abs(x.value))
.First().index;
int minAbs = array.Select((value, index) => new { value, index })
.OrderBy(x => Math.Abs(x.value))
.First().index;
if (maxAbs > minAbs)
{
int temp = maxAbs;
maxAbs = minAbs;
minAbs = temp;
}
productBetweenMaxMin = 1;
for (int i = maxAbs + 1; i < minAbs; i++)
{
productBetweenMaxMin *= array[i];
}
if (maxAbs + 1 == minAbs)
{
productBetweenMaxMin = 0;
}
}
}
VIII. В одномерном массиве, состоящем из n целочисленных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- произведение элементов массива с четными номерами;
- сумму элементов массива, расположенных между первым и последним нулевыми элементами.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение произведения и суммы оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
try
{
Console.Write("Введите количество элементов массива (n): ");
int n = int.Parse(Console.ReadLine());
int[] array = GenerateRandomArray(n);
PrintArray(array);
WriteArrayToFile(array, "array.txt");
Task<long> productTask = Task.Run(() => CalculateProductOfEvenIndexedElements(array));
Task<int> sumTask = Task.Run(() => CalculateSumBetweenFirstAndLastZeros(array));
Task.WaitAll(productTask, sumTask);
long product = productTask.Result;
int sum = sumTask.Result;
Console.WriteLine($"Произведение элементов массива с четными номерами: {product}");
Console.WriteLine($"Сумма элементов массива между первым и последним нулевыми элементами: {sum}");
WriteResultsToFile(product, sum, "results.txt");
}
catch (FormatException ex)
{
Console.WriteLine("Ошибка: введено некорректное значение. " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("Произошла ошибка: " + ex.Message);
}
}
static int[] GenerateRandomArray(int n)
{
Random rand = new Random();
int[] array = new int[n];
for (int i = 0; i < n; i++)
{
array[i] = rand.Next(-10, 10);
}
return array;
}
static void PrintArray(int[] array)
{
Console.WriteLine("Массив:");
foreach (int element in array)
{
Console.Write(element + " ");
}
Console.WriteLine();
}
static void WriteArrayToFile(int[] array, string fileName)
{
using (StreamWriter writer = new StreamWriter(fileName))
{
foreach (int element in array)
{
writer.Write(element + " ");
}
}
}
static long CalculateProductOfEvenIndexedElements(int[] array)
{
long product = 1;
for (int i = 0; i < array.Length; i += 2)
{
product *= array[i];
}
return product;
}
static int CalculateSumBetweenFirstAndLastZeros(int[] array)
{
int firstZeroIndex = Array.IndexOf(array, 0);
int lastZeroIndex = Array.LastIndexOf(array, 0);
if (firstZeroIndex == -1 lastZeroIndex == -1 firstZeroIndex == lastZeroIndex)
{
return 0;
}
int sum = 0;
for (int i = firstZeroIndex + 1; i < lastZeroIndex; i++)
{
sum += array[i];
}
return sum;
}
static void WriteResultsToFile(long product, int sum, string fileName)
{
using (StreamWriter writer = new StreamWriter(fileName))
{
writer.WriteLine($"Произведение элементов массива с четными номерами: {product}");
writer.WriteLine($"Сумма элементов массива между первым и последним нулевыми элементами: {sum}");
}
}
}
IX. В одномерном массиве, состоящем из n вещественных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- сумму элементов массива с нечетными номерами;
- сумму элементов массива, расположенных между первым и последним отрицательными элементами.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение суммы и произведения оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Linq;
using System.Threading;
class Program
{
static void Main()
{
try
{
Console.Write("Введите количество элементов в массиве: ");
int n = int.Parse(Console.ReadLine());
double[] array = GenerateRandomArray(n);
Console.WriteLine("Сгенерированный массив:");
PrintArray(array);
// Создание потоков для вычислений
Thread oddIndexSumThread = new Thread(() => {
double sumOddIndexes = SumOddIndexes(array);
Console.WriteLine($"Сумма элементов массива с нечетными номерами: {sumOddIndexes}");
WriteToFile($"Сумма элементов массива с нечетными номерами: {sumOddIndexes}");
});
Thread betweenNegativesSumThread = new Thread(() => {
double sumBetweenNegatives = SumBetweenFirstAndLastNegative(array);
Console.WriteLine($"Сумма элементов между первым и последним отрицательными элементами: {sumBetweenNegatives}");
WriteToFile($"Сумма элементов между первым и последним отрицательными элементами: {sumBetweenNegatives}");
});
// Запуск потоков
oddIndexSumThread.Start();
}
catch (FormatException ex)
{
Console.WriteLine("Ошибка: введено некорректное значение. " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("Произошла ошибка: " + ex.Message);
}
}
static int[] GenerateRandomArray(int n)
{
Random rand = new Random();
int[] array = new int[n];
for (int i = 0; i < n; i++)
{
array[i] = rand.Next(-10, 10);
}
return array;
}
static void PrintArray(int[] array)
{
Console.WriteLine("Массив:");
foreach (int element in array)
{
Console.Write(element + " ");
}
Console.WriteLine();
}
static void WriteArrayToFile(int[] array, string fileName)
{
using (StreamWriter writer = new StreamWriter(fileName))
{
foreach (int element in array)
{
writer.Write(element + " ");
}
}
}
static long CalculateProductOfEvenIndexedElements(int[] array)
{
long product = 1;
for (int i = 0; i < array.Length; i += 2)
{
product *= array[i];
}
return product;
}
static int CalculateSumBetweenFirstAndLastZeros(int[] array)
{
int firstZeroIndex = Array.IndexOf(array, 0);
int lastZeroIndex = Array.LastIndexOf(array, 0);
if (firstZeroIndex == -1 lastZeroIndex == -1 firstZeroIndex == lastZeroIndex)
{
return 0;
}
int sum = 0;
for (int i = firstZeroIndex + 1; i < lastZeroIndex; i++)
{
sum += array[i];
}
return sum;
}
static void WriteResultsToFile(long product, int sum, string fileName)
{
using (StreamWriter writer = new StreamWriter(fileName))
{
writer.WriteLine($"Произведение элементов массива с четными номерами: {product}");
writer.WriteLine($"Сумма элементов массива между первым и последним нулевыми элементами: {sum}");
}
}
}
IX. В одномерном массиве, состоящем из n вещественных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- сумму элементов массива с нечетными номерами;
- сумму элементов массива, расположенных между первым и последним отрицательными элементами.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение суммы и произведения оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Linq;
using System.Threading;
class Program
{
static void Main()
{
try
{
Console.Write("Введите количество элементов в массиве: ");
int n = int.Parse(Console.ReadLine());
double[] array = GenerateRandomArray(n);
Console.WriteLine("Сгенерированный массив:");
PrintArray(array);
// Создание потоков для вычислений
Thread oddIndexSumThread = new Thread(() => {
double sumOddIndexes = SumOddIndexes(array);
Console.WriteLine($"Сумма элементов массива с нечетными номерами: {sumOddIndexes}");
WriteToFile($"Сумма элементов массива с нечетными номерами: {sumOddIndexes}");
});
Thread betweenNegativesSumThread = new Thread(() => {
double sumBetweenNegatives = SumBetweenFirstAndLastNegative(array);
Console.WriteLine($"Сумма элементов между первым и последним отрицательными элементами: {sumBetweenNegatives}");
WriteToFile($"Сумма элементов между первым и последним отрицательными элементами: {sumBetweenNegatives}");
});
// Запуск потоков
oddIndexSumThread.Start();
betweenNegativesSumThread.Start();
// Ожидание завершения потоков
oddIndexSumThread.Join();
betweenNegativesSumThread.Join();
}
catch (Exception ex)
{
Console.WriteLine($"Произошла ошибка: {ex.Message}");
WriteToFile($"Произошла ошибка: {ex.Message}");
}
}
static double[] GenerateRandomArray(int n)
{
Random random = new Random();
double[] array = new double[n];
for (int i = 0; i < n; i++)
{
array[i] = random.NextDouble() * 200 - 100;
}
return array;
}
static void PrintArray(double[] array)
{
foreach (var item in array)
{
Console.Write($"{item:F2} ");
}
Console.WriteLine();
WriteToFile("Сгенерированный массив: " + string.Join(" ", array.Select(x => x.ToString("F2"))));
}
static double SumOddIndexes(double[] array)
{
double sum = 0;
for (int i = 1; i < array.Length; i += 2)
{
sum += array[i];
}
return sum;
}
static double SumBetweenFirstAndLastNegative(double[] array)
{
int firstNegativeIndex = -1;
int lastNegativeIndex = -1;
for (int i = 0; i < array.Length; i++)
{
if (array[i] < 0)
{
if (firstNegativeIndex == -1)
{
firstNegativeIndex = i;
}
lastNegativeIndex = i;
}
}
if (firstNegativeIndex == -1 firstNegativeIndex == lastNegativeIndex)
{
return 0; // Если нет отрицательных элементов или только один отрицательный элемент
}
double sum = 0;
for (int i = firstNegativeIndex + 1; i < lastNegativeIndex; i++)
{
sum += array[i];
}
return sum;
}
static void WriteToFile(string text)
{
using (StreamWriter writer = new StreamWriter("output.txt", true))
{
writer.WriteLine(text);
}
}
}
X. В одномерном массиве, состоящем из n вещественных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- номера максимальных элементов массива;
- сумму элементов массива, расположенных до последнего положительного элемента.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение номеров и суммы оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Linq;
using System.Threading;
class Program
{
static void Main()
{
try
{
Console.Write("Введите значение n: ");
int n = int.Parse(Console.ReadLine());
Random rand = new Random();
double[] array = new double[n];
for (int i = 0; i < n; i++)
{
array[i] = rand.NextDouble() * 200 - 100;
}
string filePath = "output.txt";
using (StreamWriter writer = new StreamWriter(filePath))
{
Console.WriteLine("Массив:");
writer.WriteLine("Массив:");
foreach (double elem in array)
{
Console.WriteLine(elem);
writer.WriteLine(elem);
}
}
Thread maxElementsThread = new Thread(() => FindMaxElements(array, filePath));
Thread sumBeforeLastPositiveThread = new Thread(() => SumBeforeLastPositive(array, filePath));
maxElementsThread.Start();
sumBeforeLastPositiveThread.Start();
maxElementsThread.Join();
sumBeforeLastPositiveThread.Join();
Console.WriteLine("Результаты сохранены в файл " + filePath);
}
catch (Exception ex)
{
// Ожидание завершения потоков
oddIndexSumThread.Join();
betweenNegativesSumThread.Join();
}
catch (Exception ex)
{
Console.WriteLine($"Произошла ошибка: {ex.Message}");
WriteToFile($"Произошла ошибка: {ex.Message}");
}
}
static double[] GenerateRandomArray(int n)
{
Random random = new Random();
double[] array = new double[n];
for (int i = 0; i < n; i++)
{
array[i] = random.NextDouble() * 200 - 100;
}
return array;
}
static void PrintArray(double[] array)
{
foreach (var item in array)
{
Console.Write($"{item:F2} ");
}
Console.WriteLine();
WriteToFile("Сгенерированный массив: " + string.Join(" ", array.Select(x => x.ToString("F2"))));
}
static double SumOddIndexes(double[] array)
{
double sum = 0;
for (int i = 1; i < array.Length; i += 2)
{
sum += array[i];
}
return sum;
}
static double SumBetweenFirstAndLastNegative(double[] array)
{
int firstNegativeIndex = -1;
int lastNegativeIndex = -1;
for (int i = 0; i < array.Length; i++)
{
if (array[i] < 0)
{
if (firstNegativeIndex == -1)
{
firstNegativeIndex = i;
}
lastNegativeIndex = i;
}
{
return 0; // Если нет отрицательных элементов или только один отрицательный элемент
}
double sum = 0;
for (int i = firstNegativeIndex + 1; i < lastNegativeIndex; i++)
{
sum += array[i];
}
return sum;
}
static void WriteToFile(string text)
{
using (StreamWriter writer = new StreamWriter("output.txt", true))
{
writer.WriteLine(text);
}
}
}
X. В одномерном массиве, состоящем из n вещественных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- номера максимальных элементов массива;
- сумму элементов массива, расположенных до последнего положительного элемента.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение номеров и суммы оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Linq;
using System.Threading;
class Program
{
static void Main()
{
try
{
Console.Write("Введите значение n: ");
int n = int.Parse(Console.ReadLine());
Random rand = new Random();
double[] array = new double[n];
for (int i = 0; i < n; i++)
{
array[i] = rand.NextDouble() * 200 - 100;
}
string filePath = "output.txt";
using (StreamWriter writer = new StreamWriter(filePath))
{
Console.WriteLine("Массив:");
writer.WriteLine("Массив:");
foreach (double elem in array)
{
Console.WriteLine(elem);
writer.WriteLine(elem);
}
}
Thread maxElementsThread = new Thread(() => FindMaxElements(array, filePath));
Thread sumBeforeLastPositiveThread = new Thread(() => SumBeforeLastPositive(array, filePath));
maxElementsThread.Start();
sumBeforeLastPositiveThread.Start();
maxElementsThread.Join();
sumBeforeLastPositiveThread.Join();
Console.WriteLine("Результаты сохранены в файл " + filePath);
}
catch (Exception ex)
{
Console.WriteLine("Произошла ошибка: " + ex.Message);
}
}
static void FindMaxElements(double[] array, string filePath)
{
try
{
double max = array.Max();
var maxIndexes = array.Select((value, index) => new { value, index })
.Where(x => x.value == max)
.Select(x => x.index)
.ToArray();
using (StreamWriter writer = new StreamWriter(filePath, true))
{
Console.WriteLine("Индексы максимальных элементов:");
writer.WriteLine("Индексы максимальных элементов:");
foreach (int index in maxIndexes)
{
Console.WriteLine(index);
writer.WriteLine(index);
}
}
}
catch (Exception ex)
{
Console.WriteLine("Ошибка при нахождении максимальных элементов: " + ex.Message);
}
}
static void SumBeforeLastPositive(double[] array, string filePath)
{
try
{
int lastPositiveIndex = Array.FindLastIndex(array, x => x > 0);
double sum = array.Take(lastPositiveIndex).Sum();
using (StreamWriter writer = new StreamWriter(filePath, true))
{
Console.WriteLine("Сумма элементов до последнего положительного элемента: " + sum);
writer.WriteLine("Сумма элементов до последнего положительного элемента: " + sum);
}
}
catch (Exception ex)
{
Console.WriteLine("Ошибка при вычислении суммы: " + ex.Message);
}
}
}
XI. В одномерном массиве, состоящем из n вещественных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- номера минимальных элементов массива;
- сумму элементов массива, расположенных между первым и последним положительными элементами.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение номеров и суммы оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
class Program
{
static void Main()
{
try
{
Console.WriteLine("Введите количество элементов массива:");
int n = int.Parse(Console.ReadLine());
if (n <= 0)
{
throw new ArgumentException("Количество элементов должно быть положительным числом.");
}
double[] array = GenerateRandomArray(n);
Console.WriteLine("Массив:");
PrintArray(array);
Task<int[]> findMinIndicesTask = Task.Run(() => FindMinElementIndices(array));
Task<int> sumBetweenPositivesTask = Task.Run(() => SumBetweenFirstAndLastPositives(array));
Task.WaitAll(findMinIndicesTask, sumBetweenPositivesTask);
int[] minIndices = findMinIndicesTask.Result;
int sumBetweenPositives = sumBetweenPositivesTask.Result;
Console.WriteLine("\nРезультаты:");
Console.WriteLine($"Номера минимальных элементов: {string.Join(", ", minIndices)}");
Console.WriteLine($"Сумма элементов между первым и последним положительными элементами: {sumBetweenPositives}");
WriteResultsToFile(array, minIndices, sumBetweenPositives, "output.txt");
Console.WriteLine("\nРезультаты записаны в файл output.txt");
}
catch (Exception ex)
{
Console.WriteLine($"Произошла ошибка: {ex.Message}");
}
}
static double[] GenerateRandomArray(int n)
{
Random random = new Random();
double[] array = new double[n];
for (int i = 0; i < n; i++)
{
array[i] = random.NextDouble() * 100;
}
re
}
}
static void FindMaxElements(double[] array, string filePath)
{
try
{
double max = array.Max();
var maxIndexes = array.Select((value, index) => new { value, index })
.Where(x => x.value == max)
.Select(x => x.index)
.ToArray();
using (StreamWriter writer = new StreamWriter(filePath, true))
{
Console.WriteLine("Индексы максимальных элементов:");
writer.WriteLine("Индексы максимальных элементов:");
foreach (int index in maxIndexes)
{
Console.WriteLine(index);
writer.WriteLine(index);
}
}
}
catch (Exception ex)
{
Console.WriteLine("Ошибка при нахождении максимальных элементов: " + ex.Message);
}
}
static void SumBeforeLastPositive(double[] array, string filePath)
{
try
{
int lastPositiveIndex = Array.FindLastIndex(array, x => x > 0);
double sum = array.Take(lastPositiveIndex).Sum();
using (StreamWriter writer = new StreamWriter(filePath, true))
{
Console.WriteLine("Сумма элементов до последнего положительного элемента: " + sum);
writer.WriteLine("Сумма элементов до последнего положительного элемента: " + sum);
}
}
catch (Exception ex)
{
Console.WriteLine("Ошибка при вычислении суммы: " + ex.Message);
}
}
}
XI. В одномерном массиве, состоящем из n вещественных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- номера минимальных элементов массива;
- сумму элементов массива, расположенных между первым и последним положительными элементами.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение номеров и суммы оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
class Program
{
static void Main()
{
try
{
Console.WriteLine("Введите количество элементов массива:");
int n = int.Parse(Console.ReadLine());
if (n <= 0)
{
throw new ArgumentException("Количество элементов должно быть положительным числом.");
}
double[] array = GenerateRandomArray(n);
Console.WriteLine("Массив:");
PrintArray(array);
Task<int[]> findMinIndicesTask = Task.Run(() => FindMinElementIndices(array));
Task<int> sumBetweenPositivesTask = Task.Run(() => SumBetweenFirstAndLastPositives(array));
Task.WaitAll(findMinIndicesTask, sumBetweenPositivesTask);
int[] minIndices = findMinIndicesTask.Result;
int sumBetweenPositives = sumBetweenPositivesTask.Result;
Console.WriteLine("\nРезультаты:");
Console.WriteLine($"Номера минимальных элементов: {string.Join(", ", minIndices)}");
Console.WriteLine($"Сумма элементов между первым и последним положительными элементами: {sumBetweenPositives}");
WriteResultsToFile(array, minIndices, sumBetweenPositives, "output.txt");
Console.WriteLine("\nРезультаты записаны в файл output.txt");
}
catch (Exception ex)
{
Console.WriteLine($"Произошла ошибка: {ex.Message}");
}
}
static double[] GenerateRandomArray(int n)
{
Random random = new Random();
double[] array = new double[n];
for (int i = 0; i < n; i++)
{
array[i] = random.NextDouble() * 100;
}
re
turn array;
}
static void PrintArray(double[] array)
{
foreach (var element in array)
{
Console.Write($"{element:F2} ");
}
Console.WriteLine();
}
static int[] FindMinElementIndices(double[] array)
{
double minValue = array.Min();
return Enumerable.Range(0, array.Length)
.Where(i => array[i] == minValue)
.ToArray();
}
static int SumBetweenFirstAndLastPositives(double[] array)
{
int firstPositiveIndex = -1;
int lastPositiveIndex = -1;
for (int i = 0; i < array.Length; i++)
{
if (array[i] > 0)
{
if (firstPositiveIndex == -1)
firstPositiveIndex = i;
lastPositiveIndex = i;
}
}
if (firstPositiveIndex == -1 lastPositiveIndex == -1)
{
throw new InvalidOperationException("В массиве отсутствуют положительные элементы.");
}
int sum = 0;
for (int i = firstPositiveIndex + 1; i < lastPositiveIndex; i++)
{
sum += (int)array[i];
}
return sum;
}
static void WriteResultsToFile(double[] array, int[] minIndices, int sumBetweenPositives, string filename)
{
using (StreamWriter writer = new StreamWriter(filename))
{
writer.WriteLine("Массив:");
for (int i = 0; i < array.Length; i++)
{
writer.Write($"{array[i]:F2} ");
}
writer.WriteLine();
writer.WriteLine($"Номера минимальных элементов: {string.Join(", ", minIndices)}");
writer.WriteLine($"Сумма элементов между первым и последним положительными элементами: {sumBetweenPositives}");
}
}
}
XII. В одномерном массиве, состоящем из n вещественных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- максимальный по модулю элемент массива;
- сумму элементов массива, расположенных между первым и вторым положительными элементами.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение элемента и суммы оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
try
{
Console.WriteLine("Введите размер массива n:");
int n = int.Parse(Console.ReadLine());
double[] array = GenerateRandomArray(n);
Console.WriteLine("Массив:");
PrintArray(array);
Task<double> maxAbsValueTask = Task.Run(() => FindMaxAbsoluteValue(array));
Task<int> sumBetweenPositivesTask = Task.Run(() => SumBetweenFirstAndSecondPositive(array));
Task.WaitAll(maxAbsValueTask, sumBetweenPositivesTask);
double maxAbsValue = maxAbsValueTask.Result;
int sumBetweenPositives = sumBetweenPositivesTask.Result;
Console.WriteLine($"\nМаксимальный по модулю элемент: {maxAbsValue}");
Console.WriteLine($"Сумма элементов между первым и вторым положительными: {sumBetweenPositives}");
WriteResultsToFile(array, maxAbsValue, sumBetweenPositives);
Console.WriteLine("\nРезультаты записаны в файл output.txt.");
}
catch (FormatException)
{
Console.WriteLine("Ошибка: неверный формат ввода.");
}
catch (OverflowException)
{
Console.WriteLine("Ошибка: введено слишком большое число для размера массива.");
}
catch (Exception ex)
{
Console.WriteLine($"Произошла ошибка: {ex.Message}");
}
}
static double[] GenerateRandomArray(int n)
{
Random random = new Random();
}
static void PrintArray(double[] array)
{
foreach (var element in array)
{
Console.Write($"{element:F2} ");
}
Console.WriteLine();
}
static int[] FindMinElementIndices(double[] array)
{
double minValue = array.Min();
return Enumerable.Range(0, array.Length)
.Where(i => array[i] == minValue)
.ToArray();
}
static int SumBetweenFirstAndLastPositives(double[] array)
{
int firstPositiveIndex = -1;
int lastPositiveIndex = -1;
for (int i = 0; i < array.Length; i++)
{
if (array[i] > 0)
{
if (firstPositiveIndex == -1)
firstPositiveIndex = i;
lastPositiveIndex = i;
}
}
if (firstPositiveIndex == -1 lastPositiveIndex == -1)
{
throw new InvalidOperationException("В массиве отсутствуют положительные элементы.");
}
int sum = 0;
for (int i = firstPositiveIndex + 1; i < lastPositiveIndex; i++)
{
sum += (int)array[i];
}
return sum;
}
static void WriteResultsToFile(double[] array, int[] minIndices, int sumBetweenPositives, string filename)
{
using (StreamWriter writer = new StreamWriter(filename))
{
writer.WriteLine("Массив:");
for (int i = 0; i < array.Length; i++)
{
writer.Write($"{array[i]:F2} ");
}
writer.WriteLine();
writer.WriteLine($"Номера минимальных элементов: {string.Join(", ", minIndices)}");
writer.WriteLine($"Сумма элементов между первым и последним положительными элементами: {sumBetweenPositives}");
}
}
}
XII. В одномерном массиве, состоящем из n вещественных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- максимальный по модулю элемент массива;
- сумму элементов массива, расположенных между первым и вторым положительными элементами.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение элемента и суммы оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
try
{
Console.WriteLine("Введите размер массива n:");
int n = int.Parse(Console.ReadLine());
double[] array = GenerateRandomArray(n);
Console.WriteLine("Массив:");
PrintArray(array);
Task<double> maxAbsValueTask = Task.Run(() => FindMaxAbsoluteValue(array));
Task<int> sumBetweenPositivesTask = Task.Run(() => SumBetweenFirstAndSecondPositive(array));
Task.WaitAll(maxAbsValueTask, sumBetweenPositivesTask);
double maxAbsValue = maxAbsValueTask.Result;
int sumBetweenPositives = sumBetweenPositivesTask.Result;
Console.WriteLine($"\nМаксимальный по модулю элемент: {maxAbsValue}");
Console.WriteLine($"Сумма элементов между первым и вторым положительными: {sumBetweenPositives}");
WriteResultsToFile(array, maxAbsValue, sumBetweenPositives);
Console.WriteLine("\nРезультаты записаны в файл output.txt.");
}
catch (FormatException)
{
Console.WriteLine("Ошибка: неверный формат ввода.");
}
catch (OverflowException)
{
Console.WriteLine("Ошибка: введено слишком большое число для размера массива.");
}
catch (Exception ex)
{
Console.WriteLine($"Произошла ошибка: {ex.Message}");
}
}
static double[] GenerateRandomArray(int n)
{
Random random = new Random();
double[] array = new double[n];
for (int i = 0; i < n; i++)
{
array[i] = random.NextDouble() * random.Next(-100, 100);
}
return array;
}
static void PrintArray(double[] array)
{
foreach (var element in array)
{
Console.Write($"{element:F2} ");
}
Console.WriteLine();
}
static double FindMaxAbsoluteValue(double[] array)
{
double maxAbsValue = array.Max(x => Math.Abs(x));
return maxAbsValue;
}
static int SumBetweenFirstAndSecondPositive(double[] array)
{
int firstPositiveIndex = -1;
int secondPositiveIndex = -1;
int sum = 0;
for (int i = 0; i < array.Length; i++)
{
if (array[i] > 0)
{
if (firstPositiveIndex == -1)
firstPositiveIndex = i;
else
{
secondPositiveIndex = i;
break;
}
}
}
if (firstPositiveIndex != -1 && secondPositiveIndex != -1)
{
for (int i = firstPositiveIndex + 1; i < secondPositiveIndex; i++)
{
sum += (int)array[i]; // суммируем целую часть элементов
}
}
return sum;
}
static void WriteResultsToFile(double[] array, double maxAbsValue, int sumBetweenPositives)
{
using (StreamWriter writer = new StreamWriter("output.txt"))
{
writer.WriteLine("Массив:");
foreach (var element in array)
{
writer.Write($"{element:F2} ");
}
writer.WriteLine();
writer.WriteLine($"Максимальный по модулю элемент: {maxAbsValue}");
writer.WriteLine($"Сумма элементов между первым и вторым положительными: {sumBetweenPositives}");
}
}
}
XIII. В одномерном массиве, состоящем из n целочисленных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- минимальный по модулю элемент массива;
- сумму модулей элементов массива, расположенных после первого элемента, равного нулю.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение элемента и суммы оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main()
{
Console.Write("Введите размер массива n: ");
if (!int.TryParse(Console.ReadLine(), out int n) n <= 0)
{
Console.WriteLine("Неверный ввод размера массива.");
return;
}
int[] array = GenerateRandomArray(n);
Console.WriteLine("Элементы массива:");
PrintArray(array);
Task<int> minAbsTask = Task.Run(() => FindMinAbs(array));
Task<int> sumAfterZeroTask = Task.Run(() => SumOfModAfterFirstZero(array));
try
{
Task.WaitAll(minAbsTask, sumAfterZeroTask);
int minAbs = minAbsTask.Result;
int sumAfterZero = sumAfterZeroTask.Result;
Console.WriteLine($"Минимальный по модулю элемент массива: {minAbs}");
Console.WriteLine($"Сумма модулей элементов после первого нулевого элемента: {sumAfterZero}");
using (StreamWriter writer = new StreamWriter("output.txt"))
{
writer.WriteLine($"Минимальный по модулю элемент массива: {minAbs}");
writer.WriteLine($"Сумма модулей элементов после первого нулевого элемента: {sumAfterZero}");
}
Console.WriteLine("Результаты записаны в файл output.txt.");
}
catch (AggregateException ex)
{
Console.WriteLine("Произошла ошибка при выполнении задач:");
for (int i = 0; i < n; i++)
{
array[i] = random.NextDouble() * random.Next(-100, 100);
}
return array;
}
static void PrintArray(double[] array)
{
foreach (var element in array)
{
Console.Write($"{element:F2} ");
}
Console.WriteLine();
}
static double FindMaxAbsoluteValue(double[] array)
{
double maxAbsValue = array.Max(x => Math.Abs(x));
return maxAbsValue;
}
static int SumBetweenFirstAndSecondPositive(double[] array)
{
int firstPositiveIndex = -1;
int secondPositiveIndex = -1;
int sum = 0;
for (int i = 0; i < array.Length; i++)
{
if (array[i] > 0)
{
if (firstPositiveIndex == -1)
firstPositiveIndex = i;
else
{
secondPositiveIndex = i;
break;
}
}
}
if (firstPositiveIndex != -1 && secondPositiveIndex != -1)
{
for (int i = firstPositiveIndex + 1; i < secondPositiveIndex; i++)
{
sum += (int)array[i]; // суммируем целую часть элементов
}
}
return sum;
}
static void WriteResultsToFile(double[] array, double maxAbsValue, int sumBetweenPositives)
{
using (StreamWriter writer = new StreamWriter("output.txt"))
{
writer.WriteLine("Массив:");
foreach (var element in array)
{
writer.Write($"{element:F2} ");
}
writer.WriteLine();
writer.WriteLine($"Максимальный по модулю элемент: {maxAbsValue}");
writer.WriteLine($"Сумма элементов между первым и вторым положительными: {sumBetweenPositives}");
}
}
}
XIII. В одномерном массиве, состоящем из n целочисленных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- минимальный по модулю элемент массива;
- сумму модулей элементов массива, расположенных после первого элемента, равного нулю.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение элемента и суммы оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main()
{
Console.Write("Введите размер массива n: ");
if (!int.TryParse(Console.ReadLine(), out int n) n <= 0)
{
Console.WriteLine("Неверный ввод размера массива.");
return;
}
int[] array = GenerateRandomArray(n);
Console.WriteLine("Элементы массива:");
PrintArray(array);
Task<int> minAbsTask = Task.Run(() => FindMinAbs(array));
Task<int> sumAfterZeroTask = Task.Run(() => SumOfModAfterFirstZero(array));
try
{
Task.WaitAll(minAbsTask, sumAfterZeroTask);
int minAbs = minAbsTask.Result;
int sumAfterZero = sumAfterZeroTask.Result;
Console.WriteLine($"Минимальный по модулю элемент массива: {minAbs}");
Console.WriteLine($"Сумма модулей элементов после первого нулевого элемента: {sumAfterZero}");
using (StreamWriter writer = new StreamWriter("output.txt"))
{
writer.WriteLine($"Минимальный по модулю элемент массива: {minAbs}");
writer.WriteLine($"Сумма модулей элементов после первого нулевого элемента: {sumAfterZero}");
}
Console.WriteLine("Результаты записаны в файл output.txt.");
}
catch (AggregateException ex)
{
Console.WriteLine("Произошла ошибка при выполнении задач:");
foreach (var innerEx in ex.InnerExceptions)
{
Console.WriteLine(innerEx.Message);
}
}
catch (Exception ex)
{
Console.WriteLine($"Произошла ошибка: {ex.Message}");
}
}
static int[] GenerateRandomArray(int n)
{
Random random = new Random();
int[] array = new int[n];
for (int i = 0; i < n; i++)
{
array[i] = random.Next(-100, 101);
}
return array;
}
static void PrintArray(int[] array)
{
foreach (var num in array)
{
Console.Write(num + " ");
}
Console.WriteLine();
using (StreamWriter writer = new StreamWriter("output.txt", true))
{
foreach (var num in array)
{
writer.Write(num + " ");
}
writer.WriteLine();
}
}
static int FindMinAbs(int[] array)
{
if (array == null array.Length == 0)
throw new ArgumentException("Массив не должен быть пустым.");
int minAbs = Math.Abs(array[0]);
for (int i = 1; i < array.Length; i++)
{
int absValue = Math.Abs(array[i]);
if (absValue < minAbs)
minAbs = absValue;
}
return minAbs;
}
static int SumOfModAfterFirstZero(int[] array)
{
if (array == null array.Length == 0)
throw new ArgumentException("Массив не должен быть пустым.");
bool foundZero = false;
int sum = 0;
foreach (var num in array)
{
if (foundZero)
{
sum += Math.Abs(num);
}
if (num == 0)
{
foundZero = true;
}
}
if (!foundZero)
throw new InvalidOperationException("В массиве нет нулевых элементов.");
return sum;
}
}
XIV. В одномерном массиве, состоящем из n вещественных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- количество элементов массива, лежащих в диапазоне от 10 до 20;
- сумму элементов массива, расположенных после максимального элемента.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение количества и суммы оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Threading.Tasks;
class Program
{
static Random random = new Random();
static void Main(string[] args)
{
try
{
Console.WriteLine("Введите размер массива n:");
if (!int.TryParse(Console.ReadLine(), out int n) n <= 0)
{
throw new ArgumentException("Некорректный ввод. Ожидалось положительное целое число.");
}
double[] array = GenerateRandomArray(n);
Console.WriteLine("Элементы массива:");
PrintArray(array);
string filePath = "output.txt";
PrintArrayToFile(array, filePath);
Console.WriteLine($"Массив записан в файл {filePath}");
// Асинхронно находим количество элементов в диапазоне [10, 20]
Task<int> countTask = CountElementsInRangeAsync(array, 10, 20);
// Асинхронно находим сумму элементов после максимального значения
Task<double> sumTask = SumElementsAfterMaxAsync(array);
Task.WaitAll(countTask, sumTask);
Console.WriteLine($"Количество элементов в диапазоне [10, 20]: {countTask.Result}");
Console.WriteLine($"Сумма элементов после максимального значения: {sumTask.Result}");
Console.WriteLine("Работа программы завершена.");
}
catch (Exception ex)
{
Console.WriteLine($"Произошла ошибка: {ex.Message}");
}
}
{
Console.WriteLine(innerEx.Message);
}
}
catch (Exception ex)
{
Console.WriteLine($"Произошла ошибка: {ex.Message}");
}
}
static int[] GenerateRandomArray(int n)
{
Random random = new Random();
int[] array = new int[n];
for (int i = 0; i < n; i++)
{
array[i] = random.Next(-100, 101);
}
return array;
}
static void PrintArray(int[] array)
{
foreach (var num in array)
{
Console.Write(num + " ");
}
Console.WriteLine();
using (StreamWriter writer = new StreamWriter("output.txt", true))
{
foreach (var num in array)
{
writer.Write(num + " ");
}
writer.WriteLine();
}
}
static int FindMinAbs(int[] array)
{
if (array == null array.Length == 0)
throw new ArgumentException("Массив не должен быть пустым.");
int minAbs = Math.Abs(array[0]);
for (int i = 1; i < array.Length; i++)
{
int absValue = Math.Abs(array[i]);
if (absValue < minAbs)
minAbs = absValue;
}
return minAbs;
}
static int SumOfModAfterFirstZero(int[] array)
{
if (array == null array.Length == 0)
throw new ArgumentException("Массив не должен быть пустым.");
bool foundZero = false;
int sum = 0;
foreach (var num in array)
{
if (foundZero)
{
sum += Math.Abs(num);
}
if (num == 0)
{
foundZero = true;
}
}
if (!foundZero)
throw new InvalidOperationException("В массиве нет нулевых элементов.");
return sum;
}
}
XIV. В одномерном массиве, состоящем из n вещественных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- количество элементов массива, лежащих в диапазоне от 10 до 20;
- сумму элементов массива, расположенных после максимального элемента.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение количества и суммы оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Threading.Tasks;
class Program
{
static Random random = new Random();
static void Main(string[] args)
{
try
{
Console.WriteLine("Введите размер массива n:");
if (!int.TryParse(Console.ReadLine(), out int n) n <= 0)
{
throw new ArgumentException("Некорректный ввод. Ожидалось положительное целое число.");
}
double[] array = GenerateRandomArray(n);
Console.WriteLine("Элементы массива:");
PrintArray(array);
string filePath = "output.txt";
PrintArrayToFile(array, filePath);
Console.WriteLine($"Массив записан в файл {filePath}");
// Асинхронно находим количество элементов в диапазоне [10, 20]
Task<int> countTask = CountElementsInRangeAsync(array, 10, 20);
// Асинхронно находим сумму элементов после максимального значения
Task<double> sumTask = SumElementsAfterMaxAsync(array);
Task.WaitAll(countTask, sumTask);
Console.WriteLine($"Количество элементов в диапазоне [10, 20]: {countTask.Result}");
Console.WriteLine($"Сумма элементов после максимального значения: {sumTask.Result}");
Console.WriteLine("Работа программы завершена.");
}
catch (Exception ex)
{
Console.WriteLine($"Произошла ошибка: {ex.Message}");
}
}
static double[] GenerateRandomArray(int n)
{
double[] array = new double[n];
for (int i = 0; i < n; i++)
{
array[i] = random.NextDouble() * 100;
}
return array;
}
static void PrintArray(double[] array)
{
foreach (var element in array)
{
Console.Write($"{element:F2} ");
}
Console.WriteLine();
}
static void PrintArrayToFile(double[] array, string filePath)
{
using (StreamWriter writer = new StreamWriter(filePath))
{
foreach (var element in array)
{
writer.Write($"{element:F2} ");
}
}
}
static async Task<int> CountElementsInRangeAsync(double[] array, double min, double max)
{
await Task.Delay(100);
int count = 0;
foreach (var element in array)
{
if (element >= min && element <= max)
{
count++;
}
}
return count;
}
static async Task<double> SumElementsAfterMaxAsync(double[] array)
{
await Task.Delay(100);
double sum = 0;
if (array.Length == 0)
{
return sum;
}
// Находим индекс максимального элемента
int maxIndex = 0;
double max = array[0];
for (int i = 1; i < array.Length; i++)
{
if (array[i] > max)
{
max = array[i];
maxIndex = i;
}
}
// Считаем сумму элементов после максимального элемента
for (int i = maxIndex + 1; i < array.Length; i++)
{
sum += array[i];
}
return sum;
}
}
XV. В одномерном массиве, состоящем из n вещественных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- количество элементов массива, равных нулю;
- сумму элементов массива, расположенных после минимального элемента.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение количества и суммы оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main()
{
try
{
Console.WriteLine("Введите количество элементов массива:");
int n = int.Parse(Console.ReadLine());
double[] array = GenerateRandomArray(n);
PrintArray(array);
int zeroCount = CountZeros(array);
Console.WriteLine($"Количество элементов массива, равных нулю: {zeroCount}");
{
double[] array = new double[n];
for (int i = 0; i < n; i++)
{
array[i] = random.NextDouble() * 100;
}
return array;
}
static void PrintArray(double[] array)
{
foreach (var element in array)
{
Console.Write($"{element:F2} ");
}
Console.WriteLine();
}
static void PrintArrayToFile(double[] array, string filePath)
{
using (StreamWriter writer = new StreamWriter(filePath))
{
foreach (var element in array)
{
writer.Write($"{element:F2} ");
}
}
}
static async Task<int> CountElementsInRangeAsync(double[] array, double min, double max)
{
await Task.Delay(100);
int count = 0;
foreach (var element in array)
{
if (element >= min && element <= max)
{
count++;
}
}
return count;
}
static async Task<double> SumElementsAfterMaxAsync(double[] array)
{
await Task.Delay(100);
double sum = 0;
if (array.Length == 0)
{
return sum;
}
// Находим индекс максимального элемента
int maxIndex = 0;
double max = array[0];
for (int i = 1; i < array.Length; i++)
{
if (array[i] > max)
{
max = array[i];
maxIndex = i;
}
}
// Считаем сумму элементов после максимального элемента
for (int i = maxIndex + 1; i < array.Length; i++)
{
sum += array[i];
}
return sum;
}
}
XV. В одномерном массиве, состоящем из n вещественных элементов (предусмотреть ввод значения переменной n с клавиатуры), вычислить:
- количество элементов массива, равных нулю;
- сумму элементов массива, расположенных после минимального элемента.
Элементы массива сгенерировать случайным образом. Реализовать вывод элементов массива на консоль и в текстовый файл. Нахождение количества и суммы оформить в виде отдельных методов, выполняющихся в разных потоках. Результаты работы программы вывести на консоль и в текстовый файл. Реализовать обработку исключительных ситуаций, возникающих во время выполнения программы.
using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main()
{
try
{
Console.WriteLine("Введите количество элементов массива:");
int n = int.Parse(Console.ReadLine());
double[] array = GenerateRandomArray(n);
PrintArray(array);
int zeroCount = CountZeros(array);
Console.WriteLine($"Количество элементов массива, равных нулю: {zeroCount}");
Task<double> sumTask = Task.Run(() => SumAfterMinElement(array));
double sumAfterMin = sumTask.Result;
Console.WriteLine($"Сумма элементов массива после минимального элемента: {sumAfterMin}");
PrintResultsToFile(array, zeroCount, sumAfterMin);
Console.WriteLine("Результаты записаны в файл output.txt");
}
catch (FormatException)
{
Console.WriteLine("Ошибка: неверный формат ввода.");
}
catch (Exception ex)
{
Console.WriteLine($"Произошла ошибка: {ex.Message}");
}
}
static double[] GenerateRandomArray(int n)
{
Random rand = new Random();
double[] array = new double[n];
for (int i = 0; i < n; i++)
{
array[i] = rand.NextDouble() * 100 - 50;
}
return array;
}
static void PrintArray(double[] array)
{
Console.WriteLine("Элементы массива:");
foreach (var element in array)
{
Console.Write($"{element:F2} ");
}
Console.WriteLine();
}
static int CountZeros(double[] array)
{
int count = 0;
foreach (var element in array)
{
if (Math.Abs(element) < 1e-6) // учитываем погрешность для вещественных чисел
count++;
}
return count;
}
static double SumAfterMinElement(double[] array)
{
if (array.Length == 0)
return 0;
double minElement = array[0];
int minIndex = 0;
for (int i = 1; i < array.Length; i++)
{
if (array[i] < minElement)
{
minElement = array[i];
minIndex = i;
}
}
double sum = 0;
for (int i = minIndex + 1; i < array.Length; i++)
{
sum += array[i];
}
return sum;
}
static void PrintResultsToFile(double[] array, int zeroCount, double sumAfterMin)
{
using (StreamWriter writer = new StreamWriter("output.txt"))
{
writer.WriteLine("Элементы массива:");
foreach (var element in array)
{
writer.Write($"{element:F2} ");
}
writer.WriteLine();
writer.WriteLine($"Количество элементов массива, равных нулю: {zeroCount}");
writer.WriteLine($"Сумма элементов массива после минимального элемента: {sumAfterMin:F2}");
}
}
}
double sumAfterMin = sumTask.Result;
Console.WriteLine($"Сумма элементов массива после минимального элемента: {sumAfterMin}");
PrintResultsToFile(array, zeroCount, sumAfterMin);
Console.WriteLine("Результаты записаны в файл output.txt");
}
catch (FormatException)
{
Console.WriteLine("Ошибка: неверный формат ввода.");
}
catch (Exception ex)
{
Console.WriteLine($"Произошла ошибка: {ex.Message}");
}
}
static double[] GenerateRandomArray(int n)
{
Random rand = new Random();
double[] array = new double[n];
for (int i = 0; i < n; i++)
{
array[i] = rand.NextDouble() * 100 - 50;
}
return array;
}
static void PrintArray(double[] array)
{
Console.WriteLine("Элементы массива:");
foreach (var element in array)
{
Console.Write($"{element:F2} ");
}
Console.WriteLine();
}
static int CountZeros(double[] array)
{
int count = 0;
foreach (var element in array)
{
if (Math.Abs(element) < 1e-6) // учитываем погрешность для вещественных чисел
count++;
}
return count;
}
static double SumAfterMinElement(double[] array)
{
if (array.Length == 0)
return 0;
double minElement = array[0];
int minIndex = 0;
for (int i = 1; i < array.Length; i++)
{
if (array[i] < minElement)
{
minElement = array[i];
minIndex = i;
}
}
double sum = 0;
for (int i = minIndex + 1; i < array.Length; i++)
{
sum += array[i];
}
return sum;
}
static void PrintResultsToFile(double[] array, int zeroCount, double sumAfterMin)
{
using (StreamWriter writer = new StreamWriter("output.txt"))
{
writer.WriteLine("Элементы массива:");
foreach (var element in array)
{
writer.Write($"{element:F2} ");
}
writer.WriteLine($"Количество элементов массива, равных нулю: {zeroCount}");
writer.WriteLine($"Сумма элементов массива после минимального элемента: {sumAfterMin:F2}");
}
}
}