Форум программистов, компьютерный форум CyberForum.ru

Выясните, можно ли одну из коробок положить в другую - C++

Восстановить пароль Регистрация
 
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
21.04.2011, 21:17     Выясните, можно ли одну из коробок положить в другую #1
Коробки
(Время: 1 сек. Память: 16 Мб Сложность: 19%)

На столе лежат коробка размера A1 ? B1 ? C1 и коробка размера A2 ? B2 ? C2. Выясните можно ли одну из этих коробок положить в другую, если разрешены повороты коробок вокруг любого ребра на угол 90 градусов.
Входные данные

Первая строка входного файла содержит три целых числа A1, B1 и C1. Вторая строка входного файла содержит три целых числа A2, B2 и C2. Все числа положительны и не превосходят 1000.
Выходные данные

Если коробки одинаковы, выведите "Boxes are equal". Если первая коробка может быть положена во вторую, выведите "The first box is smaller than the second one". Если вторая коробка может быть положена в первую, выведите "The first box is larger than the second one". Иначе, выведите "Boxes are incomparable".
Примеры
INPUT.TXT
1) 1 2 3
3 2 1
2) 2 2 3
3 2 1
3) 2 2 3
3 2 3
4) 3 4 5
2 4 6
OUTPUT.TXT
1) Boxes are equal
2) The first box is larger than the second one
3) The first box is smaller than the second one
4) Boxes are incomparable
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
const int size = 3;
using namespace std;
int main() {
    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    int a[size], b[size], tempa = 0, tempb = 0;
    cin >> a[0] >> a[1] >> a[2]
    >> b[0] >> b[1] >> b[2];
    for(int i = 0; i < size; ++i) {  
        for(int j = size - 1; j > i; j--) {  
            if (a[j - 1] < a[j] ) { 
                tempa = a[j - 1]; 
                a[j - 1] = a[j]; 
                a[j] = tempa;  
            }
        }
    }
    for(int i = 0; i < size; ++i) {  
        for(int j = size - 1; j > i; j--) {  
            if (b[j - 1] < b[j] ) { 
                tempb = b[j - 1]; 
                b[j - 1] = b[j]; 
                b[j] = tempb;  
            }
        }
    }
    if((a[0] == b[0]) && (a[1] == b[1]) && (a[2] == b[2]))
        cout << "Boxes are equal";
    else
        if((a[0] <= b[0]) && (a[1] <= b[2]) && (a[2] <= b[2]))
            cout << "The first box is smaller than the second one";
        else
            if((a[0] >= b[0]) && (a[1] >= b[1]) && (a[2] >= b[2]))
                cout << "The first box is larger than the second one";
            else
                cout << "Boxes are incomparable";
    system("pause >> void");
    return 0;
}
На 6-тесте не проходит.
Я не понимаю, вроде бы все по логике...хотя ошибка есть.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
x1Mike7x
 Аватар для x1Mike7x
214 / 127 / 6
Регистрация: 06.11.2010
Сообщений: 234
21.04.2011, 22:35     Выясните, можно ли одну из коробок положить в другую #2
Если ты проверяешь просто стороны на больше-меньше ( все стороны 1 коробки больше/меньше сторон второй ), то это не правильно.
Вот пример на 2Д - аналогичная задача, но только в 2 измерениях:
Есть конверт и листок, заданы их ширина и длина.
Допустим есть конверт со сторонами 5 х 5 и листок со сторонами 6 х 1.
При простой проверке сторон окажется, что одна сторона листка больше, а другая меньше, вывод - не влезет.
Но можно ведь положить этот листок бумаги в конверт так, чтобы он лежал по диагонали конверта и листок полностью поместится.
От этого можно отталкиваться для решения задачи в 3Д.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
22.04.2011, 05:07     Выясните, можно ли одну из коробок положить в другую #3
x1Mike7x, внимательно читаем условие задачи.

Temirlan90, не все сдесь имеют понятие откуда взята эта задач, и что представляет из себя 6 тест. Могу только сказать, что прм проверке на неравенство нужно использовать строгое неравенство "<"">", а не "<="">=".

Добавлено через 14 минут
И в конце system("pause") убрать.
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
22.04.2011, 08:29  [ТС]     Выясните, можно ли одну из коробок положить в другую #4
kazak, system("pause"), Я убираю, иначе будет превышен лимит времени, Я про это знаю=)
А вот на счет строгого неравенства тогда во втором примере будет ошибка.
Я тоже не знаю что за 6 тест =).
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
22.04.2011, 09:07     Выясните, можно ли одну из коробок положить в другую #5
В противном случан проверка на равенство бессмысленна, тогда составители где-то напутали или с условием, или с примером. На каком сайте эта задача?
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
22.04.2011, 09:59  [ТС]     Выясните, можно ли одну из коробок положить в другую #6
[404]

Добавлено через 11 минут
Данный код прошел все тесты, Всем спасибо кто обратил на данную тему внимание =).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
const int size = 3;
using namespace std;
int main() {
    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    int a[size], b[size], tempa = 0, tempb = 0;
    cin >> a[0] >> a[1] >> a[2]
    >> b[0] >> b[1] >> b[2];
    for(int i = 0; i < size; ++i) {  
        for(int j = size - 1; j > i; j--) {  
            if (a[j - 1] < a[j] ) { 
                tempa = a[j - 1]; 
                a[j - 1] = a[j]; 
                a[j] = tempa;  
            }
        }
    }
    for(int i = 0; i < size; ++i) {  
        for(int j = size - 1; j > i; j--) {  
            if (b[j - 1] < b[j] ) { 
                tempb = b[j - 1]; 
                b[j - 1] = b[j]; 
                b[j] = tempb;  
            }
        }
    }
    if(a[0] > b[0])
        if(a[1] >= b[1])
            if(a[2] >= b[2])
                cout << "The first box is larger than the second one";
            else
                cout << "Boxes are incomparable";
        else
            cout << "Boxes are incomparable";
    else 
        if(a[0] < b[0])
            if(a[1] <= b[1])
                if(a[2] <= b[2])
                    cout << "The first box is smaller than the second one";
                else
                    cout << "Boxes are incomparable";
            else
                cout << "Boxes are incomparable";
        else
            if(a[1] > b[1])
                if(a[2] >= b[2])
                    cout << "The first box is larger than the second one";
                else
                    cout << "Boxes are incomparable";
            else
                if(a[1] < b[1])
                    if(a[2] <= b[2])
                        cout << "The first box is smaller than the second one";
                    else
                        cout << "Boxes are incomparable";
                else
                    if(a[2] > b[2])
                        cout << "The first box is larger than the second one";
                    else
                        if(a[2] < b[2])
                            cout << "The first box is smaller than the second one";
                        else
                            cout << "Boxes are equal";  
    system("pause >> void");
    return 0;
}
Yandex
Объявления
22.04.2011, 09:59     Выясните, можно ли одну из коробок положить в другую
Ответ Создать тему
Опции темы

Текущее время: 18:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru