/**
* @file FirstProject.cpp
* @autor Коваленко І. В. 515б
* @date 06.04.2023
* @brief Лабораторна робота №5, варіант 11
*
* Застосування вказівників. Завдання 1
*/
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include "Module.h"
int main(void) {
//підключення ключів
setlocale(LC_ALL, "Ukr");
//створення змінних
char serial_char[6 + 1];
int month, year, batch;
//введення розміру масиву
printf("Введіть серійний номер продукту (6 цифр): ");
//введення числа в типі чар
fgets(serial_char, sizeof(serial_char), stdin);
//виведення інформації на табло
if (corr_of_serial_num(serial_char, &month, &year, &batch) == 1) {
printf("\nСерійний номер вірний...\n"
"Оброблення данних...\n");
printf("\n\tМісяць виготовлення товару: ");
switch (month) {
case 1:
printf("січень\n");
break;
case 2:
printf("лютий\n");
break;
case 3:
printf("березень\n");
break;
case 4:
printf("квітень\n");
break;
case 5:
printf("травень\n");
break;
case 6:
printf("червень\n");
break;
case 7:
printf("липень\n");
break;
case 8:
printf("серпень\n");
break;
case 9:
printf("вересень\n");
break;
case 10:
printf("жовтень\n");
break;
case 11:
printf("листопад\n");
break;
case 12:
printf("грудень\n");
break;
default:
printf("Місяць не визначено.\n");
break;
}
year = 2000 + year;
printf("\tРік виготовлення товару: %i рік\n"
"\tІндекс вашего товар: %i\n\n"
, year, batch);
}
else { //якщо функція повернула 0
printf("\nНевірний тип данних.\n"
"Помилка. Завершення програми...\n");
}
//Завершення програми
printf("Завершення програми.");
return CORRECT_END;
}
#define PRIVATE static
#define PUBLIC
#define CORRECT_END 1
#define ERRORTYPE_END 0
/**
* Проверка серийного номера на корректность
*
* @param serial_char серийный номер
* @param month месяц выпуска
* @param year год выпуска
* @param batch номер продукта
* @return 1, если операция выполненна успешно
*/
int corr_of_serial_num(char* serial_char, int* month, int* year, int* batch);
#include <stdio.h>
#include <string.h>
#include "Module.h"
PUBLIC int corr_of_serial_num(char* serial_char, /*масив символів, для корректного вводу чисел з нулем*/
int* month, /*місяці*/
int* year, /*рік*/
int* batch) { /*партія*/
//якщо символів меньше ніж 6
if (strlen(serial_char) != 6)
return ERRORTYPE_END;
//створення масивів для підготовки данних, розбиваємо serial_char на три підмасива
char arrM[3] = "", arrY[3] = "", arrB[3]= "";
//копіювання даних із головного масива в темп масиви
strncpy(arrM, serial_char, 2); //місяць
strncpy(arrY, serial_char + 2, 2); //рік
strncpy(arrB, serial_char + 4, 2); //партія
//занесення данних в показники
sscanf(arrM, "%d", month);
sscanf(arrY, "%d", year);
sscanf(arrB, "%d", batch);
//перевірка корректності дипів данних
if ((*month > 0 && *month <= 12) && (*year >= 0 && *year <= 23)) {
printf("Серійний номер прочитан, та записан до реєстру.\n");
return CORRECT_END;
}
else {
printf("Серійний номер не прочитан. Помилка запису серійного номеру.\n");
return ERRORTYPE_END;
}
}