Witam,
Potrzebowałbym pomocy w rozwiązaniu zadań
- Napisz program wielowątkowy z użyciem klasy Semaphore, który obsłuży model odprawy na lotnisku składający się z trzech etapów. W pierwszym z nich pasażerowie nadają bagaż rejestrowany i otrzymują kartę pokładową po przedstawieniu zakupionego biletu - na tym etapie dostępne są dwa stanowiska. Po odebraniu karty pokładowej pasażerowie mogą się udać na odprawę bezpieczeństwa, która stanowi kolejny etap odprawy przed odlotem. W celu zapewnienia sprawnej kontroli otwarto w sumie pęćc bramek. Po przejściu przez punkt kontrolny pasażerowie mogą się udać na pokład samolotu przez jedno z dwóch dostępnych wejść. W programie należy przyjąć, że na każdym stanowisku/bramce/wejściu pasażerowie obsługiwani pojedynczo. Należy również przyjąć, że nadawanie bagażu zajmuje 450ms, kontrola bezpieczeństwa 500ms, a wejście na pokład 250ms. Na rozważany lot samolotem bilety wykupiło 90 pasażerów. Działanie programu kończy się w momencie, gdy wszyscy pasażerowie znajdą się na pokładzie samolotu."
2 Napisz program z użyciem metod asynchronicznych (async). W jednej z metod należy znaleźć pary liczb bliźniaczych mniejszych od 1000 (liczby bliźniacze). Wyszukane przez program liczby należy zapisać do pliku CSV (każda para w osobnym wierszu). Na ekranie należy wypisać komunikat o tym, ze plik zapisano. W drugiej metodzie należy wczytać do tablicy od użytkownika 10 liczb całkowitych i wyznaczyć medianę. Następnie, jeśli n jest nieparzyste, medianą jest wartość obserwacji w środku. Jeśli natomiast n jest parzyste, wynikiem jest średnia arytmetyczna między dwiema środkowymi obserwacjami). Należy wypisać na ekranie obliczony wynik."
-
Wygeneruj 50 zbiorów liczb i zapisz je w dowolnej kolekcji .Każdy zbiór ma mieć 15000 liczb wygenerowanych losowo z zakresu 0-500. Wszystkie zbiory należy posortować i zapisać
w osobnych "plikach CSV mających w nazwach numer kolejny zbioru (czyli wynikiem będzie 50 plików z posortowanymi danymi). Zaimplementuj algorytm sortowania bąbelkowego.
W programie wykorzystaj pętlę równoległą Foreach z klasy Parallel. Przemyśl najpierw, co należy wykonywać równolegle , aby program działał wydajniej i był poprawny.
Po wykonanej pracy program ma wyświetlić na ekranie komunikat. -
Wykonaj test czasu wykonania obliczeń (dowolnych, dość złożonych) w dwóch wariantach: z użyciem pętli równoległej (For lub ForEach) oraz zwykłej pętli (for lub foreach). Szkic programu do testów:
int start = System.Environment.TickCount; -
Wykonaj test czasu wykonania 2 lub 3 obliczeń (dowolnych, dość złożonych) w dwóch wariantach: z użyciem metody Parallel.Invoke oraz sekwencyjnie.
Do zadania 1 mam taki kod
using System;
using System.Threading;
namespace Program1
{
public class Program
{
private static Semaphore sem;
public static void Main()
{
sem = new Semaphore(0, 5);
for (int i = 1; i <= 90; i++)
{
Thread t = new Thread(new ParameterizedThreadStart(Odprawa));
t.Start(i);
}
Thread.Sleep(450);
Console.WriteLine("Pasażerowie mogą się udać na odprawę bezpieczeństwa");
sem.Release(5);
Console.ReadKey();
}
private static void Odprawa(object num)
{
Console.WriteLine("Pasażer nr {0} nadał bagaż i otrzymał kartę pokładową", num);
sem.WaitOne();
Console.WriteLine("Kontrola bezpieczeństwa dla pasażera nr {0} ", num);
Thread.Sleep(500); // symulacja jakiejś "pracy"
Console.WriteLine("Pasażer nr {0} wszedl na pokład", num);
Thread.Sleep(250);
sem.Release();
Console.ReadKey();
}
}
}
Lecz kod i tak wykonuje źle kod i nie mogę dojść do tego dlaczego.
Do zadania 2 mam taki kod
using System;
public class Liczby
{
public static void liczby_blizniacze(int n)
{
bool[] l_blizn = new bool[n + 1];
for (int i = 0; i < n + 1; i++)
l_blizn[i] = true;
for (int i = 2; i <= n - 2; i++)
{
if (l_blizn[i] == true && l_blizn[i + 2] == true)
Console.WriteLine("Liczby blizniacze (" + i + ", " + (i + 2) + ")");
Console.WriteLine("Mediana (" + (i + 1) + ")");
}
}
public static void Main()
{
int n = 1000;
liczby_blizniacze(n);
}
}
Tutaj mam taki kod i według 2 osoby ten kod nie działa poprawnie z wymogami zadania. Nie wiem jak ruszyć to zadanie metodą wymaganą w zadaniu.
W przypadku 3 zadania nie mam pojęcia jak ruszyć z kodem i w 4 oraz 5 jakby ktoś miał jakieś pomysły co do kodu to będę wdzięczny.
Proszę o wyrozumiałość ;)