/**
* @file 2Lab1No3.c
* @author Літвінов А.А, гр. 515-В
* @date 18 лютого 2022
* @brief Лабораторна робота No 1
*
* Розгалуження та вибір. Завдання 3 (21 Варіант)
*/
#include <stdio.h>
#include <locale.h>
#include "buildings.h"
int main()
{
setlocale(LC_ALL, "rus");
int apartment_num, floor, rooms, balc_log;
printf("Введите номер квартиры:");
scanf("%d", &apartment_num);
floor = floor_num(apartment_num);
if (floor == ERR)
{
printf("\nКвартиры с таким номером не существет");
return ERR;
}
printf("\nДанная квартира находится на %d-м этаже", floor);
rooms = rooms_count(apartment_num);
printf("\nВ данной квартире %d комнат", rooms);
balc_log = balc_log_count(apartment_num);
printf("\nВ данной квартире %d балконов/лоджий", balc_log);
}
#ifndef BUILDINGS_H
#define BUILDINGS_H
#define PUBLIC
#define PRIVATE static
#define ERR -1
PUBLIC int floor_num(int apartment_num);
PUBLIC int rooms_count(int apartment_num);
PUBLIC int balc_log_count(int apartment_num);
#endif
#include "buildings.h"
#define FIRST_APARTMENT 1
#define LAST_APARTMENT 140
//Функция для проверки корректонсти ввода номера квартиры
PRIVATE int apartment_check(int apartment_num)
{
return FIRST_APARTMENT <= apartment_num && apartment_num <= LAST_APARTMENT;
}
//Функция для нахождения этажа по номеру квартиры
PUBLIC int floor_num(int apartment_num)
{
if (apartment_check(apartment_num))
{
int floor;
for (int i = 1; i <= 14; i++)
{
if (apartment_num <= i * 10)
{
floor = i;
break;
}
}
return floor;
}
else return ERR;
}
//Функция для нахождения количества комнат в квартире по её номеру
PUBLIC int rooms_count(int apartment_num)
{
if (apartment_check(apartment_num))
{
int rooms_list[10] = { 7, 8, 7, 7, 8, 7, 8, 7, 7, 8 };
return rooms_list[(apartment_num - 1) % 10];
}
else return ERR;
}
//Функция для нахождения количества балконов/лоджий в квартире по её номеру
PUBLIC int balc_log_count(int apartment_num)
{
if (apartment_check(apartment_num))
{
int balc_log_list[10] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 };
return balc_log_list[(apartment_num - 1) % 10];
}
}