Różnica przedziałów - zdanie
Ostatnio zmodyfikowano 2012-03-20 18:53
jkk1 Temat założony przez niniejszego użytkownika |
Różnica przedziałów - zdanie » 2012-03-19 20:59:32 Witam! Gdzieś robię błąd. Zadanie: Na prostej dane są dwa domknięte przedziały liczbowe <a; b> oraz <c; d>. Napisz program, który wyznaczy ich różnicę. Pierwszy wiersz wejścia zawiera liczby a i b z zakresu -100..100, wiersz drugi liczby c i d z tego samego zakresu. Wyjście zgodne z przykładem;
Dla danych wejściowych:
23 48 -13 83 poprawnym wynikiem jest:
zbior pusty Dla danych wejściowych:
-18 86 -55 -21 poprawnym wynikiem jest:
<-18;86> Dla danych wejściowych:
-74 88 -63 -48 poprawnym wynikiem jest:
<-74;-63)+(-48;88> |
Teoretycznie to co już stworzyłem działa według schematu, ale program sprawdzający na stronie szkoły daje 75% i wywala błąd wie1.in Błędna odpowiedź 0.000 wie2.in OK 0.000 wie3.in OK 0.000 wie4.in OK 0.000 Program: #include <iostream> #include <cstdio> #include <cstdlib> using namespace std; int a, b, c, d; int main() { cin >> a >> b; cin >> c >> d; if(( a >= c ) &&( b <= d ) ) cout << "zbior pusty" << endl; else { if(( a < c ) &&( b > d ) ) cout << "<" << a << ";" << c << ")+(" << d << ";" << b << ">" << endl; } if(( a > c ) &&( a > d ) &&( b > c ) &&( b > d ) ) cout << "<" << a << ";" << b << ">" << endl; else { if(( a < c ) &&( a < d ) &&( b < c ) &&( b < d ) ) cout << "<" << c << ";" << d << ">" << endl; } if(( a < c ) &&( a < d ) &&( b > c ) &&( b < d ) ) cout << "<" << a << ";" << c << ")" << endl; else { if(( a > c ) &&( a < d ) &&( b > c ) &&( b > d ) ) cout << "(" << d << ";" << b << ">" << endl; } if(( b == c ) &&( a < d ) ) cout << "<" << a << ";" << b << ")" << endl; else { if(( a == d ) &&( b > c ) ) cout << "(" << a << ";" << b << ">" << endl; } cin.ignore(); getchar(); return 0; } Nie jestem jeszcze śmigły w te klocki, proszę o pomoc. |
|
jankowalski25 |
» 2012-03-19 21:31:33 |
|
DejaVu |
» 2012-03-20 10:53:17 Napisz na karce warunki i postępuj wg nich. Jeżeli na kartce Twój pomysł będzie działał za każdym razem prawidłowo to i również w programie. Obecnie masz problem jak poprawnie napisać algorytm rozwiązujący to zadanie. Udzielenie pomocy w tym przypadku będzie oznaczało w praktyce rozwiązanie za Ciebie zadania (a wydaje mi się, że nie o to chodzi). |
|
jsc |
» 2012-03-20 17:52:48 @DejaVu A może wystarczy, że dasz wskazówkę jak ustalić kryteria przynależności punktu do zbioru wynikowego szukanego algorytmu, bo ja po pobieżnym spojrzeniu ja jakoś nie mogę ich znaleźć. |
|
DejaVu |
» 2012-03-20 18:22:14 No ale to jest matematyka :) 1. Znajdź część wspólną 2. Wytnij część wspólną ze zbioru pierwszego 3. Wypisz wynik |
|
jkk1 Temat założony przez niniejszego użytkownika |
» 2012-03-20 18:53:58 Dzięki DejaVu. Takiej pomocy oczekiwałem ;). Zadanie rozkminione, napisałem od nowa badając dokładnie warunki i poszło. #include <iostream> #include <cstdio> #include <cstdlib> using namespace std; int a, b, c, d; int main() { cin >> a >> b; cin >> c >> d; { if(( a > c ) &&( a < d ) &&( b > c ) &&( b < d ) ) cout << "zbior pusty" << endl; } { if(( a > c ) &&( a > d ) &&( b > c ) &&( b > d ) ) cout << "<" << a << ";" << b << ">" << endl; if(( a < c ) &&( a < d ) &&( b < c ) &&( b < d ) ) cout << "<" << a << ";" << b << ">" << endl; } { if(( a < c ) &&( a < d ) &&( b > c ) &&( b > d ) ) cout << "<" << a << ";" << c << ")+(" << d << ";" << b << ">" << endl; } cin.ignore(); getchar(); return 0; }
|
|
« 1 » |