0 / 0 / 0
Регистрация: 26.09.2021
Сообщений: 31
1

Проверить, пройдет ли кирпич в отверстие

26.09.2021, 18:30. Показов 1759. Ответов 19
Метки нет (Все метки)

]Добрый вечер всем!!! НУжно написать программу, но не получается. Вот условие:Проверить, пройдет ли кирпич в прямой отверстие. Размеры кирпича — A, B, C
(длина, высота, ширина — задаются в произвольном порядке). Размеры отверстия W,
H (ширина, высота — задаются в произвольном порядке). Просовывать кирпич в
отверстие разрешается только так, чтобы каждое из его ребер было параллельно или
перпендикулярно каждой из сторон отверстия
Начал с импорта сканнера ввел переменные т.к нужно вводить произвольные. Вообщем, задача такова
проверить, можно ли через указанное отверстие просунуть кирпич(параллелепипед) с указанными размерами.
А и в данной программе не нужно использовать циклы
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2021, 18:30
Ответы с готовыми решениями:

Проверить, пройдет ли кирпич с ребрами a,b,c в отверстие размером x на y
Даны действительные положительные числа a,b,c,x,y.Проверить,пройдет ли кирпич с ребрами a,b,c в...

Пройдёт ли кирпич в отверстие
Даны положительные числа a, b, c, x, y. Выяснить, пройдёт ли кирпич с рёбрами a, b, c, в...

Пройдет ли кирпич в прямоугольное отверстие
Даны положительные числа a, b, c, x, y. Выяснить, пройдет ли кирпич с ребрами a, b, c в...

Пройдет ли кирпич в прямоугольное отверстие
З'ясувати, чи пройде цегла з ребрами A, B, C в прямокутний отвір зі сторонами x і y.

19
Модератор
Эксперт функциональных языков программированияЭксперт Python
32304 / 17890 / 3748
Регистрация: 12.02.2012
Сообщений: 30,046
Записей в блоге: 5
26.09.2021, 19:07 2
Как вариант:

Java
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
import java.util.Scanner;
 
public class Main
{
    public static Boolean checkBrick(int a, int b, int c, int w, int h)
    {
        return (a<=w && b <=h) || (b<=w && a<=h) || 
               (a<=w && c <=h) || (c<=w && a<=h) ||
               (c<=w && b <=h) || (b<=w && c<=h) ;
    }
    
    public static void main(String[] args) {
        
        int a,b,c,w,h;
        
        Scanner inp = new Scanner(System.in);
        
        System.out.println("Кирпич:");
        System.out.print("a="); a=inp.nextInt();
        System.out.print("b="); b=inp.nextInt();
        System.out.print("c="); c=inp.nextInt();
        
        System.out.println("Отверстие:");
        System.out.print("w="); w=inp.nextInt();
        System.out.print("h="); h=inp.nextInt();
        
        if (checkBrick(a,b,c,w,h))
           System.out.println("Проходит!");
        else
           System.out.println("Не проходит!");
        
    }
}
0
0 / 0 / 0
Регистрация: 26.09.2021
Сообщений: 31
26.09.2021, 23:13  [ТС] 3
А вот такое можно как-нибудь допилить:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.Scanner;
 
public class Main {
public static void main(String[]args) {
 
System.out.prinln(“Введите длину кирпича:»);
Scanner one = new Scanner(System.in);
int A= one.nextInt();
System.out.prinln(“Введите ширину кирпича:»);
Scanner two = new Scanner(System.in);
int B = two.nextInt();
System.out.prinln(“Введите высоту кирпича:»);
Scanner three = new Scanner(System.in);
int C= three.nextInt();
System.out.prinln(“Введите ширину отверствия :»);
Scanner ff= new Scanner(System.in);
int W = ff.nextInt();
System.out.prinln(“Введите высоту отверствия:»);
Scanner aa  = new Scanner(System.in);
int H= aa.nextInt();
  if(B==H & C==W){
System.out.println(“Пройдет»);
}else{
System.out.println(“Не пройдёт);
0
85 / 29 / 16
Регистрация: 01.06.2019
Сообщений: 608
27.09.2021, 00:52 4
Цитата Сообщение от Ivan77 Посмотреть сообщение
можно как-нибудь допилить
1.Сканер достаточно объявить один раз
2.Сделаем код более читабельным
3.Полная проверка кирпича
Java
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
 public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        System.out.print("Введите длину кирпича: ");
        int length = sc.nextInt(); 
        
        System.out.print("Введите ширину кирпича: ");
        int width = sc.nextInt(); 
        
        System.out.print("Введите высоту кирпича: ");
        int height = sc.nextInt(); 
        
        System.out.print("Введите ширину отверствия: ");
        int widthHole = sc.nextInt();
        
        System.out.print("Введите высоту отверствия: ");
        int heightHole = sc.nextInt();
        
        if((length <= widthHole && width <= heightHole) || (length <= widthHole &&  height <= heightHole) ||
           (height <= widthHole && width <= heightHole) || (width <= widthHole && length <= heightHole) ||
           (height <= widthHole && length <= heightHole) || (width <= widthHole && height <= heightHole))
        {
            System.out.println("Пройдет");
        }
        else
        {
            System.out.println("Не пройдёт");
        }
    }
0
0 / 0 / 0
Регистрация: 26.09.2021
Сообщений: 31
27.09.2021, 08:35  [ТС] 5
Данная программа выдает ошибку, не знаю где она но она есть. И программа для меня слишком странная.
Так как вы сравниваете длину с высотой, и длину с шириной, зачем?

Добавлено через 3 минуты
У данной программы ошибка на класс main. И для меня этот очень серьезная программа, и очень не понятная
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
32304 / 17890 / 3748
Регистрация: 12.02.2012
Сообщений: 30,046
Записей в блоге: 5
27.09.2021, 11:02 6
Ivan77, мой код проверен. Разберись.
0
Эксперт Java
3632 / 2966 / 916
Регистрация: 05.07.2013
Сообщений: 14,220
27.09.2021, 11:08 7
Цитата Сообщение от Ivan77 Посмотреть сообщение
Так как вы сравниваете длину с высотой, и длину с шириной, зачем?
потому что кирпич можно перевернуть, очевидно же
0
85 / 29 / 16
Регистрация: 01.06.2019
Сообщений: 608
27.09.2021, 11:14 8
Ivan77, в чем конкретно заключается ошибка? кирпич же можно еще и вращать
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
32304 / 17890 / 3748
Регистрация: 12.02.2012
Сообщений: 30,046
Записей в блоге: 5
27.09.2021, 15:03 9
xoraxax, BaLahmuT, нельзя. В условии оговорено.
0
Эксперт Java
3632 / 2966 / 916
Регистрация: 05.07.2013
Сообщений: 14,220
27.09.2021, 15:26 10
Цитата Сообщение от Catstail Посмотреть сообщение
нельзя. В условии оговорено.
Цитата Сообщение от Catstail Посмотреть сообщение
(a<=w && b <=h) || (b<=w && a<=h) ||
               (a<=w && c <=h) || (c<=w && a<=h) ||
               (c<=w && b <=h) || (b<=w && c<=h)
сам же проверяешь. Видимо, все-таки, можно. В условии кстати не оговорено
0
Йуный падаван
Эксперт PythonЭксперт Java
12258 / 6992 / 2257
Регистрация: 21.10.2017
Сообщений: 17,780
27.09.2021, 15:42 11
Цитата Сообщение от Catstail Посмотреть сообщение
нельзя. В условии оговорено.
Цитата Сообщение от Ivan77 Посмотреть сообщение
длина, высота, ширина — задаются в произвольном порядке
Эээээммм....
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
32304 / 17890 / 3748
Регистрация: 12.02.2012
Сообщений: 30,046
Записей в блоге: 5
27.09.2021, 15:49 12
xoraxax, я не о том! Я о вращении на угол, отличный от 90 градусов. Это уже геометрические тонкости.
0
Эксперт Java
3632 / 2966 / 916
Регистрация: 05.07.2013
Сообщений: 14,220
27.09.2021, 15:50 13
никто не говорил про углы - тс не понимает, что происходит
0
2279 / 1793 / 451
Регистрация: 17.02.2014
Сообщений: 8,847
27.09.2021, 17:46 14
у меня мысль проще возникла, проверять площади дырки и соответствующих граней параллелепипеда, если <= сразу сравнивать большие и меньшие стороны.
0
0 / 0 / 0
Регистрация: 26.09.2021
Сообщений: 31
06.10.2021, 18:50  [ТС] 15
А как применить прием связанный с упорядочиванием входных значений?
0
2279 / 1793 / 451
Регистрация: 17.02.2014
Сообщений: 8,847
07.10.2021, 10:16 16
Ivan77, в стиле ооп должно быть понятнее:
Java
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
public class Helper {
    public static void main(String[] args) {
        Brick standartBrick = new Brick(120, 250, 65);
        Side hol1 = new Side(119, 250);
        Side hol2 = new Side(65, 250);
        System.out.println(isBrickInTheHole(standartBrick, hol1));
        System.out.println(isBrickInTheHole(standartBrick, hol2));
    }
 
    public static boolean isBrickInTheHole(Brick brick, Side hol) {
        return brick.getFirstSide().isItPossibleFitThisSideToOther(hol) ||
               brick.getSecondSide().isItPossibleFitThisSideToOther(hol) ||
               brick.getThirdSide().isItPossibleFitThisSideToOther(hol);
    }
}
//###
// кирпич задаем в конструкторе его ребра
class Brick {
    int edgeA;
    int edgeB;
    int edgeC;
 
    public Brick(int edgeA, int edgeB, int edgeC) {
        this.edgeA = edgeA;
        this.edgeB = edgeB;
        this.edgeC = edgeC;
    }
 
    public Side getFirstSide() {return new Side(edgeA, edgeB);}
    public Side getSecondSide() {return new Side(edgeA, edgeC);}
    public Side getThirdSide() {return new Side(edgeB, edgeC);}
}
//###
//сторона поверхности кирпича или дырки
class Side {
    int w;
    int h;
 
    public Side(int w, int h) {
        this.w = w;
        this.h = h;
    }
 
    public int getArea() {return w * h;}
 
    // определяет можно ли эту сторону полностью вписать в другую, с учетом поворота на 90 град.
    public boolean isItPossibleFitThisSideToOther(Side otherSide){
        if (this.getArea() < otherSide.getArea()) return false;
        boolean firstComparison = this.w <= otherSide.w && this.h <= otherSide.h;
        boolean rotationComparison = this.w <= otherSide.h && this.h <= otherSide.w;
        return firstComparison || rotationComparison;
    }
}
0
1686 / 1011 / 656
Регистрация: 25.04.2016
Сообщений: 2,860
07.10.2021, 18:22 17
Кстати, а что если отверстие овальное? Судя по предложенным решениям, предполагается, что отверстие прямоугольное, однако в условии задачи это нигде не оговаривается
0
2279 / 1793 / 451
Регистрация: 17.02.2014
Сообщений: 8,847
07.10.2021, 18:27 18
Цитата Сообщение от stake-k26 Посмотреть сообщение
в условии задачи это нигде не оговаривается
читаем внимательно.
Цитата Сообщение от Ivan77 Посмотреть сообщение
Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия
0
1686 / 1011 / 656
Регистрация: 25.04.2016
Сообщений: 2,860
07.10.2021, 19:30 19
Aviz__, это условие говорит только о том, что крутить кирпич можно только на 90 градусов (или кратные) и никак иначе. Углы вроде 30, 127 или 253 не приветствуются. Однако о форме отверстия это условие не говорит вообще ничего.
1
iSmokeJC
07.10.2021, 20:01     Проверить, пройдет ли кирпич в отверстие
  #20

Не по теме:

Ага. Еще отверстие в резине или кирпич из поролона...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.10.2021, 20:01

Пройдет ли кирпич в прямоугольное отверстие
Даны действительные положительные числа а, b, с, х, у. Выяснить, пройдет ли кирпич с ребрами а, b,...

Определить, пройдет ли кирпич через отверстие
Заданы размера А и В прямоугольного отверстия и размеры x,y,z кирпича. Определить, пройдет ли...

Определить, пройдет ли кирпич через отверстие
Помогите решить!) Заданы размеры А, В прямоугольного отверстия и размеры X, Y, Z кирпича....

Определить пройдет ли кирпич в прямоугольное отверстие
1)Имеется прямоугольное отверстие со сторонами а и b и кирпич с ребрами х, у, z. Требуется...

Пройдет ли кирпич с заданными сторонами в отверстие
Здравствуйте, помогите решить задачу)) Пройдет ли кирпич со сторонами a, b и c через...

Определить, пройдет ли кирпич через отверстие
2. Заданы размеры A, B прямоугольного отверстия и размеры X, Y, Z кирпича. Определить, пройдет ли...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru