Naukowy.pl

Techniczne => Informatyka (IT) => Zadania => Wątek zaczęty przez: rumiany w Październik 27, 2007, 04:19:12 pm

Tytuł: [Informatyka] język C, "przecięcia zera"
Wiadomość wysłana przez: rumiany w Październik 27, 2007, 04:19:12 pm
Witam, bardzo prosiłbym o pomoc w napisaniu tego programu, albo chociaż algorytmu który do tego programu będzie mi potrzebny bo dopiero zaczynam naukę programowania i jestem jeszcze kompletnie zielony w tej dziedzinie a niestety muszę już napisać takie 'coś' podane poniżej .. z góry dziękuję za wszelką pomoc ; )

całe zadanie prezentuje się tak:

Wymagania wstępne

    * Zaproponować i zapisać kompletny algorytm pozwalający na realizację następującego zadania:

      Napisać program, który ma odczytywać sekwencję liczb całkowitych z terminala i wyliczać częstotliwość wystąpień przecięć zera we wczytywanym strumieniu wejściowym. Przecięcie zera następuje każdorazowo, gdy po wartości dodatniej następuje wartość ujemna lub po wartości ujemnej dodatnia (także, gdy między tymi wartościami pojawia się jedno lub więcej zer). W przypadku wykroczenia wyliczanej częstotliwości poza zadany przedział na wyjściu programu powinien pojawić się odpowiedni komunikat. W szczególności:
          a) pod uwagę mają być brane jedynie liczby z przedziału od -10 do 10 oraz liczba 99 oznaczająca koniec strumienia danych; pozostałe wartości są uznawane za niepoprawne i pomijane;
          b) częstotliwość ma być określana jako liczba wystąpień przecięcia zera w kolejnych grupach złożonych z 99 liczb - wartość częstotliwości spoza przedziału od 5 do 8 uznawana jest za niepoprawną i powoduje pojawienie się na wyjściu programu odpowiedniego komunikatu; w pozostałych przypadkach nie jest generowany żaden komunikat.

    * Wskazać warunek stopu algorytmu.

    * Zaproponować efektywny sposób przetestowania programu realizującego algorytm.

    * Zadeklarować stałe symboliczne mające sens w przypadku rozpatrywanego algorytmu zgodnie ze składnią języka ANSI C.

    * Zadeklarować zmienne potrzebne do implementacji algorytmu zgodnie ze składnią języka ANSI C.

Uwagi do wymagań wstępnych

W celu realizacji określonych powyżej wymagań wstępnych:

    * Przeanalizuj kompletność podanego zadania algorytmicznego. Ewentualnie uzupełnij jego specyfikację.
    * Zidentyfikuj wszystkie stałe, określone w treści zadania algorytmicznego.
    * Zidentyfikuj dane wejściowe i wyjściowe algorytmu.
    * W zbiorze danych wejściowych określ te, które są uznawane za poprawne.
    * Określ relację pomiędzy poprawnymi danymi wejściowymi a wyjściowymi (zobacz wskazówka 1 poniżej).
    * Zaproponuj strukturę danych niezbędną do rozwiązania problemu.
    * Zaproponuj algorytm rozwiązujący zadanie bez podziału danych wejściowych na grupy.
    * Zmodyfikuj zaproponowany algorytm tak, by uwzględniał konieczność podziału danych wejściowych na grupy (zobacz wskazówka 2). Zapisz ostateczną postać algorytmu za pomocą diagramu algorytmu.

Wskazówki

   1. Proszę zauważ, że do poprawnej identyfikacji faktu przecięcia zera potrzebne są jedynie dwie wartości i tyle tylko ze strumienia danych wejściowych należy zapamiętywać w programie - przecięcie następuje, jeśli te wartości są przeciwnych znaków.
   2. Zastanów się, co zaproponowany algorytm będzie robił, gdy przecięcie pojawi się na granicy pomiędzy kolejnymi grupami (np. ostatnia liczba w poprzedniej grupie dodatnia, pierwsza w następnej - ujemna) - takie przecięcie nie powinno zostać zaliczone do żadnej z grup.