Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- FILE* flog = fopen("log.txt", "at");
- char* ANSIUpperCase(char* s, char* S) { //русификация
- S = strcpy(S, s);
- char* ch = S;
- while (*ch) {
- if (*ch >= 'a' && *ch <= 'z' || *ch >= 'а' && *ch <= 'я') *ch = *ch - 32;
- if (*ch == 'ё') *ch = 'Ё';
- ch++;
- }
- return S;
- }
- void Correction(TInfo& info) { //коррекция размера
- if (info.size < 10) {
- info.size = 10;
- printf("Размер < 10; Была сделана корректировка\n");
- }
- if (info.size > 45) {
- info.size = 45;
- printf("Размер > 45; Была сделана корректировка\n");
- }
- }
- void FreeQueue(TQueue& queue)
- {
- while (!IsEmpty(queue))
- {
- TakeFromHead(queue);
- }
- fprintf(flog, "Очередь очищена\n\n");
- printf("Очередь очищена\n");
- }
- void Add(TQueue& queue)
- {
- TInfo info;
- char s[31];
- std::cin.ignore(sizeof(s), '\n');
- printf("\nВведите название: ");
- std::cin.getline(s, sizeof(s));
- strcpy(info.name, s);
- int a;
- bool flag = false;
- printf("Выберите тип:\n1 - Мужские; 2 - Женские; 3 - Детские\n");
- scanf("%d", &a);
- while (!flag)
- {
- switch (a)
- {
- case 1:
- strcpy(info.gender, "Мужские");
- flag = true;
- break;
- case 2:
- strcpy(info.gender, "Женские");
- flag = true;
- break;
- case 3:
- strcpy(info.gender, "Детские");
- flag = true;
- break;
- default:
- printf("Неверный тип\n");
- Add(queue);
- flag = true;
- break;
- }
- }
- flag = false;
- printf("Выберите сезон:\n1 - Зима; 2 - Весна; 3 - Лето; 4 - Осень\n");
- scanf("%d", &a);
- while (!flag)
- {
- switch (a)
- {
- case 1:
- strcpy(info.season, "Зима");
- flag = true;
- break;
- case 2:
- strcpy(info.season, "Весна");
- flag = true;
- break;
- case 3:
- strcpy(info.season, "Лето");
- flag = true;
- break;
- case 4:
- strcpy(info.season, "Осень");
- flag = true;
- break;
- default:
- printf("Неверный сезон\n");
- Add(queue);
- flag = true;
- break;
- }
- }
- flag = false;
- std::cin.ignore(sizeof(s), '\n');
- printf("Введите цвет: ");
- std::cin.getline(s, sizeof(s));
- strcpy(info.color, s);
- printf("Введите размер: ");
- scanf("%s", &s);
- info.size = atof(s);
- Correction(info); //корректировка размера
- printf("Введите цену: ");
- scanf("%s", &s);
- info.price = atof(s);
- AddToTail(queue, info);
- Print(queue, flog);
- }
- void DeleteN(int N, TQueue& queue)
- {
- int i = 0;
- while ((!IsEmpty(queue)) && (i < N))
- {
- TakeFromHead(queue);
- i++;
- }
- fprintf(flog, "%d элементов удалено\n", N);
- printf("%d элементов удалено\n", N);
- Print(queue, flog);
- }
- void Solution(TQueue& queue)
- {
- char tmp[16] = "";
- int k = 0;
- TInfo a;
- TQueue buffer;
- InitializeQueue(buffer);
- while (!IsEmpty(queue))
- {
- a = TakeFromHead(queue);
- if ((strcmp(a.gender, "Детские") == 0) && (strcmp(a.season, "Лето") == 0))
- {
- k++;
- printf("%s %s %s %s %5d %8d\n", a.name, a.gender, a.season, a.color, a.size, a.price);
- fprintf(flog, "%31s%31s%31s%31s%5d%8d\n", a.name, a.gender, a.season, a.color, a.size, a.price);
- AddToTail(buffer, a);
- }
- }
- while (!IsEmpty(buffer))
- {
- AddToTail(queue, *&TakeFromHead(buffer));
- }
- fprintf(flog, "Оставшиеся элементы\n");
- Print(queue, flog);
- }
- void Input(const char* name, TQueue& queue)
- {
- FILE* f = fopen(name, "rt"); // открытие текстового файла для чтения
- while (!feof(f)) {
- TInfo info = { "", "", "", "", 0, 0 };
- char s[31] = "";
- fscanf(f, "%s", info.name);
- if (strcmp(info.name, "**") == 0)
- break;
- fscanf(f, "%s", info.gender);
- fscanf(f, "%s", info.season);
- fscanf(f, "%s", info.color);
- fscanf(f, "%s", &s); // ввод размера продукта
- info.size = atoi(s);
- Correction(info);
- fscanf(f, "%s", &s); // ввод цены товара
- info.price = atoi(s); // atoi(s) - конвертирует строку s в величину типа int
- AddToTail(queue, info);
- }
- fprintf(flog, "Элементы считаны\n");
- printf("Элементы считаны\n");
- Print(queue, flog);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement