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