Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/302: Рейтинг темы: голосов - 302, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 08.12.2015
Сообщений: 6

Можно ли разместить одну из коробок внутри другой?

08.12.2015, 02:19. Показов 64074. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему то не правильно работает, помогите!!!
вот условие:Есть две коробки, первая размером A1×B1×C1, вторая размером A2×B2×C2. Определите, можно ли разместить одну из этих коробок внутри другой, при условии, что поворачивать коробки можно только на 90 градусов вокруг ребер.
Формат входных данных
Программа получает на вход числа A1, B1, C1, A2, B2, C2.
Формат выходных данных
Программа должна вывести одну из следующих строчек:
Boxes are equal, если коробки одинаковые,
The first box is smaller than the second one, если первая коробка может быть положена во вторую,
The first box is larger than the second one, если вторая коробка может быть положена в первую,
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
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
68
69
70
71
72
73
74
75
76
77
78
#include "iostream"
using namespace std;
 
 
int main()
{
    int a1, a2, b1, b2, c1, c2, m, n, k, z, x, c;
    cin >> a1;
    cin >> b1;
    cin >> c1;
    cin >> a2;
    cin >> b2;
    cin >> c2;
    if ((a1 >= b1) && (a1 >= c1) && (b1 >= c1)) { m == a1; n == b1; k == c1; }
    else {
        if ((a1 >= b1) && (a1 >= c1) && (b1 <= c1)) {
            m = a1; n = c1; k = b1;
        }
    }
    if ((b1 >= a1) && (b1 >= c1) && (a1 >= c1)) {
        m = b1; n = a1; k = c1;
    }
    else {
        if ((b1 >= a1) && (b1 >= c1) && (c1 >= a1)) {
            m = b1; n = c1; k = a1;
        }
    }
    if ((c1 >= a1) && (c1 >= b1) && (b1 >= a1)) {
        m = c1; n = b1; k = a1;
    }
    else {
        if ((c1 >= a1) && (c1 >= b1) && (a1 >= b1)) {
            m = c1; n = a1; k = b1;
        }
    }
    if ((a2 >= b2) && (a2 >= c2) && (b2 >= c2)) { z = a2; x = b2; c = c2; }
    else {
        if ((a2 >= b2) && (a2 >= c2) && (b2 <= c2)) {
            z = a2; x = c2; c = b2;
        }
    }
    if ((b2 >= a2) && (b2 >= c2) && (a2 >= c2)) {
        z = b2; x = a2; c = c2;
    }
    else {
        if ((b2 >= a2) && (b2 >= c2) && (c2 >= a2)) {
            z = b2; x = c2; c = a2;
        }
    }
    if ((c2 >= a2) && (c2 >= b2) && (b2 >= a2)) {
        z = c2; x = b2; c = a2;
    }
    else {
        if ((c2 >= a2) && (c2 >= b2) && (a2 >= b2)) {
            z = c2; x = a2; c = b2;
        }
    }
    if ((m = z) && (n = x) && (k = c)) {
        cout << "Boxes are equal";
    }
    else {
 
        if ((m > z) && (n > x) && (k > c)) {
            cout << "The first box is larger than the second one";
        }
        else {
            if ((m < z) && (n < x) && (k < c)) {
                cout << "The first box is smaller than the second one";
            }
            else {
                cout << "Boxes are incomparable";
            }
        }
    }
    system("pause");
 
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.12.2015, 02:19
Ответы с готовыми решениями:

Выясните, можно ли одну из коробок положить в другую
#include &lt;iostream&gt; const int size = 3; using namespace std; int main() { //freopen(&quot;input.txt&quot;,&quot;r&quot;,stdin); ...

Можно ли разместить одну из коробок внутри другой
Помоги, пожалуйста! Ввести с клавиатуры размеры 2-х коробок (A1×B1×C1 и A2×B2×C2). Вывести на экран, можно ли разместить одну из этих...

Определить, можно ли разместить одну из коробок внутри другой?
Есть две коробки, первая размером A₁×B₁×C₁, вторая размером A₂×B₂×C₂. Определите, можно ли разместить одну из этих коробок внутри другой,...

11
8 / 8 / 8
Регистрация: 11.09.2015
Сообщений: 38
08.12.2015, 08:58
Тяжело было в таком количестве условий разбираться...
Мой вариант:
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
#include <iostream>
 
using namespace std;
 
void swap(int &a, int &b){
    int c;
    c = a;
    a = b;
    b = c;
}
 
void sort(int &a, int &b, int &c){
    if (a > b) swap (a, b);
    if (b > c) swap (b, c);
    if (a > b) swap (a, b); 
}
 
int main(int argc, char** argv) {
    int a1, a2, b1, b2, c1, c2, t;
    
    cin >> a1;
    cin >> b1;
    cin >> c1;
    cin >> a2;
    cin >> b2;
    cin >> c2;
    
    sort(a1, b1, c1);
    sort(a2, b2, c2);
    
    if((a1 == a2) && (b1 == b2) && (c1 == c2)){
        cout << "Boxes are equal";
    } else if((a1 < a2) && (b1 < b2) && (c1 < c2)){
        cout << "The first box is smaller than the second one";
    } else if((a1 > a2) && (b1 > b2) && (c1 > c2)){
        cout << "The first box is larger than the second one";
    } else cout << "Boxes are incomparable";
    
    system("pause");
    
    return 0;
}
0
0 / 0 / 0
Регистрация: 08.12.2015
Сообщений: 6
08.12.2015, 21:56  [ТС]
Ваша программа тоже не работает корректно при вводе параметров: 2 2 3 и 3 2 1
0
8 / 8 / 8
Регистрация: 11.09.2015
Сообщений: 38
09.12.2015, 05:34
Запустил,проверил. Всё верно, ящики несовместимы.
---------------------
D:\Utils\Dev-Cpp\Projects\pr5>pr5
2 2 3
3 2 1
Boxes are incomparable
---------------------

Или, если один или два размера равны ящики можно вкладывать? Тогда нужно немного поправить код:
C++
1
2
3
4
5
6
7
if((a1 == a2) && (b1 == b2) && (c1 == c2)){
        cout << "Boxes are equal";
    } else if((a1 <= a2) && (b1 <= b2) && (c1 <= c2)){
        cout << "The first box is smaller than the second one";
    } else if((a1 => a2) && (b1 => b2) && (c1 => c2)){
        cout << "The first box is larger than the second one";
    } else cout << "Boxes are incomparable";
1
Dimension
595 / 463 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
09.12.2015, 12:10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <bits/stdc++.h>
using namespace std;
int main() {
    int a[3], b[3],c=0,f=0,s=0;
    cin >> a[0] >> a[1] >> a[2] >> b[0] >> b[1] >> b[2];
    sort(a, a + 3);
    sort(b, b + 3);
    for (int i = 0;i < 3;i++) {
        if (a[i] == b[i])c++;
        else if (a[i] > b[i])f++;
        else if (a[i] < b[i])s++;
    }
    if (c == 3)
        cout << "Boxes are equal";
    else if (!f&&s)
        cout << "The first box is smaller than the second one";
    else if (f&&!s)
        cout << "The first box is larger than the second one";
    else cout << "Boxes are incomparable";
    cin.get(), cin.get();
    return 0;
}
0
7 / 7 / 4
Регистрация: 08.01.2016
Сообщений: 50
23.02.2016, 13:42
Dimension, Алгоритм решения, сначала мы сортируем длины сторон коробок, чтобы потом их сравнить, но! Мне нужно выполнить всё это через оператор if, очень буду благодарен если хотя бы алгоритм напишите, код я уж сам как нибудь=)
0
21 / 21 / 20
Регистрация: 07.02.2016
Сообщений: 87
16.06.2016, 13:46
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
#include <iostream>
 
using namespace std;
 
int main() {
  // put your code here
  int a1=0,b1=0,c1=0,a2=0,b2=0,c2=0;
  cin >> a1 >> b1 >> c1 >> a2 >> b2 >> c2;      
  if ( a1 > b1 ) {
      int temp;
      temp = a1; 
      a1 = b1; 
      b1 = temp;
  }
  if ( a1 > c1 ) {
      int temp;
      temp = a1; 
      a1 = c1; 
      c1 = temp;  
  } 
  if ( b1 > c1 ) {
      int temp;
      temp = b1; 
      b1 = c1; 
      c1 = temp;  
  }
  if ( a2 > b2 ) {
      int temp;
      temp = a2; 
      a2 = b2; 
      b2 = temp;
  }
  if ( a2 > c2 ) {
      int temp;
      temp = a2; 
      a2 = c2; 
      c2 = temp;  
  } 
  if ( b2 > c2 ) {
      int temp;
      temp = b2; 
      b2 = c2; 
      c2 = temp;  
  }    
  
  if ((a1 == a2) && (b1 == b2) && (c1 == c2)) cout << "Boxes are equal";
  else if ((a1 <= a2) && (b1 <= b2) && (c1 <= c2)) cout <<"The first box is smaller than the second one"; 
  else if ((a1 >= a2) && (b1 >= b2) && (c1 >= c2)) cout <<"The first box is larger than the second one"; 
  else cout <<"Boxes are incomparable";   
      
  return 0;
}
0
0 / 0 / 0
Регистрация: 31.10.2016
Сообщений: 1
31.10.2016, 13:00
Возможно поможет мой код:
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
#include <iostream>
using namespace std;
int main() {
    int a[3], b[3], temp;
    cin >> a[0] >> a[1] >> a[2] >> b[0] >> b[1] >> b[2];
 
    for (int i = 0; i < 4; i++){
        if (a[i % 2] > a[(i % 2) + 1]){
            temp = a[(i % 2) + 1];
            a[(i % 2) + 1] = a[i % 2];
            a[i % 2] = temp;
        }
        if (b[i % 2] > b[(i % 2) + 1]){
            temp = b[(i % 2) + 1];
            b[(i % 2) + 1] = b[i % 2];
            b[i % 2] = temp;
        }
    }
 
    if (a[0] == b[0] && a[1] == b[1] && a[2] == b[2]){
        cout << "Boxes are equal";
        return 0;
    }
 
    if ((a[0] >= b[0] && a[1] >= b[1] && a[2] >= b[2])){ // Проверка на одинаковый размер выполнена выше, проблем не будет. Зато если будет различаться только 1 параметр, то возникнет глюк.
        cout << "The first box is larger than the second one";
        return 0;
    }
    if ((a[0] <= b[0] && a[1] <= b[1] && a[2] <= b[2])){
        cout << "The first box is smaller than the second one";
        return 0;
    }
    cout << "Boxes are incomparable";
 
    return 0;
}
0
1 / 1 / 0
Регистрация: 04.04.2017
Сообщений: 1
04.04.2017, 20:46
Оказывается, всё легко.

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
#include <iostream>
using namespace std;
int main() {
  int a,s,d,f,g,h;
    cin >> a >> s >> d >> f >> g >> h;
   if((a==h && s==g && d==f) || (a==h && s==f && d==g)){
        cout << "Boxes are equal";
    }
    else
    if((a==f && s==g && d==h)|| (a==f && s==h && d==g)){
        cout << "Boxes are equal";
    }
else
    if((a==g && s==h && d==f)|| (a==g && s==f && d==h)){
cout << "Boxes are equal";
    }
else
    if((a>=f && s>=g && d>=h) || (a>=f && s>=h && d>=g) || (a>=g && s>=f && d>=h) || (a>=g && s>=h && d>=f)){
    cout << "The first box is larger than the second one";
}
    else
    if((a>=h && s>=g && d>=f) || (a>=h && s>=f && d>=g)){
         cout << "The first box is larger than the second one";
}
else
        if((a<=f && s<=g && d<=h) || (a<=f && s<=h && d<=g) || (a<=g && s<=f && d<=h) || (a<=g && s<=h && d<f)){
    cout << "The first box is smaller than the second one";
}
    else
    if((a<=h && s<=g && d<f) || (a<=h && s<=f && d<=g)){
         cout << "The first box is smaller than the second one";
}
    else{
    cout << "Boxes are incomparable";
    }
    return 0;
}
1
5 / 5 / 0
Регистрация: 08.01.2019
Сообщений: 18
10.02.2019, 09:40
Вот короткий код, рабочий!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
int main() 
{
  int x,y,z,x1,y1,z1;
  cin >> x >> y >> z >> x1 >> y1 >> z1;
  
  if (x>y) swap(x,y);
  if (x>z) swap(x,z);
  if (y>z) swap(y,z);
  
  if (x1>y1) swap(x1,y1);
  if (x1>z1) swap(x1,z1);
  if (y1>z1) swap(y1,z1);
  
  if (x==x1 && y==y1 && z==z1) cout << "Boxes are equal";
  else if (x<=x1 && y<=y1 && z<=z1) cout << "The first box is smaller than the second one";
  else if (x>=x1 && y>=y1 && z>=z1) cout << "The first box is larger than the second one";
  else cout << "Boxes are incomparable";
  
  return 0;
}
2
0 / 0 / 0
Регистрация: 21.11.2018
Сообщений: 37
01.08.2019, 11:41
Цитата Сообщение от Zvonkov Посмотреть сообщение
Запустил,проверил. Всё верно, ящики несовместимы.
---------------------
D:\Utils\Dev-Cpp\Projects\pr5>pr5
2 2 3
3 2 1
Boxes are incomparable
---------------------

