From dea4067621dfa17a8fd05bbe06173351f77b402e Mon Sep 17 00:00:00 2001 From: Arity-T Date: Tue, 3 Dec 2024 13:43:20 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20io?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lab1/io.cpp | 91 +++++++++++++++++++++++++++++++++++++++ lab1/io.h | 15 +++++++ lab1/lab1.cpp | 19 ++------ lab1/lab1.vcxproj | 4 ++ lab1/lab1.vcxproj.filters | 8 ++++ 5 files changed, 122 insertions(+), 15 deletions(-) create mode 100644 lab1/io.cpp create mode 100644 lab1/io.h diff --git a/lab1/io.cpp b/lab1/io.cpp new file mode 100644 index 0000000..c936d32 --- /dev/null +++ b/lab1/io.cpp @@ -0,0 +1,91 @@ +#include "io.h" + +void clearBuffer() { + while ((getchar()) != '\n'); +} + +char* inputString(int maxLen) +{ + char* result = new char[maxLen]; + + while (true) + { + + if (scanf_s("%[^\n]", result, maxLen) != 1) { + clearBuffer(); + printf(" ! %d . , .\n", maxLen - 1); + continue; + } + break; + } + clearBuffer(); + + return result; +} + + +int inputNumber(int minVal, int maxVal) +{ + int result; + while (true) + { + if (scanf("%d", &result) != 1) { + clearBuffer(); + printf(" ! , .\n"); + continue; + } + else if (result < minVal || result > maxVal) { + printf(" ! , %d %d.\n", minVal, maxVal); + continue; + } + break; + } + clearBuffer(); + + return result; +} + +int inputNumber(int minVal) +{ + int result; + while (true) + { + if (scanf("%d", &result) != 1) { + clearBuffer(); + printf(" ! , .\n"); + continue; + } + else if (result < minVal) { + printf(" ! , %d.\n", minVal); + continue; + } + break; + } + clearBuffer(); + + return result; +} + +bool userApprove() +{ + while (true) + { + char* userInput = inputString(4); + if (std::strcmp(userInput, "yes") == 0 || std::strcmp(userInput, "y") == 0) { + return true; + } + else if (std::strcmp(userInput, "no") == 0 || std::strcmp(userInput, "n") == 0) { + return false; + } + else { + printf(", yes (y) no (n).\n"); + } + } + + return false; +} + +void waitForEnter() +{ + while ((getchar()) != '\n'); +} \ No newline at end of file diff --git a/lab1/io.h b/lab1/io.h new file mode 100644 index 0000000..f3d32de --- /dev/null +++ b/lab1/io.h @@ -0,0 +1,15 @@ +#pragma once +#define _CRT_SECURE_NO_WARNINGS +#include + +void clearBuffer(); + +char* inputString(int maxLen); + +int inputNumber(int minVal, int maxVal); + +int inputNumber(int minVal); + +bool userApprove(); + +void waitForEnter(); diff --git a/lab1/lab1.cpp b/lab1/lab1.cpp index 57c3217..5e2b48a 100644 --- a/lab1/lab1.cpp +++ b/lab1/lab1.cpp @@ -1,20 +1,9 @@ -// lab1.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы. -// +#include +#include "io.h" -#include +using namespace std; int main() { std::cout << "Hello World!\n"; -} - -// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки" -// Отладка программы: F5 или меню "Отладка" > "Запустить отладку" - -// Советы по началу работы -// 1. В окне обозревателя решений можно добавлять файлы и управлять ими. -// 2. В окне Team Explorer можно подключиться к системе управления версиями. -// 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения. -// 4. В окне "Список ошибок" можно просматривать ошибки. -// 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода. -// 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл. +} \ No newline at end of file diff --git a/lab1/lab1.vcxproj b/lab1/lab1.vcxproj index 6b628f2..9d1e4c2 100644 --- a/lab1/lab1.vcxproj +++ b/lab1/lab1.vcxproj @@ -127,8 +127,12 @@ + + + + diff --git a/lab1/lab1.vcxproj.filters b/lab1/lab1.vcxproj.filters index b28bd20..19526f6 100644 --- a/lab1/lab1.vcxproj.filters +++ b/lab1/lab1.vcxproj.filters @@ -18,5 +18,13 @@ Исходные файлы + + Исходные файлы + + + + + Файлы заголовков + \ No newline at end of file