Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Różnica przedziałów - zdanie

Ostatnio zmodyfikowano 2012-03-20 18:53
Autor Wiadomość
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:
C/C++
#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.
P-52956
jankowalski25
» 2012-03-19 21:31:33
» KursyKurs STC kurs
P-52960
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).
P-52971
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źć.
P-52976
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
P-52979
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.

C/C++
#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;
}
P-52980
« 1 »
  Strona 1 z 1