Или, если один или два размера равны ящики можно вкладывать? Тогда нужно немного поправить код:
C++
1
2
3
4
5
6
7
if((a1 == a2) && (b1 == b2) && (c1 == c2)){
        cout << "Boxes are equal";
    } else if((a1 <= a2) && (b1 <= b2) && (c1 <= c2)){
        cout << "The first box is smaller than the second one";
    } else if((a1 => a2) && (b1 => b2) && (c1 => c2)){
        cout << "The first box is larger than the second one";
    } else cout << "Boxes are incomparable";
Failed test #1. Wrong answer
Input:
1
2
3
3
2
1
Your output:
Boxes are incomparable
Correct output:
Boxes are equal
0
 Аватар для Dmitry Vin
3 / 3 / 0
Регистрация: 20.11.2019
Сообщений: 18
21.11.2019, 18:14
Вот, держите правильное решение задачи. Код составлен не так уж красиво, некоторые вещи повторяются, но сайт acmp . ru принял решение на ура, код успешно прошел все тесты.

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
68
69
70
71
72
73
#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std;
int main(){
    int x1, y1, z1, x2, y2, z2, max1=0, mid1=0, min1=0, max2=0, mid2=0, min2=0;
    scanf("%d %d %d %d %d %d", &x1, &y1, &z1, &x2, &y2, &z2);
    if(x1>=y1 && x1>=z1){
        max1 = x1;
        if(y1>=z1){
            mid1 = y1;
            min1 = z1;
        }else{
            mid1 = z1;
            min1 = y1;
        }
    }else if(y1>=z1 && y1>=z1){
        max1 = y1;
        if(x1>=z1){
            mid1 = x1;
            min1 = z1;
        }else{
            mid1 = z1;
            min1 = x1;
        }
    }else{
        max1 = z1;
        if(x1>=y1){
            mid1 = x1;
            min1 = y1;
        }else{
            mid1 = y1;
            min1 = x1;
        }
    }
    if(x2>=y2 && x2>=z2){
        max2 = x2;
        if(y2>=z2){
            mid2 = y2;
            min2 = z2;
        }else{
            mid2 = z2;
            min2 = y2;
        }
    }else if(y2>=z2 && y2>=z2){
        max2 = y2;
        if(x2>=z2){
            mid2 = x2;
            min2 = z2;
        }else{
            mid2 = z2;
            min2 = x2;
        }
    }else{
        max2 = z2;
        if(x2>=y2){
            mid2 = x2;
            min2 = y2;
        }else{
            mid2 = y2;
            min2 = x2;
        }
    }
    if(max1==max2 && mid1==mid2 && min1==min2){
        printf("Boxes are equal");
    }else if(max1>=max2 && mid1>=mid2 && min1>=min2){
        printf("The first box is larger than the second one");
    }else if(max1<=max2 && mid1<=mid2 && min1<=min2){
        printf("The first box is smaller than the second one");
    }else{
        printf("Boxes are incomparable");
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.11.2019, 18:14
Помогаю со студенческими работами здесь

Как расположить панели одну над другой, а не одну внутри другой?
Доброго времени суток. Столкнулся с такой проблемой. Есть 4 панели и они должны стоять ровно друг на друге. Но C# считает что они друг в...

Как разместить элементы в одну строку внутри col-md
Есть следующий код: &lt;div class=&quot;col-md-4&quot; style=&quot;width: auto; margin-left: auto; margin-right: auto; float: left&quot;&gt; ...

Открыть одну форму внутри другой
Всем доброе время суток. Пилю программку одну и не магу понять как в Form1 на половине формы внутри открыть Form2 и.т.д при нажатии на...

Отрисовать одну форму внутри другой
Всем доброго времени суток... Есть исходная форма, и есть форма с opengl... opengl форму нужно отрисовать внутри исходной... Делаю это так:...

Открыть одну форму внутри другой
Добрый вечер, наткнулся на видео где одну форму открываю внутри другой, автор видео вводит код Form1 mm = new Form1(); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru