Сколько из прямоугольника можно вырезать квадратов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Работа ведется на языке Си в среде Visual Studio 2013 Дан прямоугольник со сторонами a,b. Сколько из такого прямоугольника можно вырезать квадратов, если известно что с каждым разом квадрат увеличивается (т. е. одинаковых быть не может). Количество квадратов вывести на консоль

Решение задачи: «Сколько из прямоугольника можно вырезать квадратов»

textual
Листинг программы
#include <stdio.h>
 
int main()
{
    int a, b, min1, max1, max2, min2, square, count;
    puts("Input the length and width of the rectangle:");
    do{
        if(2 == scanf("%d%d", &a, &b)) break;
        getchar();
        puts("Error input!Try again.");
    }while(1);
    min1 = a >= b ? b : a;
    max1 = min1 == a ? b : a;
    square = min1;
    while(max1 - square < square - 1)
        --square;
    count = square;
    while(count > 1){
        square = count;
        max2 = max1;
        min2 = min1;
        while(square > 0 && min2 >= 0){
            if(square == 1){
                printf("Quantity squares is %d\n", count);
                return 0;
            }
            if(max2 >= square){
                max2 -= square;
                --square;
            }
            else{
                min2 -= square + 1;
                if(min2 >= square){
                    max2 = max1;
                    max2 -= square;
                    --square;
                }
            }
        }
        --count;
    }
    return 0;
}

Объяснение кода листинга программы

  1. Программа запрашивает у пользователя ввод длины и ширины прямоугольника.
  2. Если пользователь вводит некорректные данные, программа выводит сообщение об ошибке и просит ввести данные заново.
  3. Переменная min1 получает минимальное значение из двух: длины прямоугольника или его ширины.
  4. Переменная max1 получает максимальное значение из двух: длины прямоугольника или его ширины.
  5. Переменная square инициализируется значением минимальной стороны прямоугольника.
  6. В цикле while происходит вычисление наибольшей стороны квадрата, который можно вырезать из прямоугольника.
  7. Переменная count инициализируется значением количества квадратов, которые можно вырезать из прямоугольника.
  8. В цикле while происходит вычисление количества квадратов, которые можно вырезать из прямоугольника.
  9. Если количество квадратов больше 1, то происходит смещение всех сторон на единицу.
  10. Цикл while повторяется до тех пор, пока количество квадратов больше 1.
  11. Выводится сообщение о количестве вырезанных квадратов.
  12. Программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5
Похожие ответы