Вопрос задан 19.06.2023 в 22:50. Предмет Информатика. Спрашивает Прус Виталий.

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

многопоточность. В целом задание творческое, поэтому не нужно писать, что каких-то данных не хватает. Чего не хватает - задаем своим решением. Язык программирования - си шарп.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Парамонов Александр.

Ответ:

C#

interface X

{

public void doThis(int user);

public void doLog(string message);

}

class OS:Thread, X

{

public OS( int user){

doThis(user);

}

public void doThis(int user){

doLog("Started:"+DateTime.Now.ToString());

doLog("Action:"+"doThis"+"with userID:"+user));

doLog("Finished:"+DateTime.Now.ToString());

}

public void doLog(string message);

Console.WriteLine(message);

}

public static void Main() {

Thread t = new Thread(new OS(1));

t.Start();

}

0

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

К сожалению, я не могу написать полный исходный код программы в одном ответе, но я могу предоставить вам основные шаги и структуру программы на C# для моделирования работы супермаркета с кассами, используя многопоточность.

```csharp using System; using System.Collections.Generic; using System.Threading;

class Program { static void Main() { // Создаем супермаркет Supermarket supermarket = new Supermarket();

// Создаем и запускаем потоки для касс Thread cashierThread1 = new Thread(() => RunCashier(supermarket, 1)); Thread cashierThread2 = new Thread(() => RunCashier(supermarket, 2));

cashierThread1.Start(); cashierThread2.Start();

// Запускаем поток для добавления покупателей в очередь Thread customerThread = new Thread(() => GenerateCustomers(supermarket)); customerThread.Start();

// Ждем завершения всех потоков cashierThread1.Join(); cashierThread2.Join(); customerThread.Join(); }

static void RunCashier(Supermarket supermarket, int cashierNumber) { while (true) { // Получаем покупателя из очереди Customer customer = supermarket.GetCustomer();

// Обслуживаем покупателя if (customer != null) { Console.WriteLine($"Cashier {cashierNumber} is serving customer {customer.Id}"); Thread.Sleep(2000); // Имитация времени обслуживания Console.WriteLine($"Cashier {cashierNumber} served customer {customer.Id}"); } } }

static void GenerateCustomers(Supermarket supermarket) { int customerId = 1;

while (true) { // Генерируем нового покупателя Customer customer = new Customer(customerId++); // Добавляем покупателя в очередь supermarket.EnqueueCustomer(customer);

// Пауза перед добавлением следующего покупателя Thread.Sleep(1000); } } }

class Supermarket { private Queue customerQueue = new Queue(); private object queueLock = new object();

public void EnqueueCustomer(Customer customer) { lock (queueLock) { customerQueue.Enqueue(customer); Console.WriteLine($"Customer {customer.Id} entered the supermarket."); } }

public Customer GetCustomer() { lock (queueLock) { if (customerQueue.Count > 0) { return customerQueue.Dequeue(); } return null; } } }

class Customer { public int Id { get; private set; }

public Customer(int id) { Id = id; } } ```

Этот пример демонстрирует базовую структуру программы, моделирующей работу супермаркета с двумя кассами. Возможно, вам придется расширить этот код в зависимости от ваших конкретных требований.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос