/**
* @file Laboratorna_1(3).cpp
* @author Разгільдєєва А.М, гр. 515і
* @date 15 лютого 2025
* @brief Лабораторна робота № 1, варіант 28
*
* Розгалуження та вибір. Завдання 3
*/
#include <stdio.h>
#include "building_info.h"
#include <locale.h>
int main() {
setlocale(LC_CTYPE, "ukr");
int apartmentNumber;
printf("Введiть номер квартири: ");
scanf("%d", &apartmentNumber);
if (!isValidApartmentNumber(apartmentNumber)) {
printf("Помилка: некоректний номер квартири!\n");
return 1;
}
int entrance = getEntranceNumber(apartmentNumber);
int floor = getFloorNumber(apartmentNumber);
int rooms = getRoomCount(apartmentNumber);
int balconies = getBalconyCount(apartmentNumber);
printf("Номер квартири: %d\n", apartmentNumber);
printf("Номер пiд'їзду: %d\n", entrance);
printf("Номер поверху: %d\n", floor);
printf("Кiлькiсть кiмнат: %d\n", rooms);
printf("Кiлькiсть балконiв/лоджiй: %d\n", balconies);
return 0;
}
#define APARTMENTS_PER_ENTRANCE 36 // Квартир у під'їзді
#define FLOORS_PER_ENTRANCE 9 // Поверхів у під'їзді
#define APARTMENTS_PER_FLOOR 4 // Квартир на поверсі
// Перевірка номера квартири
int isValidApartmentNumber(int apartmentNumber) {
return (apartmentNumber >= 1 && apartmentNumber <= APARTMENTS_PER_ENTRANCE * 9);
}
// Визначає номер під’їзду
int getEntranceNumber(int apartmentNumber) {
return (apartmentNumber - 1) / APARTMENTS_PER_ENTRANCE + 1;
}
// Визначає номер поверху
int getFloorNumber(int apartmentNumber) {
return ((apartmentNumber - 1) % APARTMENTS_PER_ENTRANCE) / APARTMENTS_PER_FLOOR + 1;
}
// Визначає кількість балконів
int getBalconyCount(int apartmentNumber) {
int apartmentIndex = (apartmentNumber - 1) % APARTMENTS_PER_FLOOR;
return (apartmentIndex == 3) ? 2 : 1;
}
// Визначає кількість кімнат
int getRoomCount(int apartmentNumber) {
return (getBalconyCount(apartmentNumber) == 2) ? 8 : 7;
}