Forum otwartych umysłów
Forum dla wszystkich i o wszystkim, a zwłaszcza dla tych co mają otwarty umysł.

| FAQ |  Szukaj |  Użytkownicy |  Grupy |  Mapa Google |
| Rejestracja |  Zaloguj |  Album |

Poprzedni temat «» Następny temat
ADA pomoc z programem
Autor Wiadomość
Jula 
Bobek


Znak zodiaku:
strzelec

Dołączyła: 10 Cze 2008
Posty: 1
Skąd: Warszawa
Wysłany: 2008-06-10, 13:35   ADA pomoc z programem

Witam

Muszę na sobotę napisać program - niestety brak czasu jak i umiejętności mnie "bardzo powstrzymuje"

Może ktoś z dobrych ludzi zlituje się i pomoże.

Treść programu to:
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.

Posiadam jeszcze "zarys" programu który trzeba zmodyfikować.

with Ada.text_IO; use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

procedure histogram is
k,n:integer;
begin
put("k="); get(k);
declare
task type licz is
entry numer(nr:integer);
entry przekaz(a,b: integer);
end licz;

P: array(1..k-1) of licz;

task body licz is
i: integer:=0;
liczba_n, liczba: integer;
begin
accept numer(nr: integer) do
i:=nr;
-- end numer;
a:=
b:=
loop
accept numer(x: integer) do
i:=nr;
end numer;
loop
accept przekaz(a,b:integer) do
liczba_n:=a;
liczba:=b;
end przekaz;
if liczba=0 then
put (liczba_n); put("mod"); put(k)
put("="); put(i); new_line;
else
-- przekazac do nastepnego zadania
end if;
end loop;
end licz;
put (--wydrukuj wynik
--przekaż -1 do procesu nastepnego
end licz;
begin --poczatek bloku
for i in 1..k-1 loop
P(i). numer(i);
end loop;
put("podaj ciag pomiarow, zakończ dane -1");
loop
get(n);
p(0).przekaz(n);
exit when n=-1;
end loop;
end;
end histogram;
 
 
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Nie możesz ściągać załączników na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group

Hosting zapewnia www.netlook.pl
Dyskutuj na Forum