Skip to content

Commit b7e484e

Browse files
authored
Add files via upload
1 parent d2e5862 commit b7e484e

3 files changed

Lines changed: 162 additions & 0 deletions

File tree

MultiThread.csproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>netcoreapp3.1</TargetFramework>
6+
</PropertyGroup>
7+
8+
</Project>

MultiThread.sln

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Version 16
4+
VisualStudioVersion = 16.0.29709.97
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MultiThread", "MultiThread.csproj", "{35029983-AA43-417F-B663-719A22BAF802}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
Debug|Any CPU = Debug|Any CPU
11+
Release|Any CPU = Release|Any CPU
12+
EndGlobalSection
13+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
14+
{35029983-AA43-417F-B663-719A22BAF802}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15+
{35029983-AA43-417F-B663-719A22BAF802}.Debug|Any CPU.Build.0 = Debug|Any CPU
16+
{35029983-AA43-417F-B663-719A22BAF802}.Release|Any CPU.ActiveCfg = Release|Any CPU
17+
{35029983-AA43-417F-B663-719A22BAF802}.Release|Any CPU.Build.0 = Release|Any CPU
18+
EndGlobalSection
19+
GlobalSection(SolutionProperties) = preSolution
20+
HideSolutionNode = FALSE
21+
EndGlobalSection
22+
GlobalSection(ExtensibilityGlobals) = postSolution
23+
SolutionGuid = {DDFC4C72-F076-48CF-AAEE-29C47DABAC34}
24+
EndGlobalSection
25+
EndGlobal

Program.cs

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
using System;
2+
using System.Threading;
3+
4+
namespace MultiThread
5+
{
6+
class Program
7+
{
8+
public static int M, N;
9+
public static int a, b, c, d;
10+
public static double Weight_a = 0.1, Weight_b = 0.2, Weight_c = 0.3, Weight_d = 0.4;
11+
public static double TotalWeight_a, TotalWeight_b, TotalWeight_c, TotalWeight_d;
12+
const int SizeTruck1 = 7000;
13+
const int SizeTruck2 = 5000;
14+
15+
static void Main()
16+
{
17+
Console.ForegroundColor = ConsoleColor.White;
18+
// предлагается пользователю осуществить ввод значения переменной
19+
Console.Write("Укажите объём сырья (не менее 100 едениц):");
20+
string userString = Console.ReadLine();
21+
M = Convert.ToInt32(userString);
22+
// если значение переменной выходит из указанного предела, то выбрасывается исключение
23+
if (M < 100)
24+
{
25+
throw new Exception("Необходимый объём сырья должен быть более 100 едениц.");
26+
}
27+
Console.ForegroundColor = ConsoleColor.White;
28+
// предлагается пользователю осуществить ввод значения переменной
29+
Console.Write("\nУкажите объём выпуска продукции в час (не менее 50 едениц):");
30+
string userString1 = Console.ReadLine();
31+
N = Convert.ToInt32(userString1);
32+
// если значение переменной выходит из указанного предела, то выбрасывается исключение
33+
if (N < 50)
34+
{
35+
throw new Exception("Максимальный объём выпуска продукции в час более 50 едениц");
36+
}
37+
a = N;
38+
b = Convert.ToInt32(1.1 * N);
39+
c = Convert.ToInt32(1.2 * N);
40+
d = Convert.ToInt32(1.3 * N);
41+
TotalWeight_a = a * Weight_a;
42+
TotalWeight_b = b * Weight_b;
43+
TotalWeight_c = c * Weight_c;
44+
TotalWeight_d = d * Weight_d;
45+
int Storage = M * (a + b + c + d);
46+
double Delivery = Convert.ToInt32(Storage * 95 / 100);
47+
double VoyageTruck1 = Convert.ToInt32(Delivery * 60 / 100 / SizeTruck1);
48+
double VoyageTruck2 = Convert.ToInt32(Delivery * 40 / 100 / SizeTruck2);
49+
double Truck1 = Convert.ToInt32(Delivery * 60 / 100);
50+
double Truck2 = Convert.ToInt32(Delivery * 40 / 100);
51+
double RawTruck1 = Convert.ToInt32((Delivery * 60 / 100) - (a + b));
52+
double RawTruck2 = Convert.ToInt32((Delivery * 40 / 100) - (c + d));
53+
// создаем первый поток и назначаем функцию - выпуск продукта_a
54+
Thread factory_a = new Thread(ReleaseProduct_a);
55+
// запускаем первый поток
56+
factory_a.Start();
57+
// Остановка потока на 1 секунду
58+
Thread.Sleep(TimeSpan.FromSeconds(1));
59+
for (int i = 1; i <= a; i++)
60+
{
61+
Console.Write(string.Format("a{0} ", i));
62+
}
63+
// создаем второй поток и назначаем функцию - выпуск продукта_b
64+
Thread factory_b = new Thread(ReleaseProduct_b);
65+
// запускаем второй поток
66+
factory_b.Start();
67+
// Остановка потока на 1 секунду
68+
Thread.Sleep(TimeSpan.FromSeconds(1));
69+
for (int i = 1; i <= b; i++)
70+
{
71+
Console.Write(string.Format("b{0} ", i));
72+
}
73+
// создаем третий поток и назначаем функцию - выпуск продукта_c
74+
Thread factory_c = new Thread(ReleaseProduct_c);
75+
// запускаем третий поток
76+
factory_c.Start();
77+
// Остановка потока на 1 секунду
78+
Thread.Sleep(TimeSpan.FromSeconds(1));
79+
for (int i = 1; i <= c; i++)
80+
{
81+
Console.Write(string.Format("c{0} ", i));
82+
}
83+
// создаем четвёртый поток и назначаем функцию - выпуск продукта_d
84+
Thread factory_d = new Thread(ReleaseProduct_d);
85+
// запускаем четвёртый поток
86+
factory_d.Start();
87+
// Остановка потока на 1 секунду
88+
Thread.Sleep(TimeSpan.FromSeconds(1));
89+
for (int i = 1; i <= d; i++)
90+
{
91+
Console.Write(string.Format("c{0} ", i));
92+
}
93+
Console.ForegroundColor = ConsoleColor.White;
94+
// далее выводятся расчётные данные по указанному условию задания
95+
Console.Write(string.Format("\n\nОбщая вместимость склада {0} едениц.", Storage));
96+
Console.Write(string.Format("\n\nПри заполнении склада на 95% - {0} едениц, производится вывоз со склада двумя грузовиками.", Delivery));
97+
Console.Write(string.Format("\n\nПервый грузовик (вместимостью 7000 едениц) выполнит {0} рейс(а)(ов). " +
98+
"\n\nПеревезёт {1} едениц, в том числе: продукт a-{2} ед., продукт b-{3} ед., сырья {4} ед.", VoyageTruck1, Truck1, a, b, RawTruck1));
99+
Console.Write(string.Format("\n\nВторой грузовик (вместимостью 5000 едениц) выполнит {0} рейс(а)(ов). " +
100+
"\n\nПеревезёт {1} едениц, в том числе: продукт c-{2} ед., продукт d-{3} ед., сырья {4} ед.", VoyageTruck2, Truck2, c, d, RawTruck2));
101+
}
102+
// функция потока a
103+
public static void ReleaseProduct_a()
104+
{
105+
Console.ForegroundColor = ConsoleColor.Cyan;
106+
Console.WriteLine(string.Format("\n\n\nЗавод A: Объём выпуска продукта a составляет {0} ед./час, а общий вес партии продукта составляет {1} кг.", a, TotalWeight_a));
107+
}
108+
// функция потока b
109+
public static void ReleaseProduct_b()
110+
{
111+
Console.ForegroundColor = ConsoleColor.Red;
112+
Console.WriteLine(string.Format("\n\n\nЗавод B: Объём выпуска продукта b составляет {0} ед./час, а общий вес партии продукта составляет {1} кг.", b, TotalWeight_b));
113+
}
114+
// функция потока c
115+
public static void ReleaseProduct_c()
116+
{
117+
Console.ForegroundColor = ConsoleColor.Green;
118+
Console.WriteLine(string.Format("\n\n\nЗавод C: Объём выпуска продукта c составляет {0} ед./час, а общий вес партии продукта составляет {1} кг.", c, TotalWeight_c));
119+
}
120+
// функция потока d
121+
public static void ReleaseProduct_d()
122+
{
123+
Console.ForegroundColor = ConsoleColor.DarkYellow;
124+
Console.WriteLine(string.Format("\n\n\nЗавод D: Объём выпуска продукта d составляет {0} ед./час, а общий вес партии продукта составляет {1} кг.", d, TotalWeight_d));
125+
Console.ReadLine();
126+
}
127+
}
128+
}
129+

0 commit comments

Comments
 (0)