klb Napisano Listopad 10, 2009 Zgłoś Share Napisano Listopad 10, 2009 Mam do napisania program. Treść 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: * 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; * 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. a więc w skrócie: Program ma zliczać przecięcia zer (tj. gdy użytkownik poda pierwszą liczbę np. 1, a drugą np. -2, to mamy przecięcie - gdy liczba poprzednia i następna różnią się od siebie znakiem [2 i -5, 10 i -199 itp.]) 1)Mamy do wprowadzenia 99 liczb i ma to być podzielone na 5 grup (żeby wprowadzać po 20 liczb do jednej grupy, a nie wpisywać wszystkie 99 jednorazowo) 2) Gdy użytkownik poda 0 to nie ma być ono liczone jako podana liczba! Program ma pomiać 0 3) Liczby muszą być spełniać następujące warunki: -muszą być z przedziału od -10 do 10 bez zera UWAGA! Program nie ma być dokładnie taki jak w treści! Nie ma zliczać częstotliwości tylko liczbę tych przecięć! Nie trzeba liczyć częsttliwości Oto kod, który naskrobałem: #include <stdio.h> #define min -10 #define max 10 #define koniec 99 int main(void) { int a, b, ilosc, przeciecia, liczba; int iloczyn=a*b; printf("Program wylicza przeciecia zera\n"); printf("________________________________\n\n"); for (liczba=1; liczba<= 20;) { printf("Podaj %2d liczbe z przedzielu od -10 do 10 (bez zera) ", liczba); scanf("%d", &b); if(b==99) { printf("Podana liczba to 99\n\n"); if(liczba==20 && przeciecia>5 && przeciecia<8) printf("Liczba przeciec wynosi: %2d\n", przeciecia); else if(liczba<20) printf("Grupa liczb jest za mala. Podaj kolejne liczby\n"); else printf("Liczba przeciec nie spelnia wakunku\n"); } if(b>min && b!=0 && b<max) { liczba++; if(iloczyn<0) { przeciecia++; a=b; } if(ilosc==20) { if(przeciecia>5 && przeciecia<8) printf("Liczba przeciec wynosi %2d\n", przeciecia); else printf("Liczba przeciec nie spelnia warunku\n"); } else a=b; } } return (0); } Moje pytanie brzmi: dlaczego po zakończeniu wpisywania liczb przez użytkownika program kończy działanie, a nie pokazuje liczby przecięć? Z góry thx za pomoc, Pozdrawiam, klb Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Listopad 10, 2009 Zgłoś Share Napisano Listopad 10, 2009 breakpoint przy wejsciu w ify i zerknij co masz w zmiennych. Nie podales danych testowych dla ktorych to nie dziala, a nie mam pod reka kompilatora wiec ciezko stwierdzic co sie dzieje. Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
klb Napisano Listopad 10, 2009 Autor Zgłoś Share Napisano Listopad 10, 2009 Program prawidłowo odrzuca liczby nie należące do przedziału <-10,10>\{0} . Codzi o to, że po wprowadzeniu 20 liczb (czyli zakończeniu pętli) program nie podaje komunikatu o przecięciach zera tylko się wyłącza Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Listopad 10, 2009 Zgłoś Share Napisano Listopad 10, 2009 sproboj uruchomic z lini komend, moze po prostu program zamyka sie co powoduje znikniecie konsoli dlatego nie widzisz wynikow. Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
klb Napisano Listopad 10, 2009 Autor Zgłoś Share Napisano Listopad 10, 2009 Rzecz w tym, żę program się wyłącza coś musi być nie tak w kodzie. Kompilator nie pokazuje żadnych błędów Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Listopad 10, 2009 Zgłoś Share Napisano Listopad 10, 2009 no o tym przeciez mowie, uruchom skompilowany program z lini polecen.... Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
klb Napisano Listopad 10, 2009 Autor Zgłoś Share Napisano Listopad 10, 2009 Jakbyś mógł napisać jak uruchomić program z linii poleceń Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Listopad 11, 2009 Zgłoś Share Napisano Listopad 11, 2009 No dajesz Run (Menu start) wpisujesz cmd, przełazisz uzywając "cd" do odpowiedniego katalogu i uruchamiasz program. A jak to przeraża to daj na końcu programu wczytywanie jakiejś liczby to program poczeka aż ją podasz, wskazówka przed "return 0" Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
klb Napisano Listopad 11, 2009 Autor Zgłoś Share Napisano Listopad 11, 2009 Dobra Napisałem sobie kod od nowa i wszytsko ładnie śmiga Można powiedzieć, że pisałem kawałkami i sprawdzałem działanie Dzięki za pomoc Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.