wiktorwektor85 Posted June 6, 2008 Report Share Posted June 6, 2008 Witam mam problem... muszę napisać programik w języku ADA GIDE mam zarys programu ale potrzebuję go dokończyć niestety nie jestem najlepszy w te klocki więc proszę o pomoc... Był bym niezmiernie wdzieczny.. Dziekuje z góry za wszelaką pomoc. oto treść zadania: Dany jest ciąg liczb, które stanowią wyniki pomiarów. Napisz program współbieżny wyznaczający histogram, tj. liczebność pomiarów w przedziałach <0,h), <h,2*h), ... <(n-1)*h, n*h) dla danych n i h. Jeden proces zliczający wyznacza liczebność dla jednego przedziału. Pomiarów nie wolno przechowywać w tablicy. Zadanie pierwsze otrzymuje liczby (wartości pomiarów) od zadania czytającego dane, zlicza i zatrzymuje te, które należą do jego przedziału, tzn. <0,h), a pozostałe liczby przesyła do zadania drugiego. Zadanie drugie zlicza i zatrzymuje swoje liczby, tzn. te z przedziału <h, 2*h>, a pozostałe przesyła do zadania trzeciego itd. Każde z zadań wyświetla swój wynik. Zadbaj o to, aby wyniki były wyświetlane we właściwej kolejności. Do synchronizacji procesów wykorzystaj spotkania. Zastosuj tablicę zadań. Uwaga: Przyjmij że sygnałem końca danych przesyłanych od jednego zadania do drugiego jest liczba -1. A tutaj jeszcze wkleję kod programu mniej więcej jest tam wyznaczone co i gdzie trzeba wstawić.. with Ada.text_IO; use Ada.Text_IO; with Ada.Integer_Text_IO; use Ada.Integer_Text_IO; with Ada.Float_Text_IO; use Ada.Float_Text_IO; procedure histogram is n:integer; h,dana:float; begin put("n="); get(n); --wczytaj h declare task type licz is entry numer(nr:integer); entry przekaz(x: integer); end licz; P: array(1..n) of licz; task body licz is L: integer:=0; liczba: integer; a,b:float; begin accept numer(nr: integer) do i:=nr; -- end numer; a:= b:= loop accept przekaz(x: integer) do liczba:=x; end przekaz; exit when liczba=-1; --jeśli liczba należy do przedział a..b to zwiększ licznik L o 1 -- w przeciwnym wypadku prześlij te liczbę do nastepnego procesu if liczba=a..b then L=n+1; else -- if liczba=0 then -- put (liczba_n); put("mod"); put(k) -- put("="); put(i); new_line; -- else -- end if; end loop; put (--wydrukuj wynik --przekaż -1 do procesu nastepnego end licz; begin --poczatek bloku for i in 1..n loop P(i). numer(i); end loop put("podaj ciag pomiarow, zakończ dane -1"); loop get(dana); p(1).przekaz(dana); exit when dana=-1; end loop; end; --koniec bloku end histogram; Link to comment Share on other sites More sharing options...
Toster Posted June 7, 2008 Report Share Posted June 7, 2008 Zapraszamy do dzialu ogloszenia, lub prosze zadac konkretne pytanie dotyczace konkretnego problemu. Always Dark<br /> Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.